Нахождение UnicodeBlock для данной локали - PullRequest
1 голос
/ 27 августа 2011

В настоящее время я пытаюсь выяснить, как получить набор Character.UnicodeBlock для данной локали. Языки требуют разных символов от одного к другому.

То, чего я в точности пытаюсь добиться, - это иметь строку, содержащую каждый символ, необходимый для написания на определенном языке. Затем я могу использовать эту строку для предварительного вычисления набора текстур OpenGL из файла TrueTypeFont, чтобы я мог легко написать любой текст на любом языке.

Проповедовать каждый отдельный символ и иметь около 1000000 текстур, конечно, не вариант.

У кого-нибудь есть идея? Или кто-нибудь видит недостаток в этой процедуре?

1 Ответ

4 голосов
/ 28 августа 2011

Это не так просто. Текст на большинстве европейских языков часто может быть написан с помощью простого набора предварительно составленных символов Юникода, но для многих более сложных сценариев вам необходимо обрабатывать составные символы. Это начинается довольно легко с объединения акцентов для западных алфавитов, прогрессирует через арабские буквы, которые являются контекстно-зависимыми (они имеют различные формы в зависимости от того, являются ли они первым, последним или в середине слова), и заканчивается полным безумием, которое встречается во многих индийских скриптах.

Стандарт Unicode содержит главы о тонкостях, связанных с рендерингом различных скриптов, которые он может кодировать. Просто попробуйте, например, описание тибетского языка в начале 10-й главы, и если это вас не пугает, вернитесь к деванагари в 9-й главе. Вы быстро отбросите свое стремление «писать текст на любом языке». , Для этого требуется специальное программное обеспечение для рендеринга, написанное экспертами, хорошо знакомыми с соответствующими сценариями.

...