确定postscript(.ps)文件中使用的字体

时间:2010-04-21 09:04:42

标签: pdf fonts postscript

给出具有以下标题的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

3 个答案:

答案 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”

它会给你一些额外的东西,但你可以从那里玩它。