如何使用 \addCJKfontfeatures?

如何使用 \addCJKfontfeatures?

ctex软件包提供Mapping = fullwidth-stop将普通中文句号 (。) 转换为全角句号 (.)。(不要与半角句号 (.) 混淆。)

但是,这只适用于一种字体。

\documentclass[UTF8, fontset = fandol]{ctexart}

\setCJKmainfont{FandolSong}[%
  Mapping = fullwidth-stop
]

\begin{document}

天地玄黄,宇宙洪荒。盖此身发,四大五常。

\kaishu
天地玄黄,宇宙洪荒。盖此身发,四大五常。

\end{document}

在此处输入图片描述

字体kaishu没有改变。当然我可以单独对 进行此操作kaishu,但之后我还必须对fangsongheiti等进行此操作。我想在一个地方对所有字体进行此操作。

文档中提到\addCJKfontfeatures。我尝试使用它:

\documentclass[UTF8, fontset = fandol]{ctexart}

\addCJKfontfeatures{Mapping = fullwidth-stop}

\begin{document}

天地玄黄,宇宙洪荒。盖此身发,四大五常。

\kaishu
天地玄黄,宇宙洪荒。盖此身发,四大五常。

\end{document}

然而,这不起作用:

在此处输入图片描述

\addCJKfontfeatures*也没有帮助。正确的使用方法是什么\addCJKfontfeatures?如何在一个地方设置所有字体的映射?

答案1

这有效

% cancel CJK font declarations at class loading
\documentclass[fontset=none]{ctexart}

% change default CJK font features
\defaultCJKfontfeatures{Script=CJK, Mapping=fullwidth-stop}
% declare CJK fonts, with new default features applied
\ctexset{fontset=fandol}

\begin{document}
天地玄黄,宇宙洪荒。盖此身发,四大五常。

\kaishu
天地玄黄,宇宙洪荒。盖此身发,四大五常。
\end{document}

在此处输入图片描述

来自包的文档xeCJK

  • \addCJKfontfeatures仅影响当前使用的字体,因此当您通过 更改为新字体后\kaishu,新字体功能就会消失。
  • \defaultCJKfontfeatures影响每一个遵循字体声明,因此这就是您所需要的。

顺便说一下,optionMapping是在fontspecpackage中定义的,然后packagexeCJK继承它并提供了四个映射文件(包括用到的一个OP),最后ctexbundle加载xeCJK来声明CJK字体。

相关内容