关于“插槽”和“文本命令”的微类型警告

关于“插槽”和“文本命令”的微类型警告

XeLaTeX我正在使用、scrreprt文档类以及XeCJKmicrotype包(按顺序加载)编写多语言文档。

MWE(我的系统上已正确安装字体):

\documentclass{scrreprt}
\usepackage{xeCJK}
\setCJKmainfont{Noto Serif CJK SC}
\usepackage{microtype}
\begin{document}
This sentence is short.
这句话很短。
\end{document}

我收到以下警告(但仅当有中文文本时):

Package microtype Warning: One or more slots in the configuration are unknown.
(microtype)                Make sure that no text commands are used.
(microtype)                See the documentation for details (the note
(microtype)                on `xeCJK' in section 9: `Hints and caveats').

该说明的相关部分(microtype文献第 27 页)如下:

当与 xeCJK 包或 luatexja 包一起使用时,配置中的文本命令(例如 \'A、\textless)将无法理解。因此,您必须确保 microtype 不会遇到任何这些命令。这首先要求将字形仅指定为单个(可能是 Unicode)字符、数字或字形名称(参见第 5 节);其次,如果您使用的字体不存在预定义设置,则您需要自己创建这些设置(否则,将加载包含文本命令的默认设置)。此外,您应该稍后加载 microtype。

而“插槽”的定义如下(第 12 页):

字符可以指定为单个字母(A)、文本符号命令(\textquoteleft)或槽号(分别为 LuaTeX 或 XeTeX 的 Unicode 编号):十进制表示法为三位或更多位数字,十六进制以前缀 " 表示,八进制以 ' 表示(例如,T1 编码中的 'fl' 连字符:029,“1D,'35)。

我的 MWE 中的每个字符都是以 UTF-8 编码输入的,就我对上述段落的理解而言,microtype应该没有什么可抱怨的。“配置中的一个或多个插槽未知”和“文本命令”是什么意思?以下部分可能是问题的根源吗?

如果您使用的字体不存在预定义设置,请自行创建这些设置(否则,将加载包含文本命令的默认设置)。

我如何知道是否存在预定义设置,或者如何创建这样的设置,或者如何以其他方式解决问题?

答案1

您可以为您的字体设置突起,然后 microtype 将不会尝试使用罗马字体的设置(这里没有您的字体,因此我使用了另一种字体):

\documentclass{scrreprt}
\usepackage{xeCJK}
\setCJKmainfont{Microsoft YaHei}
\usepackage{microtype}

\SetProtrusion
   { encoding = {TU},
     family   = Microsoft YaHei }
   {}

\begin{document}
This sentence is short.
这句话很短。
\end{document}

编辑

Noto 字体具有不同的字符集,因此也应该覆盖继承列表:

\documentclass{scrreprt}
\usepackage{xeCJK}
\setCJKmainfont{Noto Serif CJK SC}%{NotoSerifCJKsc-Regular.otf}[NFSSFamily=notofamily]
\usepackage{microtype}
\DeclareCharacterInheritance
   { encoding = {TU},
    family = NotoSerifCJKSC }
   {}

\SetProtrusion
   { encoding = {TU},
     family   = NotoSerifCJKSC
   }
   {}
\begin{document}

This sentence is short. 
这句话很短。
\end{document}

这些设置可以放在名为 的文件中mt-NotoSerifCJKSC.cfg

相关内容