标准乳胶字体| 用于 Java 的 Aspose.TeX
本文包含了与乳胶一起分发的标准文本字体的简要介绍。然后,它涵盖了乳胶对输入和字体编码的标准支持。本文以描述用于追踪Latex的字体处理的软件包的描述,以及另一个用于显示字形图表的软件包。
4.1. 计算机现代罗马
唐纳德·诺斯(Donald Knuth)与德克萨斯(Tex)一起开发了一个名为 *计算机现代 *的字体家族。直到1990年代初,只有这些字体大多可用于Tex,因此与Latex一起使用。这些字体中的每一个仅包含128个字形,因此不能将重音字符作为单个字形。因此,使用这些字体意味着必须用Tex的\ accent
原始字符产生重音字符,这反过来意味着具有重音字符的单词的自动连字符是不可能的。尽管英语文档可以接受这种限制,但对于其他语言来说,这是一个明显的劣势。
这些不足对欧洲的Tex用户非常关注,并最终导致Tex在1989年重新实现,以在内部和外部支持8位角色。 1990年开发了针对文本字体的标准8位编码(t1
)。它包含许多图音符字符,并允许根据拉丁字母以30多种语言进行排版。然后,重新完成了计算机现代字体系列,并设计了其他字符,以使所得字体完全符合此编码方案。
4.2. 选择输入编码:inputenc
软件包
如果您可以通过单击键或某些其他输入方法键入强调字符(例如,按下``````````````````````````````````````
…理想情况下,您将直接与乳胶一起使用这样的文本,而不必键入``
使用法语和德语等语言,后一种方法是可行的。但是,对于像俄罗斯和希腊语这样的语言,需要直接输入的潜力,因为这些语言中的几乎每个字符都有一个命令名称作为其内部乳胶形式。例如 \ reftextafter
的默认俄罗斯定义包含以下文本(在下一页上为“在下一页”):
1\cyrn\cyra\ \cyrs\cyrl\cyre\cyrd\cyru\cyryu\cyrshch\cyre\cyrishrt
2\ \cyrs\cyrt\cyrr\cyra\cyrn\cyri\cyrc\cyre
不可能有人想定期键入此类内容。但是,它具有普遍便携的优势,因此可以在任何乳胶安装上正确解释它。另一方面,打字
在适当的键盘上,如果可以使乳胶理解此输入,则显然是可取的。问题在于,存储在文件中的不是我们在上面序列中看到的字符,而是代表字符的八位字节。在不同的情况下(使用不同的编码),相同的八位字可以代表不同的字符。
只要一切都发生在一台计算机上,并且所有程序都以相同的方式解释文件中的八位字,通常一切都很好。如果是这样,则有意义地激活一种自动翻译机制,该机制内置在最近的TEX实现中。但是,当在这种环境中产生的文件被发送到另一台计算机时,处理可能会失败,甚至更糟的是,似乎成功了,但实际上会通过显示不正确的字符来产生错误的结果。 创建了“输入软件包”来应对此问题。其主要目的是将文档中使用的编码或文档的一部分通知乳胶。这是通过将包装名称加载为选项来完成的。例如:
1\usepackage[cp1252]{inputenc} % Windows 1252 (Western Europe) code page
从那时起,乳胶就知道如何在任何安装上解释文档其余部分中的八位字,而不管该计算机上用于其他目的的编码。
一个典型的示例如下所示。这是用koi8-r
编码”编写的简短文字,该文字在俄罗斯很受欢迎。源代码使用拉丁语1编码(例如在德国)显示了在计算机上的文本外观。输出表明乳胶仍然能够正确解释文本,因为它被告知使用了哪些输入编码。
下面提供了“输入”当前支持的编码列表。该接口有充分的文献记载,可以轻松添加对新编码的支持。因此,如果您的计算机使用的编码未在此处列出,则值得咨询“ Inputenc”软件包文档。您还可以搜索Internet以获取由其他作者创建的“ Inputenc”的编码文件。例如,与西里尔语言有关的编码以及其他字体支持包的分布式。
ISO-8859标准定义了许多重要的单字节编码。与拉丁字母相关的编码由`iputenc’支持。对于Windows操作系统,Microsoft定义了许多单字节编码。此外,还有其他计算机供应商定义的一些编码。
latin1
这是ISO-8859-1编码(又称拉丁语1)。它可以代表大多数西欧语言,包括阿尔巴尼亚语,加泰罗尼亚州,丹麦语,荷兰语,英语,法罗伊斯,法鲁语,法语,加利西亚语,德语,冰岛,爱尔兰语,意大利语,挪威语,挪威语,葡萄牙语,西班牙语和瑞典语。latin2
ISO Latin 2编码(ISO-8859-2)支持中欧使用拉丁字母的语言。它可以用于以下语言:克罗地亚,捷克,德语,匈牙利,波兰语,罗马尼亚语,斯洛伐克和斯洛文尼亚语。latin3
这个角色集(ISO-8859-3)用于爱斯越南,加利西亚人,马耳他和土耳其语。latin4
ISO Latin 4编码(ISO-8859-4)可以代表爱沙尼亚语,拉脱维安和立陶宛语等语言。latin5
ISO Latin 5编码(ISO 8859-9)与拉丁语1密切相关,并用土耳其字母代替了拉丁语1的少数使用的冰岛字母。latin9
拉丁语9(或ISO-8859-15)是拉丁语1的另一个小变化,它添加了欧洲货币标志以及其他一些字符,例如法语和芬兰语中缺少的“ \ ae”韧带。作为替代拉丁语1的替代者,它变得越来越流行。cp437
IBM 437代码页(MS-DOS拉丁语,但包含许多图形字符以绘制框)。cp850
IBM 850代码页(MS-DOS多语言,类似于Latin1)。cp852
IBM 852代码页(MS-DOS多语言,类似于Latin2)。cp858
IBM 858代码页(IBM 850带有欧元符号)。cp865
IBM 865代码页(MS-DOS挪威)。cp1250
Windows 1250(中欧和东欧)代码页。cp1252
Windows 1252(西欧)代码页。cp1257
Windows 1257(波罗的海)代码页。ansinew
Windows 3.1 ANSI编码; CP1252的同义词。decmulti
dec跨国字符集编码。- “ Applemac” Macintosh(标准)编码。
Macce
Macintosh中欧代码页。Next
计算机编码。utf8
unicode的UTF8编码支持。 默认情况下,大多数TEX安装都接受8位字符。然而,如果没有进一步的调整,例如Inpuenc
执行的调整,结果可能是不可预测的:某些字符可能会消失,或者您可能会在八位字体位置的当前字体中显示出任何字符,这可能是所需的Glyph,也可能不是所需的Glyph。这种行为是很长一段时间以来的默认值,因此乳胶2e没有更改,因为有些人依靠它。但是,为了确保可以捕获此类错误,Inputenc
提供了选项ascii
,这使得在32-126非法范围之外的任何字符。
1\inputencoding{encoding}
最初,“ Inputenc”软件包旨在指定整个文档使用的编码 - 因此在序言中使用选项。但是,可以使用命令\inputenCoding
在文档中间更改文档中间的编码。此命令以编码为参数的名称。
开发“输入”时,大多数乳胶安装都在计算机上使用单字节编码,如本节中所讨论的那样。但是,今天另一个编码很流行,因为系统为Unicode提供了支持:UTF8. 此可变长度编码代表一到四个八位字中的Unicode字符。通过选项`utf8’将编码支持添加到“输入”中。从技术上讲,它不能提供完整的UTF8实现。只有在标准乳胶字体中具有某些表示的Unicode字符才能映射(即主要是拉丁语和西里尔字符集):所有其他字符都会导致合适的错误消息。此外,尽管在实践中,该特定的遗漏不应该是一个问题,但不支持Unicode组合字符。
1\usepackage[utf8]{inputenc}
2\usepackage{textcomp} % for Latin interpretation
3-----------------------------------------------
4German umlauts in UTF-8: ^^c3^^a4^^c3^^b6^^c3^^bc
5\par\inputencoding{latin1}% switch to Latin 1
6But interpreted as Latin 1: ^^c3^^a4^^c3^^b6^^c3^^bc
在UTF8中,ASCII字符代表自己,大多数拉丁字符由两个字节表示。在示例的源代码中,在Tex的十六进制符号中显示了UTF8中德国UMLAUTS的两字节表示法,每个八位位于每个八位位之前都有^^
。在不了解UTF8的编辑器中,可能会认为它们与将其解释为拉丁1个字符时产生的输出相似。
Dominique Unruh撰写的“ UCS”软件包,具有更全面的UTF8支持(包括对韩语,中文和日本角色的支持)的包装。如果“输入解决方案”不满足您的需求,则可以尝试。
4.3. 使用“ Fontenc”软件包选择字体编码
要启用用于与乳胶一起使用的文本字体编码,必须将编码加载到序言或文档类中。更确切地说,必须加载具有特定编码字体的字形的字形的定义。执行此操作的规范方法是通过“ Fontenc”软件包,该软件包以逗号分隔的字体编码列表作为软件包选项。这些编码的最后一个自动使默认文档编码。如果加载了Cyrillic编码,则会自动扩展受\ makeuppercase
和`\ MakeLowerCase’的命令列表。例如,
1\usepackage[T2A,T1]{fontenc}
将加载所有必要的定义,用于西里尔式t2a'和
t1`编码,并将后者设置为默认文档编码。
与普通的软件包行为不同,可以多次加载此软件包,并使用\usepackage
命令使用不同的选项。这是允许文档类加载一组编码的必要条件,并使用户能够在序言中加载更多的编码。除了可能更改文档默认字体编码外,加载编码不止一次,而没有其他副作用。
如果文档中使用了语言支持软件包(例如,使用 babel系统的套件),通常情况下,支持软件包已经加载了必要的字体编码。
4.4. 如何使用“ TraceFnt”软件包跟踪字体选择
要检测字体选择系统中的问题,您可以使用tracefnt
软件包。它支持几个选项,这些选项允许自定义NFSS在屏幕上和成绩单文件中显示的信息量。
- “错误”此选项抑制了终端上的所有警告和信息消息;它们将仅写入成绩单文件。仅显示实际错误。在打印重要出版物之前,您应该仔细研究成绩单文件,因为有关字体替换的警告等可能意味着最终结果将是不正确的。
- “警告”当指定此选项时,终端显示了警告和错误。此设置为您提供详细信息,就像lastx2e一样,没有加载
tracefnt
软件包。 - 加载
tracefnt
软件包时infoshow
是默认选项。现在,通常仅写入成绩单文件的额外信息现在也显示在您的终端上。 - “ DebugShow”此选项还显示了有关文本字体更改以及在支撑组末尾或环境结束时恢复此类字体的信息。打开此选项时要小心,因为它可以产生非常大的成绩单文件。
- “暂停”此选项将所有警告变成错误,以帮助检测重要出版物中的问题。
- “加载”此选项显示外部字体的加载。但是,如果您使用的格式或文档类已经加载了一些字体,则此选项不会显示这些字体。
4.5. 如何用nfssfont.tex显示字体表和样品
称为nfssfont.tex
的文件可用于测试新字体,生成字体表显示所有字符,并执行与字体相关的其他操作。您可以在任何乳胶发行版中找到此文件。当您通过乳胶运行此文件时,将提示您进行测试字体的名称。答案可以是没有扩展名的外部字体名称,例如cmr10
(计算机现代罗马10pt) - 如果您知道,或一个空字体名称。在后一种情况下,将提示您进行NFSS字体规范:编码名称(默认t1
),字体姓名(默认为cmr),字体串联(默认为m
),字体形状(默认为n'n
),以及字体大小(default10ptept
)。然后,程序加载与该分类相对应的外部文件。
接下来,将要求您输入命令。最重要的一个可能是\ table
,它产生了一个字体图表,如下图。命令\text
也很有趣,因为它会产生更长的文本样本。要切换到新的测试字体,请键入 \ init
;要完成测试,请键入\ bye
或\ stop
;要了解所有其他可用测试,请键入\ help
。
1**********************************************
2* NFSS font test program version <v2.2b>
3*
4* Follow the instructions
5**********************************************
6
7Input external font name, e.g., cmr10
8(or <enter> for NFSS classification of font):
9
10\currfontname=cmr10
11Now type a test command (\help for help):)
12*\table
13
14*\newpage
15*\init
16Input external font name, e.g., cmr10
17(or <enter> for NFSS classification of font):
18
19\currfontname=
20*** NFSS classification ***
21
22Font encoding [T1]:
23
24\encoding=OT1
25(ot1enc.def)
26Font family [cmr]:
27
28\family=cmdh
29Font series [m]:
30
31\series=m
32Font shape [n]:
33
34\shape=n
35Font size [10pt]:
36
37\size=10
38(ot1cmdh.fd) Now type a test command (\help for help):
39*\text
40
41*\bye
有两点需要注意。首先,
nfssfont.tex
程序会发出一个隐式的\init
命令,因此输入的第一行应该包含字体名称或完全为空,以指示接下来是 NFSS 分类。其次,\init
的输入必须单独成行,不包含任何其他内容(甚至注释也不行),因为行尾表示对类似Font encoding[T1]:\encoding=
的提示的响应结束。