我想演示希伯来语中的各种变音符号。
Unicode 包含一个虚线圆圈U+25CC
符号,用于此目的。但是,当我尝试将它们组合在一起时,\texthebrew
这些字符却无法组合(与希伯来字母中的相同变音符号不同)。
奇怪的是,它们在外面使用时确实可以结合\texthebrew
:
但是,我将无法使用不支持希伯来语作为主要字体的字体。
如何在希伯来语文本中实现相同的组合行为?
现场演示:https://www.overleaf.com/read/pnzryjjgdgjs
完整可重现的示例:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Cardo}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew, Scale=MatchUppercase, Ligatures=TeX]{Cardo}
\title{hebrew combining circ}
\begin{document}
Here the diacritics render correctly: \texthebrew{בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים}
Here they are misaligned: \texthebrew{ְ◌}
It works outside of \textbackslash{}texthebrew: ְ◌
But then I cannot use a different font (Gentium).
\end{document}
我正在使用 LuaLaTeX。
答案1
在 Unicode 中,组合字符必须始终跟随它们应该与之组合的字母。因此,如果你想要将代码点 U+25CC(虚线圆圈)和 U+05B0(希伯来点 SHEVA)组合起来,你必须第一的写入 U+25CC,然后U+05B0。
另一方面,您的示例对它们的排序不同:首先是组合字符,然后是虚线圆圈。因此它们不组合。
如果你纠正顺序,你会得到
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Script=Hebrew]{Cardo}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Renderer=HarfBuzz,Script=Hebrew, Scale=MatchUppercase, Ligatures=TeX]{Cardo}
\title{hebrew combining circ}
\begin{document}
\showoutput
Here the diacritics render correctly: \texthebrew{בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים}
Here they are misaligned: \texthebrew{◌ְ}
It works outside of \textbackslash{}texthebrew: ◌ְ
But then I cannot use a different font (Gentium).
\end{document}
现在您可能想知道为什么它在 之外不再起作用\texthebrew
:由于 HEBREW POINT SHEVA 仅用于希伯来语,因此该字体仅包含针对希伯来语脚本的定位规则。因此,在 之外的放置\texthebrew
(脚本设置为拉丁语)基本上是随机的。