【问题标题】:How to use Character.UnicodeBlock while I set some strings in a JEditorpane在 JEditorpane 中设置一些字符串时如何使用 Character.UnicodeBlock
【发布时间】:2014-01-12 13:57:43
【问题描述】:

我需要显示一些孟加拉语字符。我尝试将字体设置为孟加拉语 Unicode 字体,但它无法正常工作。完成我的项目的最后希望是使用Character.UnicodeBlock。但我对此一无所知。真的有可能在 Java 中获得任何 Unicode 字符的实际显示吗?如何在组件中使用Character.UnicodeBlock

【问题讨论】:

  • Character.UnicodeBlock 与字体渲染无关;它仅用于识别代码点属于 Unicode 范围内的哪个位置。
  • 如需尽快获得更好的帮助,请发帖 MCVE。显然,用 Unicode 硬编码一个简短的孟加拉语短语供我们测试。
  • @Andrew Thompson : ইংৰাজী বৰ্ণমালাৰ আদ্যাক্ষৰ : 这是一个示例短语。它应该与浏览器中显示的一样。我在用 Kalpurush.ttf 会不会是字体的问题?
  • MCVE 是代码。请阅读链接的文档。

标签: java swing unicode jeditorpane


【解决方案1】:

我假设是 Java 7。

第一个需要 Unicode 字体。

如果此字体进入 Windows 字体,并且与现有字体没有名称冲突,则一切正常。

否则可能会将字体作为资源文件存储在应用程序中:

InputStream fontIn = getClass().getResourceAsStream("/.../... .ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, file);
GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font);

在此之后jEditorPane.setFont(font) 应该可以工作。请注意,JEditorPane 中的文本不应是 HTML,可能会设置自己的字体。

由于字体替换,使用名称进行字体解码很棘手。

另一个问题可能是 java 源代码中的硬编码字符串:java 源代码(编辑器)的编码必须与 javac 编译器使用的编码相同。对于国际项目,最好使用 UTF-8 (javac -encoding=UTF-8 ...)。要测试是否有问题,可以用"\u099C" 测试

【讨论】:

    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2012-07-20
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多