标准乳胶字体| 用于 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定义了许多单字节编码。此外,还有其他计算机供应商定义的一些编码。

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

在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在屏幕上和成绩单文件中显示的信息量。

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

CMR10的字体图表

OT1/CMDH/M/N/10的文本样本

有两点需要注意。首先,nfssfont.tex 程序会发出一个隐式的 \init 命令,因此输入的第一行应该包含字体名称或完全为空,以指示接下来是 NFSS 分类。其次,\init 的输入必须单独成行,不包含任何其他内容(甚至注释也不行),因为行尾表示对类似 Font encoding[T1]:\encoding= 的提示的响应结束。

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.