Я пытаюсь использовать ICU для компоновки сложных скриптов. У него есть пример в руководстве пользователя механизма компоновки (http://userguide.icu-project.org/layoutengine). Вроде бы все просто, но когда я начал тестировать его в примере кода, то застрял на создании LEFontInstance
.
В нем нет ничего для обслуживания определенных типов шрифтов (ttf/otf и т. д.). Они привели пример определения и использования шрифта ttf в PortableFontInstance
в letest.cpp
файле. Из всей этой информации я понял, что если мы хотим, например, выбрать конкретный шрифт по имени, мы должны написать новый класс, унаследованный от LEFontInstance
, и реализовать выбор шрифта самостоятельно.
Меня это очень расстраивает, так как я считаю, что известные форматы шрифтов и использование таблиц системных шрифтов должны быть включены в такую библиотеку, иначе мне, как пользователю, придется реализовывать все функции чтения и выбора шрифтов. Механизм компоновки может обрабатывать глифы после этого.
Стоит ли использовать ICU для компоновки сложных скриптов (поскольку SDK Windows и Apple обеспечивают достаточную поддержку шрифтов в таблице системных шрифтов)?
Какие усилия требуются, если я использую механизм компоновки ICU? (Я вижу, что мне придется самому обрабатывать все форматы шрифтов.)
Есть ли что-то еще, что мне здесь не хватает?