java - Swing - 如何将自定义字体添加到 JTextArea?

标签 java swing fonts jtextarea

我的工具主要是读取 PDF 并在 JTextArea 中打印 pdf 的内容。一切正常,直到我的 PDF 包含阿拉伯语的 PH Mirjan 字体。我的文本区域显示了一些垃圾字符,如下所示。

enter image description here

我该如何解决这个问题?

文本区域的默认字体是 Arial Unicode MS。反正我可以配置文本区域的字体吗?假设我在本地下载了 PH Mirjan,如何将文本区域字体更改为下载的字体。非常感谢任何建议或引用链接。

编辑

try (InputStream is = NewJFrame.class.getResourceAsStream("/GE SS Two Bold.otf")) 
        {
            Font font = Font.createFont(Font.TRUETYPE_FONT, is);
            font = font.deriveFont(Font.PLAIN, 24f);
            jTextArea1.setFont(font);
            jTextArea1.setForeground(Color.BLUE);

它给了我这个异常(exception)。

异常

java.awt.FontFormatException: java.nio.BufferUnderflowException at sun.font.TrueTypeFont.init(TrueTypeFont.java:558) at sun.font.TrueTypeFont.(TrueTypeFont.java:191) at sun.font.CFontManager.createFont2D(CFontManager.java:161) at java.awt.Font.(Font.java:614) at java.awt.Font.createFont0(Font.java:968) at java.awt.Font.createFont(Font.java:876)

知道我为什么会收到这个吗?

最佳答案

为什么字体名称是 .tt 而不是 .ttf ? 情况可能是它不是 ttf 文件或已损坏导致异常发生

    try {
        Font NARROW = Font.createFont(Font.TRUETYPE_FONT, this.getClass().getResourceAsStream("/fonts/DSS.ttf"));   
        NARROW = NARROW.deriveFont(17f);       
    } catch (FontFormatException | IOException ex) {
        System.err.println("Exception loading fonts "+ex);
    }

我知道这是几乎相同的代码,在其他 ttf 文件上试试这个。 Exception 不应该存在。

关于java - Swing - 如何将自定义字体添加到 JTextArea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129166/

相关文章:

java - Java使用的内存远大于堆大小(或正确大小的Docker内存限制)

java - 如何将我的 JMenuBar 移动到 Mac OS X 上的屏幕菜单栏?

java - 类(class)集合

php - MPDF dejavuserifcondensed.mtx.php 没有那个文件或目录

css - 快速CSS字体查询

java - Selector.select() 开始无限循环

java - 我无法在字段中输入数据

java - 为什么 EventDispatchThread 排在第一位?

java - JOptionPane 不会关闭

iphone - iPhone 上的字体大小渲染不一致