Как определить информацию о шрифте и макете для символа Юникод?

Я хочу отображать символы Unicode в приложении, и у меня есть приблизительное представление о том, как я могу это сделать для стандартных латинских символов с freetype. Однако, для других языков, которые имеют разные макеты и формы, я не уверен, как перейти от набора символов, которые я получаю в кодированной строке UTF-8 к:

  1. Выбор подходящего шрифта для отображения символов

  2. Подбор правильной раскладки для персонажей (LTR, RTL, TTB)

Содержатся ли эти данные в самих символах Юникода (я не уверен, как еще приложения, такие как веб-браузеры, могли бы выяснить, как отображать текст)?

Как определить точки 1 и 2 для данного символа Юникода? У Freetype есть отличная документация и довольно много говорится об использовании разных макетов, но я не представлял, как вы будете извлекать указанную информацию из самих персонажей.

Я также быстро взглянул на Harfbuzz, но не смог найти никакой документации. Существует пример, показывающий, как настроить и использовать Harfbuzz для разметки некоторых языков с помощью Freetype, отрисовывающего глифы, но пример явно передает информацию о разметке, шрифте и языке в Harfbuzz.

Что вы делаете, когда не знаете этих вещей заранее?

Это для мобильного приложения, и в идеале используемые библиотеки / решения должны иметь разрешительную лицензию.

1 ответ

Решение

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

Другие вопросы по тегам