![fi、fl、ffl 的连字符不适用于 Times New Roman (XeLaTeX)](https://linux22.com/image/306375/fi%E3%80%81fl%E3%80%81ffl%20%E7%9A%84%E8%BF%9E%E5%AD%97%E7%AC%A6%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%20Times%20New%20Roman%20(XeLaTeX).png)
当我使用 XeLaTeX(使用 TeXworks)编译下面的代码时,Times New Roman 的连字符不会显示。相反,我只得到单数字符。
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Mapping=tex-text,Ligatures=TeX,Scale=1.05]{Times New Roman}
\begin{document}
Ligatures: fi fl ffl
\end{document}
我已经尝试过Ligatures={Common}
并且Ligatures={Common, TeX}
代替Ligatures=TeX
(在这答案),但没有区别。我检查了 Times New Roman (v.6.85) 的字体图,Unicode 字符 FB01 和 FB02 都具有预期的连字符。
但是,当我不指定字体时,上面的内容(因此在 Computer Modern 中设置)做有连字符。
对我来说,使用 Times New Roman 并不是很重要,但它有 IPA 字符(我的语言学论文需要),以及旧式数字和小型大写字母(我喜欢)。
有什么办法可以让 Times New Roman 显示这些连字符吗?
答案1
准备一个新的地图文件,我称之为rijke.map
; 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 f ligatures
;U+0066 U+0066 U+0069 <> U+FB03 ; LATIN SMALL LIGATURE FFI
;U+0066 U+0066 U+006C <> U+FB04 ; LATIN SMALL LIGATURE FFL
;U+0066 U+0066 <> U+FB00 ; LATIN SMALL LIGATURE FF
U+0066 U+0069 <> U+FB01 ; LATIN SMALL LIGATURE FI
U+0066 U+006C <> U+FB02 ; LATIN SMALL LIGATURE FL
基础是tex-text.map
TeX Live 中的标准文件。“ff”连字符被注释掉了,因为我的 Times New Roman 不支持它们。
现在编译它
teckit_compile rijke.map
这将生成一个rijke.tec
文件;如果你将它保存在文档中,输入
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Mapping=rijke,Scale=1.05]{Times New Roman}
\begin{document}
Ligatures: ff ffi ffl fi fl
\end{document}
将产生
答案2
在 Windows 10 1803 中,Times New Roman 似乎已更新至 7.00 版本,并且添加了一些(更多)连字符(但添加到了dlig
查找中,而不是更广泛使用的liga
)。然后我们可以使用fontspec
来打开此功能:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\begin{document}
\verb|Default: |
fi fj fl ff ffi ffj ffl Th
\verb|Ligatures=Discretionary: |
{\fontspec{Times New Roman}[Ligatures=Discretionary] % or `Ligatures=Rare`
fi fj fl ff ffi ffj ffl Th}
\end{document}