在屏幕上查看时,通过处理的文档看起来dvipdfmx
比通过生成的文档更好pdftex
。
任何文档都会发生这种情况,即使是纯文本格式的文档。
我尝试过以下观众:
atril xpdf evince qpdfview mupdf okular gv zathura
它们各自在文档上产生不同的屏幕输出,通过dvipdfmx
(或dvips+ps2pdf
)和获得pdftex
。
如图所示,与 dvi 模式相比,pdf 模式下字体颜色为灰色,链接颜色模糊。
$ pdffonts dvi.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
FESNVM+CMSY10 Type 1C Builtin yes yes yes 4 0
XZXPQO+CMR10 Type 1C Builtin yes yes no 5 0
CSTOKE+CMR8 Type 1C Builtin yes yes no 6 0
LXXLBC+CMBX10 Type 1C Builtin yes yes no 7 0
LIFJYF+CMTI10 Type 1C Builtin yes yes no 11 0
$ pdffonts pdf.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
IGWWSQ+CMSY10 Type 1 Builtin yes yes no 8 0
GVEKFU+CMR10 Type 1 Builtin yes yes no 9 0
JBEWTB+CMR8 Type 1 Builtin yes yes no 10 0
RRATMA+CMBX10 Type 1 Builtin yes yes no 11 0
YOSONK+CMTI10 Type 1 Builtin yes yes no 14 0
在其中一个主题中,有人建议通过 将 Type1 字体转换为 Type1C 字体ps2pdf
,但问题是ps2pdf
在创建 pdf 时会将字体转换为光栅图像,因此这不是一个合适的方法。此外,虽然转换后的文档更好,但与通过 获得的文档相比,它仍然有点模糊dvipdfmx
。
如果无法纠正 pdf viewer 或 pdftex,我会接受,但至少为什么pdftex
我从和中获得的文档外观难道不一样吗dvipdfmx
?
笔记答案不应该假设改变字体 - 必须使用默认的 Computer Modern。
更新
pdftex
这很奇怪:用和编译以下代码tex+dvipdfmx
- 颜色完全不一样!也许这是理解这个谜团的关键?
1)dvipdfmx的代码:
\special{color push rgb 0 0 1}
\vrule width 5cm height 5cm
\special{color pop}
\bye
2)pdftex代码:
\input pdfcolor
\Blue
\vrule width 5cm height 5cm
\bye
\Black
和!!!也一样
答案1
实际上有两个相互冲突的问题,一开始我以为是一个问题 - 因此弄乱了我的问题中的某些点。
根据最新披露的事实,我想将上述观众重新分为两类。
a) 以下查看器仅在颜色模型(rgb 与 cmyk)方面有所不同
gv mupdf
b) 以下查看器在颜色模型和字体处理方面有所不同(Type1 与 Type1C)
qpdfview evince okular xpdf atril zathura
1)颜色模型问题的答案:
分别使用\pdfliteral{0 0 1 rg}
和\pdfliteral{0 0 0 rg}
表示蓝色和黑色
2)针对灰色外观问题的答案:使用以下方法转换文档ps2pdf
(它不会产生光栅字体,正如我在问题中错误地写的那样)
ps2pdf -dPDFSETTINGS=/prepress -dAutoRotatePages=/None -dEmbedAllFonts=true -dSubsetFonts=true orig.pdf new.pdf
现在,当我比较 ps2pdf 的输出和 dvipdfmx 的输出时,发现有差异。
剩下要做的就是确保这个 ps2pdf 命令能够正常工作而不会丢失信息,即如何转换回 Type1 字体并将哈希值与原始字体进行比较?
摘要:除了颜色模型的问题之外,我推测这是 pdf 查看器和/或 pdf 库在处理 Type1 字体与 Type1C 字体时的一个错误,因为在使用 处理之前和之后 的输出gv
看起来mupdf
完全相同ps2pdf
,正如它应该的那样。