freetype как обрабатывать (составлять) длинные строки сложных скриптов

Я использую freetype для рендеринга отдельных символов, я могу использовать некоторые дополнительные данные для создания длинных строк. Но для сложных сценариев таких языков, как хинди или тибетский, вам нужна продвинутая логика, которая соединит все эти нижние индексы, надстрочные индексы, сложные согласные и т. д. Как это должно быть обработано? Есть ли библиотека поверх freetype или внутри freetype есть функции, которые я не могу найти?


person exebook    schedule 20.01.2014    source источник


Ответы (1)


На самом деле запросить/рекомендовать библиотеки — это OT на SO, но я думаю, что единственный выбор с открытым исходным кодом — это Pango:

Pango — это библиотека для компоновки и рендеринга текста с упором на интернационализацию.

[...]

Pango включает в себя PangoLayout, высокоуровневый драйвер для компоновки целых блоков текста, а также подпрограммы, облегчающие редактирование интернационализированного текста.

См. галерею скриптов для выбора европейских и других скриптов, которые он может обрабатывать. см. хинди (деванагари) или тибетский, но весьма вероятно, что у него нет проблем ни с тем, ни с другим.

Pango использует Harfbuzz для обработки сложного текста. Вы можете попробовать и то, и другое и посмотреть, сколько работы потребуется, чтобы получить то, что вам нужно, используя только Harfbuzz, или пойти прямо в Pango и получить пакет «все включено». (Интересно, где провести разделительную линию в функциональности.)

К вашему сведению: часть расширенной логики, которой не хватает FreeType, может быть связана с обработкой позиционирования OpenType и заменой глифов. Создается впечатление, что разработчики FreeType сосредоточились главным образом на рисовании глифов (см. http://freetype.org/opentype/index.html), передал логистику Harfbuzz.

person Jongware    schedule 20.01.2014