Английские символы не отображаются при вводе текста с помощью метода индикации в Swing

Я работаю над приложением, которое принимает текст на английском языке и выполняет транслитерацию с помощью пользовательского API стороннего производителя на индийский язык (один из нескольких поддерживаемых). Приложение ориентировано на Windows XP/7 и Ubuntu. Мы используем пользовательский метод ввода, который загружает необходимый шрифт Indic и использует его для визуализации текста. Кроме того, пользователь может исправить транслитерированный текст, введя текст на английском языке и нажав пробел (аналогично тому, как работает Google Transliterate).

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

Я использовал пакет шрифтов ttf-indic-fonts-0.5.0, который поставляется с Ubuntu, и смог заменить некоторые из них. Для других, если я скопирую соответствующий шрифт из Windows (я разрабатываю это на Windows 7), тогда все проблемы решены.

Однако мы не можем распространять шрифты Windows вместе с нашим приложением и хотим иметь открытую альтернативу.

Кроме попыток найти заменяющий шрифт, есть ли что-то, что мы делаем неправильно или нужно проверить, чтобы убедиться, что английские символы можно вводить в JTextField при использовании шрифта Indic?

Как пример - из упомянутого выше пакета Ubuntu шрифт lohit_pa.ttf для панджаби имеет эту проблему. Если я скопирую шрифт Windows по умолчанию для панджаби (raavi.ttf), то он работает нормально.

1 ответ

Решение

Я нашел решение проблемы. Я установил шрифты в Windows (откройте шрифт, нажмите "Установить") и просматривал содержимое, используя карту символов. Эти шрифты имеют только глифы для рассматриваемого языка, а не английский. Я использовал FontForge, чтобы объединить 2 шрифта. (Автор Fontforge больше не предоставляет двоичные файлы, но если у вас есть доступ к Ubuntu, вы можете установить его из репозитория. Не повезло, если у вас есть только Windows). После этого я снова могу печатать на английском.

Другие вопросы по тегам