给出具有以下标题的postscript文件
%!PS-Adobe-3.0
我想列出文件中使用的所有字体。输出不一定是完美的,但我需要确保我得到所有使用的字体的引用。我知道有不同类型的字体,并且可能会或可能不会在postscript文件中嵌入字体。
我目前最好的想法是grep /搜索Font case不敏感这个词并从那里开始。
我倾向于使用.NET / C#进行开发,但任何解决方案都很受欢迎。
谢谢,
伯纳德
更新: lhf的答案解决了这个问题,由于格式和长度限制,我根据他的建议添加了一个工作用法示例。
可以保存为.cmd文件并从命令提示符运行的Windows批处理文件:
REM Prerequisites:
REM - GPL Ghostscript 8.64 @ http://pages.cs.wisc.edu/~ghost/doc/GPL/gpl864.htm
REM - pdffonts @ 3.02pl4 win32 download @ http://www.foolabs.com/xpdf/download.html
REM Add directories to path, contains ps2pdf and its dependency gswin32c.exe
SET PATH=%PATH%;C:\Program Files\gs\gs8.64\lib;C:\Program Files\gs\gs8.64\bin
REM Add pdffonts directory to path
SET PATH=%PATH%;c:\temp\path-toxpdf-3.02pl4-win32
REM Convert postscript file to pdf file
call ps2pdf input.ps temp.pdf
REM list pdf file fonts
call pdffonts temp.pdf
示例输出:
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
DQRDAA+BCC128Medium-Identity-H CID TrueType yes yes no 21 0
MIAVUG+Verdana-Identity-H CID TrueType yes yes no 13 0
BKNKQN+Verdana-Identity-H CID TrueType yes yes no 10 0
答案 0 :(得分:2)
将文件转换为pdf,然后使用pdffonts(如果有的话)。
如果你正在进行PS编程,你可以运行一个模拟PS解释器(在PS中)忽略除findfont之外的大多数东西。
答案 1 :(得分:1)
如果PostScript文件符合PostScript Language Document Structuring Conventions Specification,您可以从字符串开始查找PostScript注释:
%%DocumentNeededResources:
%%DocumentSuppliedResources:
%%DocumentFonts:
%%DocumentNeededFonts:
%%DocumentSuppliedFonts:
答案 2 :(得分:0)
尝试以下正则表达式:
@ “/.*?\ sfindfont”
它会给你一些额外的东西,但你可以从那里玩它。