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

时间:2010-04-20 11:56:20

标签: java-me lwuit

我一直在尝试使用孟加拉语的LWUIT开发一个简单的J2ME应用程序。然而,由于孟加拉语中元音大量使用元音,我在LWUIT面临一些问题。

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

有关详细信息,请在此处下载此文档(http://dibbaa.com/lwuit/doc/lwuit.doc)并查看现实生活中的示例。

如果有人可以帮我解决这个问题,我将不胜感激。只是让我知道如何以这样的方式设置LWUIT框架,以便在绘制它们时不按照连续顺序在字符集中定义的字母进行组合。 我在我的应用程序中使用了LWUIT 1.3版和字体“KarnaphuliP.ttf”。

由于

2 个答案:

答案 0 :(得分:2)

我对Bangali一无所知,我找不到你提到的字体。但我设法得到另一种字体来重新创建问题:“Bengali-Progoty.TTF”(不幸的是,它与你的有点相似)。您可以在此处获取字体:Bengali-Progoty.TTF

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

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

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

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

鉴于引入的复杂性,我强烈建议切换到unicode字体。但正如我所说,我对Bangali一无所知,也无法判断使用unicode字体是否足够。也许你必须以艰难的方式去做。

祝你好运。

答案 1 :(得分:0)

我认为您可能更好地实现自己的虚拟键盘。 LWUIT开发人员指南和演示中有一个示例。我相信如果你投入时间,它会在以后派上用场。