Как визуализировать комбинированные символы Юникода в freetype? - PullRequest
1 голос
/ 03 апреля 2012

Я не могу найти какую-либо информацию об этом в документации, функция, которая используется все время - FT_Get_Char_Index (ftFace, i); и она принимает только 1 кодовую точку Юникода.Но как насчет комбинированных символов, которые занимают более одного кода?

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

Я занимаюсь созданием программного обеспечения для редактирования текста общего назначения и хотел бы, чтобы оно поддерживало весь Юникод.Но, может быть, эта проблема с символами с несколькими кодами настолько мала, что не стоит проблем?Разве такие символы не распространены в некоторых основных азиатских языках?

Если это невозможно сделать с помощью freetype, как это сделать?

1 Ответ

2 голосов
/ 29 апреля 2012

Если я правильно понимаю, вы не сможете делать то, что хотите, без дополнительного использования библиотеки макетов. Библиотека макетов использует дополнительную информацию в шрифтах OpenType для позиционирования комбинированных меток (среди прочего). Например, предположим, у вас есть последовательность U + 0041, U + 0301 (латинская заглавная буква A, знак сочетания острых символов). В общем, вы не можете просто соединить эти два вместе с их позицией по умолчанию в области визуализации, потому что метка Acute будет сталкиваться с формой «A».

Библиотека макетов будет анализировать таблицы макетов OpenType шрифта для этой последовательности и возвращать информацию о позиционировании, которую можно использовать для правильного позиционирования каждого элемента последовательности. Так, например, вы даете ему последовательность, она может сказать: «оставьте« А »там, где он есть; сдвиньте острые 50 единиц вправо и 90 единиц вверх» (это значительно сложнее, чем это, но, надеюсь, дает вам идею).

...