在 XeTeX 中将某个 Unicode 字符替换为另一个

在 XeTeX 中将某个 Unicode 字符替换为另一个

我使用 XeLaTeX 和 XePersian 编写波斯语文档。不幸的是,波斯语中一些常用的字体不支持重要的字符,例如ی所以我应该用阿拉伯语来代替它们,比如ي以获得预期结果。其他一些人支持它,所以我应该恢复更改。

我无法将 ی 中的每个字符都替换为 ي,因为这样,我的波斯语宏和本地化的 XePersian 命令将失败,如果我手动执行此操作,则在更改字体后,我将不得不再次执行此操作。当然,这可以在字体级别修复,但我无法编辑字体。:-/

我的问题是,从宏观层面上来说,是否可以用 ي 代替 ی?

我尝试了这个,但是没有用:

\documentclass[14pt,a4paper]{article}
\usepackage[localised]{xepersian}
\settextfont{Arial}

\defی{ي}

\begin{document}
می‌شود.

% added to show the problem with the localised commands
% even without it, it won't compile when placing replace commands
%before including xepersian
\سطرجدید %it means new line
\newline

\end{document}

答案1

与 Tobi 的答案本质上没有区别,但替代更为强大。

\documentclass[a4paper]{article}
\usepackage{xepersian}
\usepackage{newunicodechar}
\settextfont{Arial}

\newunicodechar{ی}{ي}

\begin{document}
می‌شود.
\end{document}

(事情似乎是反过来的,我不明白当涉及到阿拉伯语时编辑器会做什么。)

在此处输入图片描述

答案2

您可以使用 将所写的字符变为活动字符\catcode,然后将其定义为其他字符:

\documentclass[14pt,a4paper]{article}
\usepackage{xepersian}
\settextfont{Arial Unicode MS}

\catcode`\ی=\active
\def ی{ي}

\begin{document}
می‌شود.
\end{document}

(我必须更改系统上的字体)

相关内容