使用 ucharclasses 包在 CJK 文本周围留出空格

使用 ucharclasses 包在 CJK 文本周围留出空格

我正在修改一个 .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

答案1

我不确定我是否会在这里使用英文引号,但如果你ucharclasses在之前加载它就会起作用xeCJK

\documentclass{article}
\usepackage[no-math]{fontspec}
\setmainfont{Noto Serif}
\usepackage[Latin,Arabic]{ucharclasses}
\usepackage{xeCJK}
\setCJKmainfont{Noto Sans CJK JP}
\begin{document}
``\texttt{めいじ}''
\end{document}

在此处输入图片描述

相关内容