Как определить информацию о шрифте и макете для символа Юникод?
Я хочу отображать символы Unicode в приложении, и у меня есть приблизительное представление о том, как я могу это сделать для стандартных латинских символов с freetype. Однако, для других языков, которые имеют разные макеты и формы, я не уверен, как перейти от набора символов, которые я получаю в кодированной строке UTF-8 к:
Выбор подходящего шрифта для отображения символов
Подбор правильной раскладки для персонажей (LTR, RTL, TTB)
Содержатся ли эти данные в самих символах Юникода (я не уверен, как еще приложения, такие как веб-браузеры, могли бы выяснить, как отображать текст)?
Как определить точки 1 и 2 для данного символа Юникода? У Freetype есть отличная документация и довольно много говорится об использовании разных макетов, но я не представлял, как вы будете извлекать указанную информацию из самих персонажей.
Я также быстро взглянул на Harfbuzz, но не смог найти никакой документации. Существует пример, показывающий, как настроить и использовать Harfbuzz для разметки некоторых языков с помощью Freetype, отрисовывающего глифы, но пример явно передает информацию о разметке, шрифте и языке в Harfbuzz.
Что вы делаете, когда не знаете этих вещей заранее?
Это для мобильного приложения, и в идеале используемые библиотеки / решения должны иметь разрешительную лицензию.
1 ответ
Кодовая точка символа Unicode кодирует только сам символ; он не дает никакой информации относительно используемого шрифта, макета или чего-либо еще. Чтобы получить информацию о макете и т. Д., Unicode предоставляет несколько файлов, таких как UnicodeData.txt
, который вы можете скачать и использовать. Что касается шрифтов, каждый шрифт должен предоставлять файлы дескрипторов некоторого вида с такими вещами, как ширина, высота и глубина каждого символа; эти файлы также можно использовать для определения символов, поддерживаемых шрифтом.