使用 XeLaTeX 导入的字体 - 一个字体符号代表多个拉丁字母

使用 XeLaTeX 导入的字体 - 一个字体符号代表多个拉丁字母

我正在将自己制作的自定义字体导入到我的文档中,并使用 XeLaTeX 对其进行编译。为了便于讨论,我们将该字体命名为“MyFont”。

\documentclass{article}
\font\myfont="MyFont" at 12pt
\begin{document}

{\myfont Hello, world!}

\end{document}

因此结果是首先显示与“H”关联的字符,然后显示与“e”关联的字符,依此类推。由于此特定字体实际上是古代符文的近似,因此显示的字符与英语发音有些相似,但并不总是与单个字母相似。例如,一个字母的发音类似于英语混合词“ngh”,而有些则类似于“a”。

因此,我希望能够输入时{\myfont a{ngh}}只显示两个符号。我使用花括号括住“ngh”,以表明这是导入字体中的一个符号,但它可以是任何其他分隔符。

这些符号是 1、2 或 3 个英文字母的近似值。如能提供任何帮助,我们将不胜感激!

答案1

首先,你永远不应该\font直接在 LaTeX(或 XeLaTeX,两者的区别仅在于使用的引擎)中使用。fontspec界面好得多。

\documentclass{article}
\usepackage{fontspec}

\newfontface{\myfont}[Mapping=jimbo,Scale=1.2]{Junicode}

\begin{document}

{\myfont abcnghd}

{\myfont abc/nn/d}

\end{document}

这是结果(我使用 Junicode 而不是你的符文字体)。

在此处输入图片描述

您会注意到abcnghd第一行变成了“abcZd”,abc/nn/d第二行变成了“abcYd”。我该怎么做呢?

我准备了一个jimbo.map文件,复制了标准tex-text.map文件(你可以在 TeX 发行版中找到它),然后修改它以读取

; TECkit mapping for TeX input conventions <-> Unicode characters

LHSName "TeX-text"
RHSName "UNICODE"

pass(Unicode)

; ligatures from Knuth's original CMR fonts
U+002D U+002D           <>  U+2013  ; -- -> en dash
U+002D U+002D U+002D    <>  U+2014  ; --- -> em dash

U+0027          <>  U+2019  ; ' -> right single quote
U+0027 U+0027   <>  U+201D  ; '' -> right double quote
U+0022           >  U+201D  ; " -> right double quote

U+0060          <>  U+2018  ; ` -> left single quote
U+0060 U+0060   <>  U+201C  ; `` -> left double quote

U+0021 U+0060   <>  U+00A1  ; !` -> inverted exclam
U+003F U+0060   <>  U+00BF  ; ?` -> inverted question

; additions supported in T1 encoding
U+002C U+002C   <>  U+201E  ; ,, -> DOUBLE LOW-9 QUOTATION MARK
U+003C U+003C   <>  U+00AB  ; << -> LEFT POINTING GUILLEMET
U+003E U+003E   <>  U+00BB  ; >> -> RIGHT POINTING GUILLEMET

; ADDITIONS FOR JimboBimbo start here    
; ligatures for the runic font

U+006E U+0067 U+0068        <> U+005A ; ngh -> Z
U+002F U+006E U+006E U+002F <> U+0059 ; /nn/ -> Y

应该清楚的是,此映射将每个ngh簇转换为 ,Z并将每个/nn/簇转换为Y。字体已加载规范Mapping=jimbo,因此此操作仅针对该字体执行。

映射文件应该用以下teckit_compile实用程序进行编译:

teckit_compile jimbo.map

将生成一个jimbo.tec您应保存在工作目录中(或 XeTeX 搜索树中的任何其他目录中)的文件。

您应该选择哪种输入形式?这取决于您。如果每一个 nghcluster 应该被转换成Z,就使用第一种形式,它更容易输入。否则,选择一个未使用的字符(这里我选择了/)来对 cluster 进行分组。

相关内容