如何配置Ghostscript识别Fontmap中的CID-keyed字体?
解决Ghostscript读取自定义Fontmap.GS加载CID-keyed字体的问题
1. 修正Fontmap.GS配置格式
在F:\cidfonts目录下的Fontmap.GS中,添加符合规范的CID字体映射条目:
/NotoSansTamil-Regular << /Path (F:/cidfonts/NotoSansTamil-Regular.t42) % Windows路径可使用正斜杠避免转义 /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (Tamil) /Supplement 0 >> >> ;
若字体自身携带完整CID元信息,也可使用简化映射:
/NotoSansTamil-Regular /NotoSansTamil-Regular ;
2. 强制加载自定义Fontmap.GS
通过命令行参数禁用Ghostscript默认内置Fontmap,指定加载你的自定义Fontmap文件:
gswin64c.exe -sFONTPATH="F:\cidfonts" -dNOFONTMAP -sFONTMAP="F:\cidfonts\Fontmap.GS" "F:\cidfonts\NotoSansTamil-Regular.ps"
参数说明:
-dNOFONTMAP:关闭默认内置Fontmap的加载-sFONTMAP:指定自定义Fontmap的完整路径
3. 优先加载Type42字体
由于同目录TTF文件优先级高于T42,通过-dFONTTYPEPREFERENCE参数调整查找顺序,将Type42(值为4)设为最高优先级:
gswin64c.exe -sFONTPATH="F:\cidfonts" -dNOFONTMAP -sFONTMAP="F:\cidfonts\Fontmap.GS" -dFONTTYPEPREFERENCE=4 "F:\cidfonts\NotoSansTamil-Regular.ps"
字体类型对应取值:1=Type1, 2=Type1C, 3=TrueType, 4=Type42, 5=CFF
4. 正确配置cidfmap(可选)
若需通过cidfmap加载,先在F:\cidfonts\Resource\Init目录下创建cidfmap文件,添加条目:
/NotoSansTamil-Regular << /Path (F:/cidfonts/NotoSansTamil-Regular.t42) /CIDSystemInfo << /Registry (Adobe) /Ordering (Tamil) /Supplement 0 >> /Subtype /CIDFontType2 >> ;
然后执行命令时指定cidfmap路径:
gswin64c.exe -sFONTPATH="F:\cidfonts" -dNOFONTMAP -sCIDFMAP="F:\cidfonts\Resource\Init\cidfmap" -dFONTTYPEPREFERENCE=4 "F:\cidfonts\NotoSansTamil-Regular.ps"
5. 验证与排查
- 用以下命令测试字体是否能被正确识别:
gswin64c.exe -sFONTPATH="F:\cidfonts" -dNOFONTMAP -sFONTMAP="F:\cidfonts\Fontmap.GS" -c "/NotoSansTamil-Regular findfont quit"
若执行无报错,说明字体映射生效。
- 检查配置文件的语法:确保所有括号、分号为英文半角,路径使用正斜杠或转义反斜杠。
- 确认字体文件未损坏,可通过直接指定字体文件的命令对比验证。
内容的提问来源于stack exchange,提问作者Marmayogi
相关产品推荐
相关产品推荐

