iPhone / iPad: проблема со шрифтами для нелатинских языков - PullRequest
1 голос
/ 24 сентября 2010

У меня проблема с шрифтом в iphone / ipad

Все знают, что UILabel не может делать форматированный текст.

Так что я выбираю FrontLabel http://github.com/zynga/FontLabel/blob/master/README

Я думаю, что FrontLabel делает что-то вроде NSAttributedString и базовой текстовой фреймворк, а также, это довольно низкий уровень.Но в любом случае у меня есть проблема.

Если я хочу отобразить текст на смешанном языке, скажем, английский + китайский, и дать всей строке шрифт «ArialMT», тогда все китайские символы отображаются как маленькиеквадраты.

Я пытался, если я назначил шрифт «STHeitiTC-Light» для текста, без проблем, китайский и английский могут отображаться, потому что STHeitiTC-Light - это китайский шрифт в iphone / ipad.

Я думаю, что FrontLabel не может автоматически выбирать лучший шрифт для нелатинского текста, если данный шрифт не применяется.

Если я использую UILabel и назначаю его как «ArialMT», и позволяю ему отображать текстКитайский или японский, никаких проблем, верно?Я думаю, что Apple определяет шрифт для другого языка?

Пожалуйста, дайте мне несколько подсказок, как мне решить эту проблему, если я хочу использовать FrontLabel?

Спасибо

1 Ответ

1 голос
/ 28 октября 2010

автор FontLabel здесь.

Вы правы, FontLabel не выполняет автоматический откат шрифта, если глиф не найден в выбранном шрифте.Реализация такого поведения выходила за рамки проекта, поскольку может быть довольно сложной.UILabel выполняет это, так как он использует WebKit для фактической визуализации текста, а WebKit поддерживает откат шрифтов.Я не уверен, если CoreText обеспечивает это или он ведет себя как FontLabel.В любом случае, если вам нужно несколько шрифтов в FontLabel, вы можете указать разные шрифты для разных диапазонов вашей ZAttributedString.К сожалению, нет простого способа определить, какие диапазоны необходимы, не проверяя вашу строку напрямую.Если вы знаете, что работаете только с английским и китайским языками, вы можете перебирать символы в вашей строке, чтобы определить, могут ли они быть английскими или китайскими символами, и использовать это для определения диапазонов, которым нужно назначить шрифты.Альтернативой может быть научить FontLabel выполнять резервирование шрифтов, но, как я уже говорил, это довольно сложно.

В качестве альтернативы, если вам удобно использовать 4.0 или выше на iPhone, вы можете попробовать использовать CoreText.Как я уже говорил ранее, я не уверен, что он делает резервный шрифт, но его стоит изучить.

...