第一段是加载本地文件中的字体文件,并引用相关的字体属性,不过测试后没有生效,不只是不是本地环境的原因,如解决问题后会持续更新
放到方法外层的路径拼写
private static final String basePath = System.getProperty("user.dir") + File.separator + "webcgfclient" + File.separator + "src" + File.separator + "main" + File.separator + "resources"
+ File.separator + "static" + File.separator + "css";
//获取字体的路径,并使用File方法引用字体元素
String fontUrl = basePath + File.separator + "font" + File.separator + "FZLTCHJW.TTF";
File file = new File(fontUrl);
FileInputStream aixing = new FileInputStream(file);
//获取字体属性信息
Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, aixing);
第二段是获取本地所有的字体
public static void main(String[] args) {
String[] fonts =
GraphicsEnvironment // GraphicsEnvironment(抽象类) 图形环境类
.getLocalGraphicsEnvironment() // 获取本地图形环境
.getAvailableFontFamilyNames(); // 获取可用字体family名
int fontCount = 0; // 字体数统计
for(String font : fonts) {
fontCount ++;
System.out.println(font);
}
System.out.println("系统字体数:" + fontCount);
}
最后描述一下我遇到的问题,一开始是安装字体后一直不生效,使用字体获取方法也没有找到先关的字体,最后无意发现一篇文章,说是字体配置的权限不够导致的,可以右键字体选择【为所有用户安装】,但是这个功能我只在本地win11系统中看到了,放到windows server 2012系统中是没有的,只好在控制面板重要到该字体,右键属性中为该字体添加所有用户的读取权限才成功。