Это похоже на мой предыдущий вопрос , но это решение здесь не сработало.Как упоминалось в предыдущем вопросе, я работаю над кроссплатформенным приложением (Windows / Ubuntu), которое должно транслитерировать английский на один из нескольких официальных индийских языков.В приложении есть собственный метод ввода, и ввод текста на английском языке и нажатие пробела транслитерируют набранный текст на конкретный местный язык.Урду отличается от других тем, что он справа налево, как арабский / иврит.Мне удалось найти открытый лицензионный шрифт урду , в котором есть и английский, и урду, но когда я набираю символы на английском, ничего не появляется.
Я не понимаю, является ли это проблемой рисования шрифта или связано с методом ввода.До сих пор, если я отключаю пользовательский метод ввода (InputMethod.dispatchEvent()
) для этого языка, я могу видеть текст на английском языке (но, конечно, транслитерация не происходит).
Мои выводы:
- Изменить шрифт на один из встроенных арабских шрифтов Windows - тот же результат.
- Вместо использования
ComponentOrientation
чтобы выровнять текст в текстовом поле, я использовал setHorizontalAlignment
, когда языком является урду.Тот же результат. - Декомпилирован поставщик метода ввода JDK по умолчанию в Windows (
sun.awt.windows.WInputMethod
).Здесь я вижу, что dispatchEvent()
делает собственный вызов ОС для обработки IME.Я не могу сделать это здесь. - Найден специальный чат для иврита - моя версия
dispatchEvent()
по сути такая же. - Пошаговый код для
JTextField
в Eclipse - не удалось найти ничего в AbstractDocument
и подклассах.Метод AbstractDocument.insertUpdate()
проверяет и обновляет двунаправленный ввод текста, но ничего более значимого не было.
Я не могу понять, что происходит после вызова dispatchEvent()
.Символы регистрируются, т. Е. Механизм транслитерации может обнаруживать набранные символы и обрабатывать их, но они просто не отображаются на экране.
Обходной путь
Если я позволю ориентации текстового поля быть такой же, как для обычных языков слева направо, я смогу увидеть текст на английском языке.Однако это не будет приемлемо для пользователя, говорящего на урду.
Может кто-нибудь направить меня в правильном направлении?