Как мне зарегистрировать шрифт только для английской версии? - PullRequest
0 голосов
/ 29 ноября 2009

Мой клиент дал мне собственный шрифт TTF только для английского языка. Поэтому я намерен загрузить этот TTF только для английского языка и для других языков, поэтому он должен использовать доступный системный шрифт.

Я делаю следующие шаги:

  1. Регистрация шрифтов в моем приложении. Копирую в папку Ресурсы и добавляю в мой проект.
  2. Загрузка шрифта с именем.

    NSMutableDictionary * aTitleAttributes = [[[NSMutableDictionary alloc] initWithObjectsAndKeys:
                   [NSFont fontWithName:CP_FONT_NAME size:[NSFont systemFontSize]], NSFontAttributeName,
                    aParagraphStyle, NSParagraphStyleAttributeName,
                                           nil] autorelease];
    

Но это приводит к другой проблеме, так как я загружаю шрифты таким образом для всех языков, мой текст локализации выглядит по-английски. Поэтому я думаю, что у меня должно быть какое-то условие, подобное

NSFont *font = nil;
If (currentLocaleIsEnglish()) {
/// font to load my custom TTF
}
Then use [NSFont fontwithName:font ...]

Так может кто-нибудь помочь мне понять, что я делаю правильно с регистрацией шрифта в App. Если так, как я могу зарегистрировать свой шрифт только для английской версии. Поскольку для других локалей этот шрифт недоступен, NSFont::fontWithName вернет nil и автоматически вернется к SystemFont, и, следовательно, моя локаль будет отображена правильно.

В противном случае у меня должно быть состояние, подобное тому, что я упомянул выше, что является грубым способом выполнения. Если так, как я могу написать такой API для поиска currentLocale Is English?

1 Ответ

1 голос
/ 29 ноября 2009

Получите текущий языковой стандарт из NSLocale , затем отправьте ему сообщение objectForKey: и запросите NSLocaleLanguageCode. Если текущий код языка en, en_US, en_GB, en_AU или en_CA, то текущим языком является некоторая форма английского языка.

Чтобы упростить тест, вы можете поместить языковые коды в массив или установить и протестировать членство текущего языкового кода в этой коллекции. Или, что еще лучше, поместите их в словарь в качестве ключей со значением для всех них CP_FONT_NAME; затем, если клиент позже предоставит другие шрифты для других языков, вы можете легко добавить эти новые пары шрифтов и языков.

...