gpt4 book ai didi

java - 在java swing中注册外部字体的多种样式

转载 作者:行者123 更新时间:2023-11-30 03:03:51 24 4
gpt4 key购买 nike

我想将字体作为资源文件包含在我部署的应用程序中。

要在 swing 中使用它,我知道我可以导入如下字体:

InputStream is_regular = Resources.class.getResourceAsStream("Lato-Regular.ttf");
Font regular_font = Font.createFont(Font.TRUETYPE_FONT, is_regular);

但是我怎样才能注册粗体变体,它存储在名为“Lato-Bold.ttf”的文件中?

我还知道我可以通过属性字段访问变体权重。但我如何注册这些呢?Lato 字体有 18 种不同的变体,例如浅色、半粗体、发际线等。

最佳答案

您编写了一个 FontManager。几乎所有 Java 问题的解决方案要么是管理器,要么是工厂。有时你需要一个经理工厂。

一种方法是这样的。

package com.ggl.testing;

import java.awt.Font;
import java.awt.FontFormatException;
import java.io.IOException;
import java.io.InputStream;

import javax.annotation.Resources;

public class FontManager {

public static Font getNormalFont() {
return getFont("Lato-Regular.ttf");
}

public static Font getBoldFont() {
return getFont("Lato-Bold.ttf");
}

private static Font getFont(String fontFileName) {
InputStream is = Resources.class.getResourceAsStream(fontFileName);
try {
return Font.createFont(Font.TRUETYPE_FONT, is);
} catch (FontFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return null;
}

}

您为 18 种字体变体编写了 getter 方法。

可以将 getFont 方法末尾的 return null 更改为返回标准字体。

如果您想在应用程序中部署字体,则需要将字体文件复制到应用程序的资源文件夹中。将应用程序资源文件夹添加到 Java 构建路径(类路径)。代码中的这一行将更改为

InputStream is = getClass().getResourceAsStream("/" + fontFileName);

关于java - 在java swing中注册外部字体的多种样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295169/

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