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