我正在将自己制作的自定义字体导入到我的文档中,并使用 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 搜索树中的任何其他目录中)的文件。
您应该选择哪种输入形式?这取决于您。如果每一个 ngh
cluster 应该被转换成Z
,就使用第一种形式,它更容易输入。否则,选择一个未使用的字符(这里我选择了/
)来对 cluster 进行分组。