【发布时间】:2021-12-25 02:41:35
【问题描述】:
在每个 Windows 应用程序中,都可以轻松使用和显示任何字体的任何字符。
例如:在记事本中显示“አማርኛ”并使用 Comic Sans MS:
- 打开记事本
- 更改字体:格式 » 字体 » Comic Sans MS
- 粘贴文本:አማርኛ
显示“不寻常”字符非常有效 - 即使在这种网络公式中也是如此!
在 Java 和 Swing 中,这是一场噩梦,这只是显示:▯▯▯▯
旁注:
- 我使用 IntelliJ
- 源码文件使用utf8,完美显示测试字符串'አማርኛ'
代码示例:
Font ComicPln32 = new Font("Comic Sans MS", Font.PLAIN, 32);
Font ComicBld32 = new Font(ComicPln32.getName(), Font.BOLD, ComicPln32.getSize());
Border lineBorder = BorderFactory.createLineBorder(new Color(222, 49, 99), 2, true);
Border titleBorder = BorderFactory.createTitledBorder(lineBorder, "አማርኛ",
TitledBorder.LEFT, TitledBorder.TOP, BoldFont, Color.BLUE);
setBorder(titleBorder);
有没有简单的方法可以激励 Java 完成它的工作?
【问题讨论】:
-
你给出的代码示例中
BoldFont是如何初始化的? -
那个字体不能显示那个字符 ->
"አማርኛ".codePoints().mapToObj(ComicBld32::canDisplay).toList()(奇怪:如果我把那个文本复制到 Word 并将字体更改为 Comic Sana MS,它会更改为 Ebrima,不管我尝试什么) - 至少在我的系统上,该字体没有该代码点的字形:i.stack.imgur.com/zfB7C.png(在此处使用“Ebrima”) -
记事本很可能在骗你。 Comic Sans 不包含该角色。记事本正在使用其他字体来显示它。