gpt4 book ai didi

java - 很棒的字体 : "pr0blem reading font data" in Java

转载 作者:行者123 更新时间:2023-12-02 02:51:00 24 4
gpt4 key购买 nike

我的目标是能够在 Java GUI 中使用很棒的字体。为此,我搜索并找到了这个question .

我选择了第二个答案,用 InputStream 导入 fontawesome-webfont.ttf。我根据自己的需要定制了代码,因为我不需要一种方法来实现我的目的。

但是在测试它时,我收到错误:“读取字体数据时出现问题”:

Font font = Font.createFont(Font.TRUETYPE_FONT, is);
<小时/>

这是有问题的代码:

try (InputStream is = this.getClass().getResourceAsStream("C:/Users/Prak01/Documents/EclipseWorkspace/Zeiterfassung/fontawesome-webfont.ttf")) {
try {
Font font = Font.createFont(Font.TRUETYPE_FONT, is);
font = font.deriveFont(Font.PLAIN, 24f);
TextfieldFont = new JTextField("&#xf0c0;");
TextfieldFont.setFont(font);
} catch (FontFormatException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

我相信我所做的一切都是按照规则进行的。数据路径正确。难道是因为……

this.getClass().getResourcesAsStream();

因为我将其更改为:

TestFontAwsome.class.getResourceAsStream();

但我相信它也应该与 this.getClass() 一起使用。

最佳答案

您错误地认为 getResourceAsStream 的参数应该是一个文件名。它不是一个文件名;它是一个相对 URL,根据类路径中的每个条目进行解析。一般来说,这意味着它应该是同一个 .jar 文件中的路径。

如果您想直接从文件加载字体,请不要使用 getResourceAsStream。只需将其作为文件打开即可:

try (InputStream is = new BufferedInputStream(
Files.newInputStream(Paths.get("C:/Users/Prak01/Documents/EclipseWorkspace/Zeiterfassung/fontawesome-webfont.ttf")))) {

注意:您不需要两个 try block 。 try-with-resources 语句允许有一个 catch block :

try (InputStream is = new BufferedInputStream(
Files.newInputStream(Paths.get("C:/Users/Prak01/Documents/EclipseWorkspace/Zeiterfassung/fontawesome-webfont.ttf")))) {

// ...

} catch (FontFormatException e1) {
// ...
}

关于java - 很棒的字体 : "pr0blem reading font data" in Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43848492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com