该ctex
软件包提供Mapping = fullwidth-stop
将普通中文句号 (。) 转换为全角句号 (.)。(不要与半角句号 (.) 混淆。)
但是,这只适用于一种字体。
\documentclass[UTF8, fontset = fandol]{ctexart}
\setCJKmainfont{FandolSong}[%
Mapping = fullwidth-stop
]
\begin{document}
天地玄黄,宇宙洪荒。盖此身发,四大五常。
\kaishu
天地玄黄,宇宙洪荒。盖此身发,四大五常。
\end{document}
字体kaishu
没有改变。当然我可以单独对 进行此操作kaishu
,但之后我还必须对fangsong
、heiti
等进行此操作。我想在一个地方对所有字体进行此操作。
文档中提到\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
是在fontspec
package中定义的,然后packagexeCJK
继承它并提供了四个映射文件(包括用到的一个OP),最后ctex
bundle加载xeCJK
来声明CJK字体。