1
Ayanokouji 356 天前
如果是 docker ,可以将字体打包到镜像,如果是裸机,可以写脚本,安装字体
|
2
adoal 356 天前
说得好像安装 fontconfig 这个包不能做到自动化部署里去似的
|
3
adoal 356 天前
你想像的自动化部署是什么,只包括用脚本或者其它系统把你的打包好的业务软件拷过去这一件事,不包括对目标环境的配置?
|
4
kd9yYw2RyhQwAwzn 356 天前
自动化部署不是也需要基础镜像吗 把 fontconfig 直接安装到基础镜像就可以了
|
5
zackzergzeng OP @adoal 我描述的有点问题,其实就是产品有个一键安装脚本,内部讨论了下不同意在脚本那层安装,因为基本安装环境不联网,所以要准备的安装包就太多了
|
6
thofx 356 天前
@zackzergzeng 离线 rpm 包 可以啊
|
7
cheng6563 356 天前
内核版本够的话,可以用 nerdctl ,一步解压就装好容器环境。
|
8
adoal 356 天前 2
@zackzergzeng 又想马儿跑又想马儿不吃草。不联网的环境就不能装包了吗?那客户当初按安装操作系统的介质总还在的吧,fontconfig 这么基础的东西你说的这几个发行版的安装盘里应该都有的。如果确定一定要离线安装,方案一是没必要把发行版这种东西也放到一键安装里去,这事可以让客户自己先解决好(别笑,没必要太舔客户,我(甲方)就遇到过供应商的文档里的 requirement 一张明确写了要预装哪些包)。方案二是把你们要兼容的几个发行版的 fontconfig 及其直接依赖先准备好,现场环境里没装的就从你们介质装,“要兼容很多系统”是你们自己贪心的商务策略,那就要付出相应的劳动代价。NO SILVER BULLET, NO SILVER BULLET, NO SILVER BULLET 。
|
9
McZoden 356 天前
怀疑是客户服务器压根没有装 X ,所以 fontconfig 之类的 X 环境的基础都没有,不止缺少这单个包的
|
10
wjup 356 天前
上周刚遇到个类似的问题。业务是数据根据模板导出 pdf ,用到了字体,本地开发试着没问题,打成 jar 包后运行字体总是返回空,最终发现打包时二进制会破坏字体文件,大概是这样原因,然后在 pom 里添加 nonFilteredFileExtensions 解决的
|
11
zackzergzeng OP @thofx 要准备至少 4-5 个系统的 rpm ,还有 x86 和 arm 两种架构,还得准备 fontconfig 依赖的 rpm ,甚至依赖的依赖
|
12
ldyisbest 356 天前
字体打包到 java 项目里面
|
13
siweipancc 356 天前 via iPhone
(⊙o⊙)还有这么难搞的吗,上次出问题我直接打包一个字体注册到虚拟机就完事了
|
14
janus77 356 天前
要不你先在一台机器上试试,装了 fontconfig 以后能不能解决
说不定,依然解决不了呢? 我的意思是,客户的环境有时候是很坑的,他们从嘴里说的话不一定靠谱,要亲自调研过才能确定。不然你们又做了无用功 |
15
zackzergzeng OP @janus77 安装 fontconfig 是肯定解决的,而且卸载了 fontconfig 就会报原来的错
|
16
bigfei 356 天前
用 js 在浏览器实现呢? svg 到 png
|
17
zackzergzeng OP @bigfei 没有浏览器的,用来生成图片放入 word 文档的
|
18
bigfei 356 天前
哈,也可以打包个 headless chrome 进去, 如:
https://stackoverflow.com/questions/63871708/convert-a-svg-to-a-png-jpeg-without-using-canvas-in-a-serverless-function |
19
bigfei 356 天前
|
20
buliugu 356 天前
to B 其实非常建议用 docker 做部署,把部署的复杂度统一搞到开发阶段处理掉,通过租赁云服务器的方式测试各种不同的操作系统与硬件环境,不然客户千奇百怪的服务器环境会把你的实施工程师逼疯的
|
21
404E 355 天前
svg 转 png ,我之前写的是用 skiko(kotlin 的,java 可以用 skija)来处理,win 开发 linux 部署,只要改一下依赖的 os 就行了,但是有一个问题就是不支持 css 的样式(浏览器是支持的),要手动处理把 css 放到对应的元素里面(用 jsoup)
|
22
991547436 355 天前
不用 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()); } |