在创建文件的过程中.ps
,dvips
读取“.
嗯嗯pk
“字体。这些字体不能携带编码信息(与 Type3 或 Type1 字体不同)。但在.map
文件中编码信息能被给予。
是否可以使用文件将文件与给定的 PK 字体.map
关联?.enc
.map
文件允许“ReEncodeFont”参数,类似于以下内容:
lhr10 "Myenc ReEncodeFont" <my.enc
可以使用吗?或者也许可以使用其他方法,例如.ps
直接破解文件?(不考虑将 PK 字体转换为 Type1 或 Type3)
更新
pdftex 手册第 12 页的以下引述看起来很有希望:
从版本 1.40.19 开始,还可以为位图 pk 字体指定编码文件。在这种情况下,它会从给定的编码向量中分配字形名称,该名称可与 \pdfglyphtounicode 原语 (qv) 一起使用。例如:...
是否可以使用类似的技巧dvips
?
以下是在 pdftex 中使用 PK 字体编码的完整示例:
从发行版复制tex256.enc
到当前目录并将条目更改/idieresis % 239
为/uni044F
,然后使用处理以下文件pdftex
:
\pdfcompresslevel=0 \pdfobjcompresslevel=0
\pdfmapline{lhr10 <tex256.enc}
\font\tenrm=lhr10 \tenrm
^^ef
\end
此后您将获得可复制的位图字符。
是否可以对创建的 pdf 进行逆向工程并直接将类似的东西添加到.ps
制作中dvips
?
PDF 中的以下代码似乎负责将编码与 PK 文件关联:
/Type /Encoding
/Differences [239/uni044F]
此代码在 PostScript 中的对应内容是什么?
答案1
你真幸运! 的原作者dvips
Tomas Rokicki 已经“复出”(可以这么说——我的意思是他有dvips
一段时间没有工作了)来改变这种情况,并在 TUG 2019 上就此发表演讲。
你可以看看他的预印本这里以及包含源代码的 GitHub 仓库这里。
您可以测试我对
dvips
输出文件提出的更改,而无需更新您的发行版或构建新版本dvips
。Perl 脚本addencodings.pl
读取标准输入上生成的 PostScript 文件dvips
,并将修改后生成的 PostScript 文件写入dvips
标准输出。此测试不需要其他文件;标准 TEX Live 字体的默认编码内置于 Perl 脚本中。