答案1
Adobe Garamond 不编码ǎ
(U+01CE LATIN SMALL LETTER A WITH CARON) 并且缺失̌
(U+030C COMBINING CARON)。我能想到两个解决方案:
使用不同的字体。市面上有很多不错的 Garamond 衍生字体,它们没有这种参差不齐的编码(并且是非商业性的!)。
\documentclass[margin=10pt]{standalone} \usepackage{xeCJK,xpinyin} \setmainfont{EB Garamond} \begin{document} \xpinyin*{学而不思则罔} \end{document}
\documentclass[margin=10pt]{standalone} \usepackage{xeCJK,xpinyin} \setmainfont{Cormorant Garamond} \begin{document} \xpinyin*{学而不思则罔} \end{document}
将
ǎ
(U+01CE 拉丁小写字母 A 带卡隆) 重新映射到其他内容。在这里,我将其映射到常规a
(U+0061 拉丁小写字母 A)。下面的映射源自标准tex-text
映射。acaron.map
LHSName "acaron" RHSName "a" pass(Unicode) ; replace acaron with a U+01CE > U+0061 ; ; 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
我使用 TECkit 工具编译映射。
teckit_compile -u acaron.map -o acaron.tec
之后它可以在 XeLaTeX 中使用。
\documentclass[margin=10pt]{standalone} \usepackage{xeCJK,xpinyin} \setmainfont[Mapping=acaron]{Adobe Garamond Pro} \begin{document} \xpinyin*{学而不思则罔} \end{document}
您还可以选择映射
U+01CE > U+02C7 U+0061 ;
,即 caron 后跟 a,然后呈现为这虽然不太好看但至少保留了意义。