![MWE 1:它有效](https://linux22.com/image/428127/MWE%201%EF%BC%9A%E5%AE%83%E6%9C%89%E6%95%88.png)
当我使用ucharclasses
XeLaTeX 自动更改希腊文本的字体时,我发现它有时会在希腊文本中的错误位置插入过渡。 (注意:我使用选项GreekExtended
是ucharclasses
因为我的希腊文本使用各种重音符号和呼吸符号,这是古希腊语排版的常规做法。)
具体来说,如果希腊语的第一个字符带有重音或呼吸符号,它看起来会正常工作,否则则不会(或并非总是如此)。(这个问题似乎与这个,但我不确定如何将那里给出的部分答案应用到我的问题上。)
有没有什么办法可以解决这个问题?
MWE 1:它有效
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[12pt]{article}
\usepackage{fontspec}
\newfontfamily\defaultfont[Mapping=tex-text]{Times}
\newfontfamily\greekfont{Gentium}
\usepackage[Latin, GreekExtended]{ucharclasses}
\setDefaultTransitions{\defaultfont}{}
\setTransitionsForGreek{\greekfont}{}
\begin{document}
Latin text.
ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ
\end{document}
输出是正确的,拉丁语Times
和希腊语Gentium
分别是我选择使用的字体。
MWE 2:当第一个希腊字符没有重音时不起作用
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[12pt]{article}
\usepackage{fontspec}
\newfontfamily\defaultfont[Mapping=tex-text]{Times}
\newfontfamily\greekfont{Gentium}
\usepackage[Latin, GreekExtended]{ucharclasses}
\setDefaultTransitions{\defaultfont}{}
\setTransitionsForGreek{\greekfont}{}
\begin{document}
Latin text.
μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ
\end{document}
这次,删除了第一个单词后,字体就不正确了:特别是,第一个单词 μοι 出现在字体中Times
(我已将其设置为默认字体),尽管其余的希腊文本出现在字体中Gentium
(我已将其设置为希腊字体)。
答案1
GreekExtended
涵盖以下范围的 unicode:
\do{GreekExtended}{"01F00}{"01FFF}
Greek
是一个结合了四个范围的类:
\def\GreekClasses{
\do{Coptic}
\do{CopticEpactNumbers}
\do{GreekAndCoptic}
\do{GreekExtended}
}
这些封面
\do{GreekExtended}{"01F00}{"01FFF}
\do{GreekAndCoptic}{"0370}{"03FF}
\do{Coptic}{"02C80}{"02CFF}
\do{CopticEpactNumbers}{"0102E0}{"0102FF}
并包括希腊语扩展版。
Greek
更通用的设置也是如此。