Я ничего не знаю о бангали и не могу найти шрифт, который вы упомянули. Но мне удалось найти альтернативный шрифт для воссоздания проблемы: «Bengali-Progoty.TTF» (который, к сожалению, немного не похож на ваш). Вы можете получить шрифт здесь: Bengali-Progoty.TTF .
Эти гласные являются особыми в том смысле, что их ширина равна нулю, и я уверен, что их исходной точкой является правая верхняя точка, а не левая верхняя. Таким образом, гласные можно рисовать поверх других предшествующих им символов.
Когда дизайнер lwuit генерирует растровый шрифт, он рисует каждый символ (что я имею в виду, символ юникода) на большом растровом изображении, вычисляет ширину текущего символа, добавляет эту ширину к текущему смещению и рисует следующий символ. Поскольку гласный имеет нулевую ширину, он будет объединен в последний не гласный символ, предшествующий ему.
Чтобы решить эту проблему, вы можете либо переключиться на шрифт Unicode (Bangali имеет место в Unicode), либо вы можете придерживаться текущего шрифта и выполнить некоторые настройки в процессе генерации шрифта.
1 Создайте собственный класс, переопределяющий класс EditorFont
в редакторе lwuit.jar.
2 Переопределить EditorFont#getBitmapFont()
метод, сделайте свой собственный рисунок для каждого персонажа. Вы можете проверить, является ли какой-либо символ гласным, и если это так, нарисуйте его с предшествующим пробелом.
3 Переопределить задачу Ant FontTask
, предоставленную в редакторе lwuit.jar.
4 Переопределите метод FontTask#addToResources()
, вставьте собственный экземпляр EditorFont вместо исходного.
5 Переопределите класс LWUITTask, добавьте метод AddXXX
для поддержки переопределенного FontTask.
6 Создайте ресурс с помощью ant и используйте собственную версию LWUITTask и FontTask вместо исходной версии.
7 Поскольку гласные стали обычными символами, они будут занимать то же пространство, что и другие символы, и их больше нельзя будет рисовать поверх других символов. Вы должны нарисовать их поверх других персонажей вручную. Класс com.sun.lwuit.CustomFont
, возможно, придется переопределить, чтобы правильно рисовать эти гласные.
Учитывая введенную сложность, я настоятельно рекомендую перейти на шрифт Unicode. Но, как я уже сказал, я ничего не знаю о Bangali и не могу сказать, достаточно ли использовать шрифт Unicode. Может, тебе все-таки придется сделать это нелегко.
Удачи.