+
+ if (s->uni_to_font != NULL)
+ DisposeUnicodeToTextInfo(&s->uni_to_font);
+ if (mac_gestalts.encvvers != 0 &&
+ UpgradeScriptInfoToTextEncoding(kTextScriptDontCare,
+ kTextLanguageDontCare,
+ kTextRegionDontCare, macfont,
+ &enc) == noErr &&
+ CreateUnicodeToTextInfoByEncoding(enc, &s->uni_to_font) == noErr) {
+ if (uni_to_font_fallback_upp == NULL)
+ uni_to_font_fallback_upp =
+ NewUnicodeToTextFallbackProc(&uni_to_font_fallback);
+ fbflags = kUnicodeFallbackCustomOnly;
+ if (mac_gestalts.uncvattr & kTECAddFallbackInterruptMask)
+ fbflags |= kUnicodeFallbackInterruptSafeMask;
+ if (SetFallbackUnicodeToText(s->uni_to_font,
+ uni_to_font_fallback_upp, fbflags, NULL) != noErr) {
+ DisposeUnicodeToTextInfo(&s->uni_to_font);
+ goto no_encv;
+ }
+ } else {
+ no_encv:
+ s->uni_to_font = NULL;
+ s->font_charset =
+ charset_from_macenc(FontToScript(s->fontnum),
+ GetScriptManagerVariable(smRegionCode),
+ mac_gestalts.sysvers, s->cfg.font);
+ }
+