我正在修改一个 .sty 文件,该文件用于包含拉丁文、阿拉伯文和日文文本的文档,这些文本混杂在一起,没有特定的标记。我用它xeCJK
来识别日文文本和ucharclasses
阿拉伯文。我不受这些的限制,但我需要一些可以在文档中切换字体而无需标记的东西。
然而,我注意到该ucharclasses
软件包在某些(相当模糊的)情况下会导致日文文本周围出现额外的空格。以下是 MWE:
\documentclass{article}
\usepackage[no-math]{fontspec}
\setmainfont{Noto Serif}
\usepackage{xeCJK}
\setCJKmainfont{Noto Sans CJK JP}
%\usepackage[Latin,Arabic]{ucharclasses}
\begin{document}
``\texttt{めいじ}''
\end{document}
注释掉该ucharclasses
行之后,我得到了下面图像的第一行,这正是我所期望的;启用该行之后,我得到了第二行,其中平假名字符周围的空格太多:
间距可能与 xelatex 尝试使用双倍宽度等宽引号一致,尽管它超出了块\texttt
,但这可能是一个转移注意力的借口。然而,没有块,问题就不会出现\texttt
。显然,在 MWE 中,我可以简单地删除它,\texttt
因为它什么也不做;但在实际文档中,它是一个更复杂的宏的一部分,我不能轻易删除它。
这个问题并非 Noto 字体所特有。如果我使用 Computer Modern 作为主字体,使用 Takao Mincho 作为 CJK 主字体,这种情况仍然会发生。
我的用法错了吗?我以为CJK
在包中添加一个选项ucharclasses
可能会修复这个问题,但它似乎完全破坏了日语渲染xeCJK
。