求助, Java 只能用全局安装的 fontconfig 来使用字体吗?

2023-12-04 13:30:08 +08:00
 zackzergzeng
用的是 openjdk 1.8,使用 apache batik 写了个 svg 转 png 的功能,结果放到 centos 服务器运行报错,调查是因为没有安装 fontconfig ,虽然安装 fontconfig 就能解决,但是想要自动化部署,而且要兼容很多系统( centos ,欧拉,红帽...,还得区分 x86 和 arm),所以自动化脚本那边不想安装 fontconfig ,之后又研究了下泪痣 libfontconfig.so 的形式,但是内置后 sun.font.FontConfigManager.getFontConfig 方法一直返回为空,还是报错,所以在这里咨询各位大神,有什么解决方案能够绕开安装 fontconfig 来正常运行 batik
1948 次点击
所在节点    Java
22 条回复
404E
2023-12-05 12:16:14 +08:00
svg 转 png ,我之前写的是用 skiko(kotlin 的,java 可以用 skija)来处理,win 开发 linux 部署,只要改一下依赖的 os 就行了,但是有一个问题就是不支持 css 的样式(浏览器是支持的),要手动处理把 css 放到对应的元素里面(用 jsoup)
991547436
2023-12-05 17:08:58 +08:00
不用 fontconfig 的话可以在转换之前把用到的字体加载一下
// 从文件加载字体
File fontFile = new File("./font/SIMHEI.TTF");
Font customFont = Font.createFont(Font.TRUETYPE_FONT, fontFile);
// 获取全局图形环境
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
// 注册字体到全局
ge.registerFont(customFont);
// 获取所有可用的字体
Font[] allFonts = ge.getAllFonts();
System.out.println("Available Fonts:");
for (Font font : allFonts) {
System.out.println(font.getFontName());
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/997458

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX