我正在尝试使用 macOS 上的 Gentium Plus 字体输入 PUA 字符(例如 omicron 和 perispomeni)。
我尝试使用 babel 和 fontspec 将 Gentium Plus 设置为希腊语字体,但似乎不起作用。我只得到一个空白方块作为替换字符。我假设 LaTeX 无法识别该字符,因此无法调用正确的字形,但不知道如何纠正。
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[12pt]{article}
\usepackage{fontspec,xltxtra,xunicode}
\defaultfontfeatures{Mapping=tex-text}
\setromanfont[Mapping=tex-text]{Times New Roman}
\newfontfamily\greekfont{Gentium Plus}
\usepackage[greek.ancient,english,spanish]{babel}
\begin{document}
υσσκι κατὰ σκιρ�ν
\end{document}
答案1
Font Book 会告诉你字形编号,在本例中是 3232,因此你可以使用\XeTeXglyph3232
但是,您可以使用组合
U+03BF 希腊文小写字母 OMICRON
U+0342 结合希腊文 PERISPOMENI
如下例代码第二行所示。
\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage[greek.ancient,english,spanish]{babel}
\setmainfont{Times New Roman}
\newfontfamily\greekfont{GentiumPlus}[
Extension=.ttf,
UprightFont=*-R,
ItalicFont=*-I,
]
\begin{document}
\greekfont
υσσκι κατὰ σκιρ\XeTeXglyph3232 ν
υσσκι κατὰ σκιρο͂ν
\end{document}
请注意,xltxtra
和xunicode
不再推荐:相反,现在建议不是加载它们。我通过文件名加载了 Gentium Plus,因为在我的计算机上似乎看不到系统字体。
答案2
您可以将其声明为 的文本复合命令\^
。此示例将^{ο}
(其中 ο 是希腊文 omicron) 替换为 o-with-tilde 的字形。
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[12pt]{article}
\tracinglostchars=3 % Halt with error if a glyph is missing.
\usepackage[greek.ancient,english,spanish]{babel}
\usepackage{fontspec}
\usepackage{inputnormalization}
\defaultfontfeatures{Ligatures=TeX}
\babelfont{rm}{Times New Roman}
\babelfont[greek]{rm}
[Scale=MatchLowercase]{Gentium Plus}
\DeclareTextComposite{\^}{TU}{^^^^03bf}{"F5} % Small omicron with perispomeni
\begin{document}
\foreignlanguage{greek}{υσσκι κατὰ σκιρ\^{ο}ν}
\end{document}
您原来的 MWE 尝试使用 Babel 的 Polyglossia 命令(例如\greekfont
),但这种方式行不通。我替换了\babelfont
您的字体。此示例还需要明确的语言标记。(您可以在 LuaTeX 中将其删除。)
另一种方法是定义一个新的字体替代,它会自动替换 omicron + 组合抑扬符。这将涉及.map
XeTeX 中的 TEC 文件或 LuaTeX 中的 Lua 代码。
最后,尽管这种特定的替换恰好映射到 XeLaTeX 可以访问的字形范围内,但 Gentium Plus 将一些字形存储在 XeTeX 范围之外的位置。