使用 XeLaTeX 和 Gentium 字体时,我在 ' ї ' (U+0457) 符号中得到了三个变音点,而不是两个。这可能只是 Gentium 的问题,因为其他字体都可以正常工作。
\documentclass[12pt,a4paper]{article}
\usepackage{polyglossia}
\newfontfamily\cyrillicfont[Script=Cyrillic]{Gentium}
\setdefaultlanguage{ukrainian}
\begin{document}
ї % three diacritical points - wrong symbol
\"\i % right symbol
\ Ї % right capital symbol (U+0407)
\end{document}
答案1
字符 U+0457 在 Gentium 中不存在,因此\"i
被使用,这显然是错误的。
您可以使用newunicodechar
来测试字符是否存在:
\documentclass[12pt,a4paper]{article}
\usepackage{polyglossia}
\newfontfamily\cyrillicfont[Script=Cyrillic]{Gentium}
\setdefaultlanguage{ukrainian}
\usepackage{newunicodechar}
\newunicodechar{ї}{\iffontchar\font`її\else\"\i\fi}
\begin{document}
ї % right symbol
\"{\i} % right symbol
Ї % right capital symbol (U+0407)
\end{document}
答案2
详细说明 egreg 的答案,发生的事情是 HarfBuzz(XeTeX 使用的 OpenType 布局引擎)会尽力呈现任何给定的章程,并且由于 Gentium 不支持 U+0457,它会尝试将其分解为规范等效的分解形式;U+0457 + U+0308,因为两者都受字体支持。但是,字体无法正确处理将 U+0457 与变音符号组合(它是一个软点字符,因此与组合符号组合时应该会丢失点),因此这被认为是字体错误。请参阅此 HarfBuzz 邮件列表线对此进行更多讨论。
答案3
Gentium 本身不具备智能功能。我们建议使用 Gentium Plus,它具有 SIL 其他罗马字体(Charis、Andika、Doulos)中的全部智能功能。
答案4
Gentium Basic 比 Gentium 的权重更大,但字符集更小,而 Gentium Plus 在 Gentium 的基础上进行了扩展,几乎完全支持拉丁语、西里尔语和希腊语。请参阅Gentium 常见问题解答如果您想了解更多详细信息。为了达到您的目的,只需更改\newfontfamily\cyrillicfont[Script=Cyrillic]{Gentium}
为\newfontfamily\cyrillicfont[Script=Cyrillic]{Gentium Plus}
。