XeLaTeX:变音符号问题(使用 Gentium 字体)

XeLaTeX:变音符号问题(使用 Gentium 字体)

使用 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}

相关内容