Ghostscript添加自定义TrueType字体失败,字体被Courier替换的问题求助
Ghostscript添加自定义TrueType字体失败,字体被Courier替换的问题求助
嘿,我来帮你排查下问题,看起来你已经走对了大部分步骤,但可能在路径定义或者字体识别上踩了小坑:
1. 先修正字体路径的问题
你在fontmap里写的(Olde English Regular.ttf)是相对路径,Ghostscript会默认去它自带的/usr/share/ghostscript/9.55.0/Resource/Font/目录下找这个文件,但你的字体实际在/usr/share/fonts里,路径不匹配才导致了找不到文件的报错。
解决办法有两种:
- 要么把字体文件直接复制到
/usr/share/ghostscript/9.55.0/Resource/Font/目录下,这样原来的相对路径就能生效; - 要么在fontmap里写完整的绝对路径,注意保留文件名里的空格:
/OldeEnglish-Regular (/usr/share/fonts/Olde English Regular.ttf) ;
2. 确认字体的内部PostScript名称是否正确
有时候字体的内部名称和文件名不一样,Ghostscript可能不认你自定义的OldeEnglish-Regular。你可以用fc-list命令(需要先安装fontconfig工具)查看字体的内部名称:
fc-list | grep "Olde English"
如果查到的内部名称不是OldeEnglish-Regular,比如是OldeEnglishRegular,那你需要把fontmap里的名称改成对应的内部名称,比如:
/OldeEnglishRegular (/usr/share/fonts/Olde English Regular.ttf) ;
3. 刷新字体缓存并验证
把字体放到系统字体目录后,记得刷新字体缓存让系统识别到:
fc-cache -fv
修改fontmap后最好重启相关程序,确保Ghostscript加载了新的配置。
你还可以用一个简单的Ghostscript命令测试字体是否能被识别:
gs -c "/OldeEnglish-Regular findfont {pop (Font found!) =} {pop (Font not found!) =} ifelse quit"
如果输出Font found!,说明字体已经能被正常识别,再去转换.abc文件应该就不会被替换成Courier了。
试试这些步骤,应该能解决你的问题~
备注:内容来源于stack exchange,提问作者Frank Riccobono
相关产品推荐
相关产品推荐

