根据 Unicode 块自动更改 XeTeX 字体

根据 Unicode 块自动更改 XeTeX 字体

我想从 p(La)TeX(Unicode 时代之前专门针对日语的 TeX 系统)转移到 Xe(La)TeX,但我遇到了问题。

在 p(La)TeX 中,日文字体仅用于非 ASCII 字符,而 ASCII 字符在 Computer Modern 或 Times 等中的排版与标准 TeX 中的排版相同。

我希望 Xe(La)TeX 也能有类似功能。换句话说,我希望 Xe(La)TeX 根据 Unicode 块使用不同的字体,例如 CJK 统一表意文字或埃塞俄比亚文字或楔形文字,请参阅列表在这里

使用 XeLaTeX 和 fontspec 可以实现吗?还是我必须破解 XeTeX 的源代码才能实现?

(有一个非常类似的问题被问到这里,不过我还是在这里再问一遍,希望过去六个月的情况有所改变。)

答案1

只需使用xeCJK日语。一个简单的例子:

\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{MS Mincho} % for \rmfamily
\begin{document}
おはよう VS Good morning
\end{document}

也可以看看:

如何用 LaTeX 写日语?

xeCJK处理自动字体切换、换行、标点和字符间距。它最初是为中文排版设计的,但据我所知,它对日文和韩文也很好用。


另一个包是fontwrap。它使用 Perl 脚本来切换不同 Unicode 块的字体。我个人并不喜欢它。


对于 CJK 脚本,xeCJK是合适的。对于东亚语言以外的语言,应该使用polyglossia带有 XeLaTeX 的软件包。polyglossiababelXeLaTeX 的替代品,但字体切换不是自动的。请注意,xeCJK与不兼容polyglossia;它们都使用该\XeTeXinterchartoks机制,但现在很难让它们很好地协同工作。(目前,它根本不起作用。)

答案2

为了完整起见,我想为更普遍的情况添加一个答案,不仅可以切换 CJK unicode 块,还可以切换其他块(正如问题所暗示的那样)。

您可以使用专门为此设计的软件包ucharclasses。它还允许您切换其他脚本,如阿拉伯语、梵文或多米诺骨牌。它这样做的方式还允许您将排版从 RTL 更改为 LTR,反之亦然(如果其他脚本之一需要这样做)。

您可以在这里找到该包:http://www.ctan.org/tex-archive/macros/xetex/latex/ucharclasses

相关内容