字体格式

字体格式

pdflatex我注意到和之间的字体渲染效果有细微的差别xelatexxelatex与相比,它往往稍微粗一些pdflatex。甚至文件管理器中的文件缩略图看起来也不同(顺便说一句,我使用的是 Lubuntu linux)。

pdflatex 与 xelatex 字体渲染

我尝试使用默认字体(Computer Modern)和 Charter(\renewcommand*\rmdefault{bch}),它们仍然看起来不同。

% Computer Modern
% Compiled using both PDFlatex and XeLaTeX
% XeLaTeX result is slightly bolder

\documentclass[12pt]{article}
\usepackage[a5paper, margin=20mm]{geometry}
\usepackage{kantlipsum}
\begin{document}
\kant
\end{document}

计算机现代(PDFlatex):

计算机现代 (PDFlatex)

计算机现代(PDFlatex)字体属性

计算机现代(XeLaTeX):

计算机现代(XeLaTeX)

计算机现代(XeLaTeX)字体属性

这是宪章……

% Charter font
% Compiled using both PDFlatex and XeLaTeX
% XeLaTeX result is slightly bolder

\documentclass[12pt]{article}
\usepackage[a5paper, margin=20mm]{geometry}
\usepackage{kantlipsum}
\renewcommand*\rmdefault{bch}
\begin{document}
\kant
\end{document}

章程(PDFlatex):

章程 (PDFlatex)

Charter(PDFlatex)字体属性

宪章(XeLaTeX):

宪章 (XeLaTeX)

Charter(XeLaTeX)字体属性

你有同样的经历吗?你认为这正常吗?如何解决?谢谢。

PS:截图取自Texmaker的PDF预览(75%放大)。

PS 2:我正在使用 Lubuntu linux、Texmaker 和默认 pdf 查看器(Evince 3.10.3)。我无法使用其他操作系统进行比较。

更新:

我尝试了另一个查看器qpdfview(仍然在 Lubuntu Linux 下)。问题仍然存在。在 Android 平板电脑上查看时(使用 Acrobat 和 Google PDF 查看器),它们很好。没有区别。所以..这是一个查看器问题(正如@Robert 在下面评论的那样)。

这是 qpdfview 的屏幕截图...

使用 qpdfview 的计算机现代 (pdflatex)

使用 qpdfview 的 Computer Modern (xelatex)

使用 qpdfview 的宪章(pdflatex)

使用 qpdfview 的宪章 (xelatex)

答案1

简短回答:

  • 这是 Linux (X11) 上使用 FreeType 版本 ≥ 2.5(2013-06 发布)和 < 2.6.2(2015-11 发布)的 PDF 查看器特有的问题。例如,我可以evince在 Ubuntu 14.04 中重现此问题,但无法在 Ubuntu 12.04 或 Ubuntu 16.10 中重现。因此,请使用其他 PDF 查看器,或者直接升级(或降级!)您的 PDF 查看器。
  • 即使在存在此问题的查看器版本中,如果您增加分辨率(例如放大文本或在优质打印机上打印),也不会留下任何明显的差异。
  • 不仅如此xelatex,任何使用dvipdfmx嵌入 Type 1C (CFF) 字体的人,都可以pdflatex嵌入 Type 1 字体。
  • 某些 PDF 查看器使用的 FreeType 渲染器(可能是:、、、、、、qpdfview)对Type 1C字体有更好的提示,但在 2.5 之后和 2.6.2 之前的版本中输出太暗。evinceokularxpdfatrilzathura
  • 即使您已经使用并嵌入了 Type 1 字体,您也可以通过简单地调用PDF 文件(是)pdflatex将 PDF 转换为嵌入 Type 1C 字体,如下所示ps2pdf这个答案

这就是为什么尽管两份文档都应该用 Computer Modern 排版,但实际字体(字体的计算机实现)在两种方法中是不同的,并且某些分辨率下某些查看器的某些版本会以不同的方式呈现它们。更改任何这些措施(更换查看器、更换查看器版本、更换分辨率、对 PDF 进行后期处理)应该可以消除差异。


字体格式

计算机字体包含有关字母(字形)形状的信息。除其他格式外,这些形状可以通过以下方式描述:

  • 位图格式:现在可能没人使用了(除了 Knuth,他有他的理由)
  • TrueType 格式:形状由二次贝塞尔曲线描述
  • “类型 1” 格式:形状由三次贝塞尔曲线描述
    • “Type 1C”,又名 CFF(紧凑字体格式):Type 1 字体的无损压缩

这个问题的根本问题与 XeLaTeX 无关:它只是xelatex使用dvipdfmx嵌入 CFF 字体,正如你在dvipdfmx 页面

PostScript 类型1

与 dvipdfm 一样,它支持 PostScript Type1 格式的字体,但它们会转换为 CFF 格式(以便在启用压缩时减小 PDF 文件大小)并始终嵌入为字体子集。

您可以在本网站上看到这些问题,这些问题讨论了pdflatex(嵌入类型 1)显示得比穿过的东西更轻dvipdfmxpdflatex 和 latex-dvips-ps2pdf 链中的不同字体类型(提问者更喜欢 1C 型输出)和latex 和 pdflatex 编译的字体看起来不同


字体光栅化

在足够高的分辨率下,有足够的像素来接近字体中指定的形状。在较低的分辨率下,没有,我们有低分辨率下的光栅悲剧更多的)。

尽管类型 1 和类型 1C 在字形轮廓方面应该完全等效,但 PDF 查看器中的渲染器/光栅化器需要从字体中获取形状信息并将其实际转换为屏幕上像素(或“子像素”)强度的模式。


本期:FreeType 对 Type 1 与 CFF 的处理

这个确切的问题(通过xelatex显示生成的 PDF 比通过生成的 PDF 更粗体pdflatex)已在2016 年 1 月的 comp.text.tex,尽管那里的一些回应相当具有误导性(特别是,Type 1C 与 TrueType 无关),但它指出tex-live 邮件列表中 2014 年 12 月的这个主题问题已经得到充分回答。

问题在于,一些 PDF 查看器(如evinceqpdfview)使用的渲染器 FreeType 对 Type 1 和 CFF(Type 1C)字体使用不同的代码。引用 FreeType 维护者 Werner Lemberg 的话(2014 年 12 月):

FreeType 最薄弱的一点是 Type1 字体的提示。虽然由于 Adob​​e 贡献了新引擎,CFF 字体的处理非常好,但 Type1 仍然使用旧的原始引擎,由于时间不足,该引擎存在一些严重的错误,尚未解决。

Adobe 的 CFF 光栅化器代码在 Google 的资金支持下贡献给了 FreeType(FreeType 也用于 Android),并于 2013 年随 FreeType 2.5.0 版本发布。您可以查看以下博客文章:谷歌Adobe谷歌博客文章中的例子证实了当时 CFF 渲染效果更暗:

旧版 FreeType 光栅化器

相对

新的 FreeType 光栅化器

Adobe 博客文章中也有类似内容:

Adobe 博客文章:FreeType 中的 Adob​​e CFF 光栅化器

尽管 Google 博客文章的作者、FreeType 维护者和上述 comp.text.tex 上的发帖人 Igor 都认为 Type 1C 的渲染效果更佳,但当时的一些用户认为它太粗了,例如卡尔·贝利

CM 字体栅格化后颜色更暗,几乎看起来像粗体字体。

问题并不完全出在 FreeType 上,但 X11 堆栈上的工具包和渲染库无法正确支持“线性 alpha 混合和伽马校正”。所有这些都在这篇文章中得到了很好的解释补充2.6.2 发行说明. 随着 2.6.2 版本的发布(2015 年 11 月),他们默认关闭茎变暗(同时添加其早期原生(非 CFF)自动提示器也支持词干变暗,但已关闭)。

因此,当前的 PDF 查看器应该可以修复此差异。如上所述,我可以在 Ubuntu 14.04 上重现暗度差异,但在 Ubuntu 16.10 上却无法重现。在evince直接安装在 Mac OS X 上时,我也无法看到它。


细微差别(除黑暗外)

即使在 Mac OS X 上使用 Preview 或 Adob​​e Reader,尽管上面很多人说他们没有注意到任何区别,但页面上偶尔会出现差异(最明显的是字距调整),如果您将两个窗口叠加并在两者之间交替,您会注意到这一点。这种体验非常有趣,但不幸的是,很难展示这些截图。这是一次尝试,但您应该在自己的计算机上尝试一下:

Adobe Reader 中的不同渲染

无论如何,当您缩放文本时,这些差异往往会消失(它们会变得越来越不明显),从而每个字形都会占用更多的像素。

答案2

我刚刚在 Debian Jessie (MATE、LXDE) 上打开了这些 PDF。它们看起来完全一样,和pdflatexxelatex我认为这是操作系统/查看器的问题。

相关内容