【问题标题】:How to make JTextField render supplementary characters如何使 JTextField 呈现补充字符
【发布时间】:2013-10-07 16:06:02
【问题描述】:

我尝试设置一些 JTextComponent 小部件(主要是 JTextField 组件)以输入 Unicode 文本。在此,我需要渲染僧伽罗语字符。我在我的所有
中设置了 Iskoola Pota 字体 这在大多数情况下都可以正常工作,但在某些时候会失败。

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

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。非常感谢任何形式的帮助。 提前谢谢你。

【问题讨论】:

  • 你们中没有一个字符使用代理,与补充字符无关。 Unicode 僧伽罗语范围是 U+0D80 – U+0DFF。显然问题是缺少 U+200D(零宽度连接器)。
  • 尊敬的先生,您能指导我如何以编程方式执行此操作吗?如果我手动注入了 ZERO WIDTH JOINER,它会在 JTextField 中正确呈现吗?或者我应该为特定的 JTextField 实现自定义文档或文本渲染器吗?请在这个问题上帮助我,我非常感谢你的帮助。提前致谢。
  • Machan mekata mokda kare?

标签: java swing unicode


【解决方案1】:

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

【讨论】:

  • 感谢您提供的提示,Try to see how layoutGlyphVector works with the triple chars 如您所说,但我如何使用 java 进行检查?请支持我,因为这将是一个巨大的帮助。再次感谢。
  • java.awt.Font 有 public GlyphVector layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags) 你可以获取矢量并绘制它以查看它是如何呈现的
猜你喜欢
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
相关资源
最近更新 更多