【问题标题】:JTextPane renders the utf-8 text wrong in MacJTextPane 在 Mac 中呈现错误的 utf-8 文本
【发布时间】:2014-04-28 06:16:06
【问题描述】:

最近我刚刚测试了一个简单的 java 应用程序,它有一个 JTextPane 显示一些简单的 utf-8 html 内容。
在 Windows 和 Linux 下一切正常,在 Mac 中不简单。
我确定这不属于字体,因为所有组件都正确呈现相同的 ut8-8 数据,但 JTextPane 除外。(其他应用程序也没有这样的问题)
windows/linux中的文本渲染(正确):

Mac 中的文本渲染(不正确):

所以问题是,它是MAC中的一个错误吗? windows 和 mac JVM 是否使用相同的源代码和方法在 JTextPane 中呈现文本?

提前致谢。

【问题讨论】:

  • 您可以使用Q&A中显示的方法之一

标签: java macos swing utf-8 jtextpane


【解决方案1】:

字体可能有问题。用于表示逻辑字体的物理字体。

阅读herehere。简单来说,有逻辑字体(Monospaced 用于表示在DefaultStyledDocument 中没有定义字体的文本)由平台相关的物理字体表示。

尝试找出在您的情况下使用了哪种物理字体。也尝试通过setCharacterAttributes()设置另一种字体,看看表示是否改变。

【讨论】:

  • 非常感谢亲爱的,为什么我对 JTextArea 或 JTextBox 等其他组件没有任何问题?同样的字体也适用于其他应用程序。有什么工具可以将字体从windows转移到mac?
  • JTextArea/JLabel 默认使用不同的字体。只需获取您在 Mac 上的应用程序中使用的所有 physical 字体,并将它们作为编辑发布到您的问题中。在这里询问任何工具都是题外话,我怀疑这在常见情况下是可能的。一些字体可能有 Mac 和 Win 的表示,但其他没有
  • Stan:我觉得是连字渲染问题,提到了here
  • @trashgod 可能你是对的。我也遇到了类似的连字问题,通过更改字体来解决。绝对第一次尝试将是您的标志,但替代方法可能是更改字体。
  • @StanislavL 哥们,我尝试了垃圾桶提到的方法,但没有奏效。我只是测试了一些案例。当我安装字体并从 OS 字体上下文加载它时,我有不同的渲染,同样使用 Font#createFont() 加载字体,它也有不同的渲染。我刚刚将字体从 wi 机器复制到 mac,我应该转换它们还是做点什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 2012-06-13
相关资源
最近更新 更多