struct fontParams { uiDrawFontDescriptor desc; uint16_t featureTypes[maxFeatures]; uint16_t featureSelectors[maxFeatures]; size_t nFeatures; const char *language; }; // locale identifiers are specified as BCP 47: https://developer.apple.com/reference/corefoundation/cflocale?language=objc case uiAttributeLanguage: // LONGTERM FUTURE when we move to 10.9, switch to using kCTLanguageAttributeName ensureFontInRange(p, start, end); adjustFontInRange(p, start, end, ^(struct fontParams *fp) { fp->language = (const char *) (spec->Value); }); break; desc = fontdescAppendFeatures(desc, fp->featureTypes, fp->featureSelectors, fp->nFeatures, fp->language);