LaTeX 中的字体编码

LaTeX 中的字体编码

我已经使用 LaTeX 有一段时间了,并且阅读了很多关于字体编码的讨论。

一些人建议使用 T1 字体\usepackage[T1]{fontenc},其他人建议什么都不添加,其他人建议T1在包之外使用ae,而其他人说这已被弃用,应该使用其他字体......

我很困惑,是否有一些更新的资源可以很好地解释这个问题并解决这个问题?

根据我的经验,不添加任何内容都可以正常工作,但有时我需要额外的字符集,例如粗体小写字母,在这种情况下,我可以使用 T1 编码,但质量很差。如果我使用aelmodern包,一切似乎都得到了解决。到底发生了什么,我到底应该怎么做?

附言:如果之前已经问过这个问题,我很抱歉,我发现了很多关于这个问题的讨论,但我发帖是希望得到一个明确的答案。

PPS:目前我正在使用latex++ dvips。如果可以的话ps2pdf我更喜欢使用pdflatex,但是当我与其他人合作时,这并不总是可行的。

答案1

基本规则是:如果\usepackage[T1]{fontenc}在您的文档中使用可以获得更好的结果,请尝试。

解释:当您编写英文文本时,您可能不需要这一行,并且在大多数情况下您不会遇到任何差异/困难。

当 Knuth 推出 TeX 时,他将其与名为“Computer Modern”的字体一起发布。与当今的 OpenType 字体相比,此字体的字符集非常有限。例如,没有“ö”和“ü”等字符。如果您不排版使用这些字符的任何语言,这不会造成任何损害。但是,一旦您必须呈现它们,您可以通过在“o”或“u”上方组合两个点“¨”来提供帮助。有一个 TeX 原语可以做到这一点:\accent。这会产生禁用连字符的副作用,这是不可接受的。

因此,有一天,TeX 用户就如何对能够呈现大多数欧洲语言的字体进行编码达成了一致(T1 编码)。当用户请求“ö”或“ü”时,此编码会告知应将哪种代码放入 DVI 或 PDF 文件中。现在这些字符不再需要由两个字形组成,它们不会破坏连字符。

现在,如果没有这些有趣的字符,为什么还要使用 T1 呢?当您为 LaTeX 准备字体时,您必须创建字体度量文件 ( tfm)。由于 T1 是目前使用最广泛的编码(当然在欧洲),有些人不再使用非 T1 编码,因此字体可能无法在旧的默认编码中使用OT1

但是:当您坚持使用 Computer Modern 时,您可能希望保留旧编码(而不是使用 T1),因为 PostScript 变体(可带来更好的渲染效果)仅适用于 OT1 编码。对于 T1 编码的 Computer Modern(当您需要在包含这些特殊字符的单词中使用连字符时,您必须使用它),您可以使用ae或将字体更改为 cm-super(通过不是加载ae并将编码更改为 T1 - 但我不想这样做)。我强烈建议使用 Computer Modern 替代品“Latin Modern”,它有几种版本(PostScript Type 1、OpenType 字体)。通过 激活它\usepackage{lmodern}

答案2

替代XeLaTeX方案

OPLaTeX在问题标题中明确指出了这一点。有一个名为的相关编译器,XeLaTeX旨在以比更流畅的方式处理外来字符LaTeX。我认为在这里提到它会很有用。我已经用它排版法语一段时间了,非常成功。序言中的以下代码将检查是否XeLaTeX正在被调用并相应地加载程序。

在下面的代码中,为了插入序言,我加载了公共域字体Libertine。这只是一个例子:在这种情况下,使用setmainfont命令选项设置字体非常繁琐,因此libertine创建了一个名为的特定包,以便更轻松地设置字体。

\usepackage[oldstyle]{libertine}% public domain font % alternative to \setmainfont line commented out below
\usepackage{ifxetex}% load different packages with/without XeLaTex
\ifxetex
    \usepackage{fontspec}% provides \setmainfont
    %\setmainfont[Numbers=OldStyle,Ligatures=Common,Mapping=tex-text]{Linux Libertine O}% public domain font % or use the libertine package instead
\else  % packages below are not needed with utf8 based engines
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern} 
\fi%

前段时间我查了一下,发现这是一个很好的组合(如果我错了,请专家纠正我)。我并不是专家XeLaTeX,我只是发现它对我的法语文本有很大帮助,所以最近才采用它。

相关内容