我曾经使用过这个宏来处理希伯来字体:
\newfontfamily\hebfont[Script=Hebrew]{DejaVuSans}
\newcommand{\hebrew}[1]{{{\textdir TRT\hebfont #1}}}
前段时间我不得不把它改成
\newfontfamily\hebfont
[
Script=Hebrew,
%Scale=MatchUppercase,
%Ligatures=TeX,
% Weird Bug with styled hebrew: The letter get replaced by their successor in the alphabet,
% e.g. aleph to bet, bet to gimmel
ItalicFont=*,
BoldFont=*,
BoldItalicFont=*,
]{DejaVuSans}
\newcommand{\hebrew}[1]{{{\textdir TRT\hebfont #1}}}
因为字符被其后继字符替换(aleph 替换为 bet,bet 替换为 gimmel,……)。此修复在一段时间内有效,因为此错误仅出现在格式化文本中,但现在它也出现在正常字体中。当我选择并复制文本时,我得到了正确的文本。我不知道如何调试它。
\documentclass{scrreprt}
\usepackage{fontspec}
\newfontfamily\hebfont[Script=Hebrew]{DejaVuSans}
\newcommand{\hebrew}[1]{{{\textdir TRT\hebfont #1}}}
\begin{document}
\hebrew{כל המקיים נפש אחת, כאילו קיים עולם מלא.}
\end{document}