在 XeLaTex 中使用 Gentium Plus 字形

在 XeLaTex 中使用 Gentium Plus 字形

我正在尝试使用 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}

请注意,xltxtraxunicode不再推荐:相反,现在建议不是加载它们。我通过文件名加载了 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}

Gentium Plus 样品

您原来的 MWE 尝试使用 Babel 的 Polyglossia 命令(例如\greekfont),但这种方式行不通。我替换了\babelfont您的字体。此示例还需要明确的语言标记。(您可以在 LuaTeX 中将其删除。)

另一种方法是定义一个新的字体替代,它会自动替换 omicron + 组合抑扬符。这将涉及.mapXeTeX 中的 TEC 文件或 LuaTeX 中的 Lua 代码。

最后,尽管这种特定的替换恰好映射到 XeLaTeX 可以访问的字形范围内,但 Gentium Plus 将一些字形存储在 XeTeX 范围之外的位置。

相关内容