Извлечение информации о кернинге глифа C++
Вопрос
После моего предыдущего вопроса о кернинге глифов Uniscribe, и еще не получил ответа, плюс дальнейшее чтение в Google и т. д., похоже, Uniscribe может не поддерживать извлечение информации о кернинге глифов из шрифта.
Поэтому у меня есть простой дополнительный вопрос: есть ли хорошие примеры (желательно с некоторым кодом C++) извлечения информации о кернинге глифа для указанной строки из шрифта?
В разных местах упоминается, что Pango, QT или ICU способны это сделать, но документация на местах немного скудна, и я изо всех сил пытаюсь понять, с чего начать.
Любая помощь, указывающая мне в правильном направлении, с благодарностью принимается.У меня уже есть код для рендеринга глифов желаемым образом, мне просто нужна расширенная информация о кернинге, поэтому я могу расположить глифы немного лучше.
Спасибо,
Решение
Шрифты OpenType имеют два разных способа указания информации о кернинге, оба из которых являются необязательными:
Таблица Керна, унаследованная от TrueType.Эта таблица предоставляет информацию о паре кернинга (т.е.насколько вы должны смещать по горизонтали определенную пару символов).Microsoft предоставляет характеристики этого стола а также предоставляет некоторые функции Windows API, такие как
GetKerningPair()
иGetFontData()
это может помочь вам извлечь значения.Таблица GPOS, таблица OpenType, которая, очевидно, обрабатывает все мыслимые формы позиционирования глифов.У Microsoft также есть некоторые характеристики для этого стола, но, честно говоря, я даже не знаю, с чего начать...Вы, вероятно, захотите посмотреть, как отделение интенсивной терапии справляется с такими вещами.
Я не нашел много примеров кода для всего этого, хотя предполагаю, что получить значения кернинга из таблицы керна гораздо проще, чем из таблицы GPOS.