2013-10-07 24 views
2

我试图设置一些JTextComponent小部件(主要是JTextField组件)以Unicode输入文本。在这里,我需要渲染僧伽罗人物。我在我所有的地方设置了Iskoola Pota字体
大多数情况下,这种方式很好,但在某些时候失败。如何使JTextField呈现补充字符

有一个或两个字符呈现正确的字符。

Ex: අම්මා, වයඹ, අධිකාරිය 

但是问题出现在有3个字符的字符中。

Ex: ප්‍රවෘත්ති (THIS IS RENDERED AS ප්රවෘත්ති) 
ව්‍යාපෘතිය (THIS IS RENDERED AS ව්යාපෘතිය) 

的物质是字符,如ප්‍ර is rendered as (ප්ර)ව්‍යා is rendered as (ව්යා)和。 截图如下。

图片在这里:http://i.stack.imgur.com/bQrQB.png 在这里,අම්මා,වයඹ,අධිකාරිය被正确渲染,但ප්රවෘත්ති和ව්යාපෘතිය字渲染不正确。

我已经更新了我的JDK版本和JRE。以下是NetBeans IDE中显示的版本详细信息。

Java: 1.7.0_40; Java HotSpot(TM) Client VM 24.0-b56 
Runtime: Java(TM) SE Runtime Environment 1.7.0_40-b43 
System: Windows 7 version 6.1 running on x86; Cp1252; en_US (nb) 

我不明白如何实现增补字符,并在我的计划代理对API jsr204。任何形式的帮助都非常感谢。 预先感谢您。

+0

您的任何角色都不使用代理,并且与补充字符无关。 Unicode僧伽罗范围是U + 0D80 - U + 0DFF。显然这个问题是缺少U + 200D(零宽度连接器)。 –

+0

亲爱的主席先生,你能指导我如何以编程方式做到这一点吗?如果我手动注入ZERO WIDTH JOINER,它会在JTextField中正确渲染吗?或者我应该为特定的JTextField实现自定义文档还是文本呈现器?请帮助我解决这个问题,我非常感谢你的帮助。提前致谢。 – isu3ru

回答

4

尝试查看layoutGlyphVector如何与三重字符一起使用。它是否提供正确的表示?如果是,您可以尝试按照此处所述设置自定义GlyphPainter http://java-sl.com/Scale_In_JEditorPane_GlyphPainter.html

+0

感谢您提供的提示,“试着看看layoutGlyphVector如何与三字符一起工作,但是我如何使用java来检查?请支持我,因为这将是一个巨大的帮助。再次感谢。 – isu3ru

+1

java.awt.Font has public GlyphVector layoutGlyphVector(FontRenderContext frc, char [] text, int start, int limit, int flags)您可以获取矢量并绘制它以查看它是如何呈现的 – StanislavL