Есть ли шрифты с несколькими латинскими символами в одном и том же глифе? - PullRequest
0 голосов
/ 03 декабря 2018

У меня небольшой проект, в котором я пытаюсь локализовать японское программное обеспечение.К сожалению, для этого проекта я не могу изменить длину в байтах нескольких строк, и они жестко запрограммированы на использование UTF16, что означает, что один кандзи, который может представлять сложное слово, может быть заменен только одной латинской буквой.(В отличие от UTF8, где латинские буквы занимают меньше байтов.)

Однако шрифты, используемые программным обеспечением, можно свободно заменять.

Тогда одним из решений будет использование шрифта, которыйимеет глифы, содержащие несколько латинских символов.

Уже существует что-то подобное?

1 Ответ

0 голосов
/ 06 декабря 2018

Если вы можете использовать шрифт OpenType: используйте механизм GSUB, который является наиболее «естественным» (если это так) способом локализации через шрифт.Определяя каждую последовательность символов в вашей карте локализации как свое собственное правило подстановки, вы также избегаете проблем с наложением, возникающих при отображении PUA.

Во-первых, вы определяете свой шрифт с помощью обычного латинского набора символов, который вы хотите использовать.используйте, используя стандартный подтаблицу формата cmap 4 (эффективно: как и все современные шрифты), и затем вы определяете все пространство CJK как «поддерживаемое», используя формат 14 подтаблицы cmap, чтобы сказать, что «все кодовые точки между 2E80 и 10FFF0 поддерживаются, и сопоставить».до глифа 1 ".Теперь ваш шрифт «поддерживает» CJK, но на самом деле он не сможет «рисовать» CJK-текст.И это нормально:

затем вы определяете (много) GSUB многие-ко-многим лигатурным правилам вида:

...
消_す -> d_e_l_e_t_e
ヘ_ル_プ -> h_e_l_p
...

, так что происходит настоящее волшебство: без изменения что-нибудь в вашем реальном приложении, кроме смены шрифта, теперь вы получаете правильные английские (или любой другой язык) строки соответствия исключительно благодаря тому, что шрифт делает то, что должен делать: он видит, что ему нужно сформироватьстрока 消す, идет "Я поддерживаю все символы в этой строке", затем идет "У меня есть правило подстановки для этой точной комбинации кодовых точек" и затем идет "Я сформировал комбинацию для delete, вот она. "

Конечно, это может привести к локализации, когда ваш английский ярлык слишком широк, и вам все равно может понадобиться PUA, чтобы обойти это, и в этом случае вы в основном выполняете тот же трюк: выпишите свое слово вIllustrator / Inkscape / любой векторный редактор с хорошей поддержкой текста, импортируйте всю локализацию как один глиф, используя редактор шрифтов или сомчто-то вроде TTX , а затем настройте правило GSUB, которое указывает на этот отдельный глиф, а не на новую последовательность, используя правило GSUB «многие-к-одному»:

...
報告書 -> {glyph id for the "Generate report" glyph in PUA}
...

И это должно быть так: использование OpenType для достижения локализации, даже не касаясь «реального» кода (кроме кода, который вы пишете, для автоматизации процесса генерации шрифтов, конечно!)

И я настоятельно рекомендую присоединиться к https://typedrawers.com, чтобы попросить людей о реальной реализации и инструментальной помощи в этом - это почти тривиально в приложении, таком как Font Creator, это вряд ли много работы в чем-то вроде Font Forge, но типографские инструменты - то, где тусуются все инженеры типографии,и вы, скорее всего, получите более подробную помощь, чем Stackoverflow.

...