使用 Lato 字体的“微类型警告:未知的字符槽号”

使用 Lato 字体的“微类型警告:未知的字符槽号”

MacTeX 2017(TeX Live 2017)中的 LuaLaTeX 使用此 MWE 向我提供了一堆微类型警告拉托字体:

\documentclass{article}

\usepackage{fontspec}
\usepackage{microtype}

\setmainfont{Lato}

\begin{document}

Foo

\end{document}

输出lualatex mwe.tex有很多警告,例如:

Package microtype Warning: Unknown slot number of character
(microtype)                `\u A'
(microtype)                in font encoding `TU' in inheritance list
(microtype)                `microtype.cfg/375(protrusion)'.

我在使用 MacTeX 2016 时从未收到过这些警告。我读过很多 TeX.se 的回答,其中最值得注意的是有人建议 microtype 2.7 将修复此问题但我已经更新了 MacTeX,包括 microtype 2.7,但仍然收到这些警告。

我该如何消除这些警告?

谢谢!

答案1

编辑:正如@Finley Huaxin 所说,microtype 现在(自 3.0 版起)包含通用的基本设置,您可以将任何具有受限字形集的字体别名为该设置:\DeclareMicrotypeAlias{<font>}{TU-basic}。(对于 Lato 字体和其他一些字体,这已经包含在 microtype.cfg 中)


原始答案:正如@egreg 和@David 所说,Lato 字体不包含这些字符,所以您会收到警告,因为microtype从中加载了默认继承列表microtype.cfg

虽然 David 的解决方案确实可以消除警告,但正确的(TM)方法是声明字体的专用字符继承设置。您可以将以下内容放在序言中或名为的文件中mt-Lato.cfg,然后该文件将自动加载:

\DeclareCharacterInheritance
   { encoding = {TU,EU1,EU2},
     family   = {Lato} }
   { A = {\`A,\'A,\^A,\~A,\"A,\r A,\k A},
     a = {\`a,\'a,\^a,\~a,\"a,\r a,\k a},
     C = {\'C,\c C},
     c = {\'c,\c c},
     D = {\DH},
     d = {\dj},
     E = {\`E,\'E,\^E,\"E,\k E},
     e = {\`e,\'e,\^e,\"e,\k e},
     I = {\`I,\'I,\^I,\"I},
     i = {\`i,\'i,\^i,\"i,\i},
     L = {\L},
     l = {\l},
     N = {\'N,\~N},
     n = {\'n,\~n},
     O = {\O,\`O,\'O,\^O,\~O,\"O},
     o = {\o,\`o,\'o,\^o,\~o,\"o},
     S = {\'S,\v S},
     s = {\'s,\v s},
     U = {\`U,\'U,\^U,\"U},
     u = {\`u,\'u,\^u,\"u},
     Y = {\'Y,\"Y},
     y = {\'y,\"y},
     Z = {\'Z,\.Z,\v Z},
     z = {\'z,\.z,\v z}
   }

答案2

如果你真的只是想摆脱警告,你可以这样做

\documentclass{article}

\usepackage{fontspec}
\usepackage{microtype}

\setmainfont{Lato}

\makeatletter
\def\MT@warn@unknown{}
\makeatother

\begin{document}


\r{u}

Foo 

\end{document}

但这并不能解决字体没有这些重音符号或预制重音符号的根本问题。不过,如果您的文档不使用这些字符,那么这可能不是问题。

答案3

我发现最新版本的 \DeclareCharacterInheritance 似乎无法正常工作,至少对我来说是这样。但 2022 年更新的 Microtype 包显然提供了一个适用于我的情况的解决方案。

如果您收到大量类似上述警告,并且您正在运行 LuaTEX 或 XETEX,这可能意味着您使用的字体包含的字形少于默认突起和/或继承设置中定义的字形。对于此类字体,microtype 包定义了基本的继承设置,您可以将字体别名化为这些设置(通用突起设置仍将被加载)。尝试添加以下行:

\DeclareMicrotypeAlias{〈your font〉}{TU-basic}

我将此语法添加到我的前言中,警告最终消失了。如果不行,请先更新版本。

相关内容