使用 xepersian 时希腊字母的字体不正确

使用 xepersian 时希腊字母的字体不正确

我想在文本中使用 Helvetica 字体的希腊字母。当我编译英文版的代码时,我得到了正确的格式。我的意思是,当我编译以下代码时

\documentclass[12 pt]{article}
\usepackage{textgreek}
\usepackage{helvet}
\renewcommand\familydefault{\sfdefault}
%\usepackage{xepersian}
%\settextfont{Yas}


\begin{document}
\textPsi 

\textlambda
\end{document}

我得到了我想要的结果

在此处输入图片描述

但是当我启用xepersian包时,

\documentclass[12 pt]{article}
\usepackage{textgreek}
\usepackage{helvet}
\renewcommand\familydefault{\sfdefault}
\usepackage{xepersian}
\settextfont{Yas}


\begin{document}
\textPsi 

\textlambda
\end{document}

我明白了

在此处输入图片描述

这不是我想要的。我使用xepersian包时如何才能出现第一种情况?

答案1

这里的问题是,您试图将现代字体与 20 世纪 80 年代的传统 7 位字体编码结合起来,但实际上您根本没有在 Helvetica 中显示希腊字母。由于xepersian加载了,您应该只加载现代希腊字体。使用 时,您还应该在命令或环境fontspec中显示从左到右的文本。\lrlatinxepersian

您喜欢的那个来自cbgreek,并且 Computer Modern Unicode 中的字形基于此。选择Script=Greek可获得看起来像现代希腊语的字形,Script=Default选择 可获得看起来像经典 TeX 中的数学符号的字形。

如果您想要与文本字体更匹配的字体,Arial 与 Helvetica 相似,但(与 TeX Gyre Heros 不同)包含希腊字母,或者您可以尝试使用希腊字体协会提供的免费字体,例如 GFS Neohellenic。

\documentclass[12 pt]{article}
\tracinglostchars=2 % Warn you if a character is missing!
\usepackage[paperwidth=10cm]{geometry} % Solely to format the MWE on TeX.SX.
\usepackage{fontspec}
\usepackage{xepersian}

\defaultfontfeatures{Scale=MatchUppercase}
\settextfont{XB Yas}
\setlatintextfont{Arial}
\setlatinsansfont{Arial}
\deflatinfont\Greekfont[Script=Greek]{CMU Serif}

\DeclareTextFontCommand\textgreek{\Greekfont}

\newcommand\textPsi{Ψ}
\newcommand\textlambda{λ}

\begin{document}
\begin{latin}
Some text.  \textPsi \textlambda

Greek font: \textgreek{\textPsi \textlambda}
\end{latin}

\rl{خشایارشا} \lr{\textgreek{Ξέρξης} Xerxes}
\end{document}

字体示例

如果你需要greek一个像 中的环境polyglossia来显示完整的段落,你可以这样定义

\newenvironment{greek}{\begin{latin}\Greekfont}{\end{latin}}

尽管此时您确实想要加载一个支持连字模式的包。

不幸的是,fontspec没有声明诸如\textAlpha和 之类的宏\textbeta。在这里,我在序言中声明了它们,但是如果您还加载了unicode-math,则该包会将它们声明为\mupAlpha\mupbeta等。

最后,如果您只需要希腊符号而不是单词,您可以加载您喜欢的数学字体并\(\Psi \lambda\)在数学模式下使用。

相关内容