Сложное расположение текста в индийских скриптах
Я использую шрифты TrueType Unicode для телугу. Я хочу ввести последовательность символов Unicode в диапазоне, указанном для телугу, и использовать функции Java для отображения соответствующих букв. Какая часть Java обрабатывает разбиение последовательности на кластеры? Я считаю, что в Windows UNISCRIBE это делает. Я хотел бы знать, если Java имеет что-то похожее на это
sivachander
3 ответа
Если я правильно понимаю, вы ищете BreakIterator.getCharacterInstance.
Из документации:
Анализ границ символов позволяет пользователям взаимодействовать с символами так, как они ожидают, например, при перемещении курсора по текстовой строке. Анализ границ символов обеспечивает правильную навигацию по строкам символов независимо от того, как хранится символ. Возвращаемые границы могут быть границами дополнительных символов, комбинаций последовательностей символов или лигатурных кластеров. Например, акцентированный символ может быть сохранен как базовый символ и диакритический знак. То, что пользователи считают персонажем, может отличаться в зависимости от языка.
Java использует базовые библиотеки для своих процедур отображения, но если вы хотите более жесткий контроль над ними, у java-gnome есть привязки для Cairo и Pango.
Если вы не разрабатываете новый шрифт, вам не нужно знать, как java отображает глифы на основе кодовых точек юникода.
Где бы ни ожидалась строка, вы можете передать последовательность кодовых точек юникода, и java правильно их отобразит (гласные, согласные, диакритические знаки на согласных, смешивание согласных). вот пример
g.drawString("\u0C36\u0C3F\u0C35 \u0C1C\u0C3E\u0C38\u0C4D\u0C24\u0C3F", 75 100);