Helvetica 字体的边缘有锯齿

Helvetica 字体的边缘有锯齿

我使用“Helvetica”作为字体,并使用 Texmaker 构建文档。但是使用此字体时生成的 PDF 边缘参差不齐,而当我使用其他字体(例如 Times 甚至 Helvetica sans-serif)时,构建效果很好。

在此处输入图片描述

请告诉我有什么办法可以解决这个问题。这些锯齿状边缘的问题在于,在 100% 分辨率下,它看起来非常暗淡且难以阅读。

好的,伙计们,下面是 MWE

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% HEADER
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper,twoside,12pt]{book}

%% Language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
%\usepackage[utf8]{inputenc}
\usepackage{graphicx,color,subfigure}

%% Line Spacing %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{setspace}
%\singlespacing        %% 1-spacing (default)
%\onehalfspacing       %% 1,5-spacing
\doublespacing        %% 2-spacing

%% Other Packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=1.5in, right=1.5in, top=1in, bottom=1in, includefoot, headheight=13.6pt]{geometry}
\usepackage[pagebackref=true,breaklinks=true,letterpaper=true,colorlinks,bookmarks=false]{hyperref}
\usepackage{helvet}
\usepackage[square,numbers]{natbib}
\usepackage{hyphenat}
\usepackage{fancyhdr}


\begin{document}

\pagestyle{empty} %No headings for the first pages.

\cleardoublepage %The first chapter should start on an odd page.

\pagestyle{plain} %Now display headings: headings / fancy / ...

\pagebreak

%------------------------------------------------------------------------
\chapter{Divorce}


A major change that has occurred in the Western family is an increased incidence in divorce. Whereas in the past, divorce was a relatively rare occurrence, in recent times it has become quite commonplace. This change is borne out clearly in census figures. For example thirty years ago in Australia, only one marriage in ten ended in divorce; nowadays the figure is more than one in three (Australian Bureau of Statistics, 1996: p.45). A consequence of this change has been a substantial increase in the number of single parent families and the attendant problems that this brings (Kilmartin, 1997).


\end{document}

答案1

读完评论后,我认为原帖作者有些地方理解得不太正确,所以我会试着在这里澄清一下。这不算是一个真正的答案,但作为评论来说太长了。

1.“带衬线的 Helvetica”

没有这样的事。Helvetica 是一种 Sans Serif 字体。当您使用包时helvet,您要求 TeX 将“Computer Modern Sans Serif”替换为“Helvetica”,但使用“Computer Modern Roman”的正文不会改变。

一开始,我和其他评论者一样,以为 OP 确实在尝试使用一些基于 Helvetica 但带有衬线的晦涩字体,例如唯一的那个Johannes B 指出。但现在我认为 OP 错误地认为该helvet软件包提供了两种 Helvetica,一种是 Sans,另一种是带衬线。正如所解释的那样,事实并非如此。

2.“锯齿状边缘”

唐纳德·克努斯 (Donald Knuth) 创建的原始 Computer Modern 字体是使用 Metafont(也是由克努斯开发的)程序制作的。该程序采用一个以数学方式描述字体中每个字形形状的源,并为每个字形生成一个位图。在生成 PostScript 或 PDF 时,这些位图被收集到“Type 3 字体”中并嵌入到最终文件中。这些位图是针对给定的打印机分辨率(例如:300dpi)生成的。如果放大到高于该分辨率,则位图的各个像素都可见。此外,即使不放大,某些 PDF 阅读器也会使这些字体变得有些模糊和难以阅读(Adobe Reader 就是其中之一)。

PDF(和 PostScript)支持另一种字体格式,称为 Type1 字体,这种字体不存在此问题,因为它是矢量格式。它包含描述每个字形的数学曲线,而不是位图。从功能上讲,这相当于 Knuth 创建的原始 Metafont 格式,但为了显示(或打印)这些字形而“渲染”这些字形是由 PDF 阅读器(或打印机)完成的。

鉴于 Metafont 和 Type1 在概念上是等价的,人们可能认为应该可以将 Knuth 使用 Metafont 设计的原始 Computer Modern 字体转换为 PS/PDF Type1 字体。不幸的是,这是不可能的,因为它们使用不同类型的数学曲线来描述字形。

将 Metafont 转换为 Type1 的唯一合理方法是,首先将 Metafont 转换为位图,然后跟踪位图并手动调整结果以使其在任何分辨率下看起来都很好。

这项工作很久以前就完成了,现在 TeX 附带了 Type1 格式的 Computer Modern 字体,因此在生成 PDF 时使用此字体,并且在任何缩放级别下看起来都正确。

3. 字体编码

最初的 Computer Modern 字体在内部使用一种称为 OT1 的特殊编码。此编码定义了数值(每个字符的代码)和字形(该字符的图形表示)之间的映射。OT1 与 ASCII 基本兼容,因此字符代码 65 与绘制“A”的字形相关联。

但是 OT1 编码没有为欧洲语言中广泛使用的某些字符提供代码点(也没有字形)。例如,任何重音字符都没有字形。当文档作者输入 \'e 时,TeX 会生成两个“叠加”代码,一个用于字形“e”,另一个用于带重音的字形。

这种方法有一些缺点。首先,PDF 实际上包含两个“é”代码(一个代表重音符号,另一个代表“e”)。这可能会导致从 PDF 复制粘贴文本或在 PDF 中搜索时出现问题。此外,由于这种编码,TeX 连字规则在处理包含重音符号的单词时会出现问题。

为了解决这些问题,必须使用 T1 编码。请注意,T1 并不意味着“Type1 字体”。“Type3 字体”也可以使用 T1 编码。使用 T1 编码的字体具有重音字符和其他 Computer Modern 中原本没有的字符的特定字形。因此,如果\usepackage[T1]{fontenc}使用,TeX 将加载具有 T1 编码的字体,并且当作者写入时\'e,TeX 将输出字形“é”的代码(而不是重音和“e”的单独代码)。

但要实现这一点,需要一些 T1 编码的字体。默认情况下,TeX 附带一种使用 T1 编码的 Computer Modern 变体,有时称为“European Computer Modern”。当您请求 T1 编码时,如果使用的字体是 Computer Modern,TeX 将改为加载“European Computer Modern”。而且,猜猜怎么着?这种字体仅以 Metafont 格式提供,因此呈现为位图。

请注意,如果您使用简单的英语(没有重音字符等)书写,则不需要 T1 编码。默认的 OT1 编码适用于英语,在这种情况下 TeX 将使用 OT1 编码的 Type1 CM 字体,这种字体看起来不会“锯齿状”。

4.cm-superlmodern

最近,所有这些问题都通过创建基于 Computer Modern 和欧洲 Computer Modern 的新字体得到解决,但采用矢量 Type1 格式。事实上,解决方案。

cm-super是 Computer Modern 的“嵌入式”替代品。如果您安装此“软件包”,TeX 将默认配置为使用这些字体。然后您无需更改文档中的任何内容(无需更改\usepackage)。只需再次编译它,您就会获得正确的 Type1 矢量字体和 T1 编码。所有问题都解决了。

lmodern是一种具有相同目标的替代字体,但需要\usepackage{lmodern}才能使用。

5. OP问题的解决方案

因此,显然 OP 要求找到一种方法来在文档中正确呈现“Helvetica with Serifs”。但没有这样的方法。那么他有什么替代方案呢?

  1. 使用包helvet将标题改为 Helvetica,文档的其余部分则使用 Computer Modern。为了避免这种情况下的“锯齿状”边缘,\usepackage{lmodern}

  2. 整个文档(包括页眉和正文)使用 Helvetica。请参阅Johannes B 的回答为了这。

  3. 搜索一些与 Helvetica 搭配“好看”的衬线字体,并将其用于正文。传统上,Helvetica 使用的衬线字体是 Times Roman。你可以用 获得它\usepackage{times}。此字体默认使用 T1 编码和 Type1 矢量格式,因此不会造成麻烦。另一种可能性是\usepackage{tgtermes}使用字体TeX 环流,基于 Times 但经过了大量扩展(感谢 Johannes_B 的建议)。

答案2

正如所建议的那样LaTeX 字体目录您需要在加载之前加载字体fontenc。但更重要的是使用无衬线字体。如果您想用 helvetica 编写整个文档,请取消注释示例开头的行。看一下TeX Gyre 英雄也可能很有趣。

\documentclass[a4paper,twoside,12pt]{book}
\usepackage[scaled]{helvet}
\renewcommand*\familydefault{\sfdefault} %% Only if the base font of the documen%t is to be sans serif
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß}
}  
\usepackage{blindtext}

\begin{document}
\chapter{Divorce}
\blindtext
\[ a^b \]

{\sffamily \blindtext}
\end{document}

如果可以避免,就不要双倍行距你的线条。看上去真的很丑。
请注意,海尔维提卡和标准数学字体不能很好地协同工作。

相关内容