2013-10-07 23 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