Java me 如何在手机中使用LWUIT显示拼合字母[孟加拉语]?

Java me 如何在手机中使用LWUIT显示拼合字母[孟加拉语]?,java-me,lwuit,Java Me,Lwuit,我一直在尝试用孟加拉语的LWUIT开发一个简单的J2ME应用程序。然而,由于孟加拉语中大量使用元音作为复合字母,我在使用LWUIT时遇到了一些问题 例如,让我们说,“X”是一个辅音字母,“@”在孟加拉语中用作元音;现在,当需要时,它们被组合在一起,成为一种组合格式“X@”。 使用LWUIT,当我添加这些元音并尝试在实际应用程序中将它们显示为辅音的联合格式时,它们与字符集中定义的前一个字母(以连续顺序)组合在一起。尽管有趣的是,在LWUIT designer显示/预览中,字符显示正确 有关详细信息

我一直在尝试用孟加拉语的LWUIT开发一个简单的J2ME应用程序。然而,由于孟加拉语中大量使用元音作为复合字母,我在使用LWUIT时遇到了一些问题

例如,让我们说,“X”是一个辅音字母,“@”在孟加拉语中用作元音;现在,当需要时,它们被组合在一起,成为一种组合格式“X@”。 使用LWUIT,当我添加这些元音并尝试在实际应用程序中将它们显示为辅音的联合格式时,它们与字符集中定义的前一个字母(以连续顺序)组合在一起。尽管有趣的是,在LWUIT designer显示/预览中,字符显示正确

有关详细信息,请在此处下载此文档()并查看实际示例

如果有人能在这方面帮助我,我将不胜感激。请让我知道如何设置LWIIT框架,使其在绘制时不会按照字符集中定义的连续顺序组合字母。 我在我的应用程序中使用了LWUIT 1.3版和字体“KarnaphuliP.ttf”


谢谢

我对孟加拉语一无所知,也找不到你提到的字体。但我设法找到了一种替代字体来重现这个问题:“Bengali Progoty.TTF”(不幸的是,它与您的字体一点也不相似)。您可以在此处获取字体:

这些元音很特别,因为它们的宽度是零,我打赌它们的原点是右上角,而不是左上角。这样,元音就可以画在前面的其他字符上

当lwuit designer生成位图字体时,它会将每个字符(我的意思是unicode字符)绘制到一个大位图上,计算当前字符的宽度,将该宽度添加到当前偏移量,然后绘制下一个字符。由于元音的宽度为零,它将被合并到它前面的最后一个非元音字符中

要解决此问题,您可以切换到unicode字体(孟加拉语在unicode中占有一席之地),也可以坚持使用当前字体并对字体生成过程进行一些自定义工作

1创建您自己的类,覆盖lwuit的editor.jar中的
EditorFont
类。
2Override
EditorFont#getBitmapFont()
method,自己绘制每个字符。您可以测试是否有任何字符是元音,如果是元音,请在前面画一个空格。
3覆盖lwuit的editor.jar中提供的
FontTask
Ant任务。
4覆盖
FontTask#addToResources()
方法,插入自己的EditorFont实例而不是原始实例。
5覆盖LWitTask类,添加一个
AddXXX
方法来支持覆盖的FontTask。
6使用ant构建资源,并使用您自己的LWitTask和FontTask版本,而不是原始版本。
7由于元音已成为常规字符,它们将占用与其他字符相同的空间,并且不能再在其他字符上绘制。您必须手动将它们绘制在其他字符的顶部。要正确绘制这些元音,可能必须重写
com.sun.lwuit.CustomFont

考虑到引入的复杂性,我强烈建议切换到unicode字体。但正如我所说,我对孟加拉语一无所知,也不知道使用unicode字体是否足够。也许你终究要用艰难的方式去做


祝您好运。

我认为您最好实现自己的虚拟键盘。LWUIT开发者指南和演示中有一个示例。我相信,如果你花时间在这方面,它将在以后派上用场。

我们不正式支持孟加拉语和阿拉伯语等语言的位图字体,因为这类语言的位图支持非常复杂。我建议您在使用这些语言时使用系统字体,这些字体可以在所有支持您的语言的设备上使用。