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}
我将此语法添加到我的前言中,警告最终消失了。如果不行,请先更新版本。