luaotfload 和某些字体形状的问题

luaotfload 和某些字体形状的问题

在试用时,lualatexTL 13遇到了一个奇怪的问题。某些字体形状会毫无原因地产生错误。以下示例来自Stempel Garamond LT StdAdob​​e 的 Font Folio 11,但我也在其他字体中遇到过这种情况。

\documentclass[]{scrbook}

\usepackage{fontspec}
\setmainfont[Ligatures=TeX,ItalicFont={Stempel Garamond LT Std Italic},BoldFont={Stempel Garamond LT Std Bold},BoldItalicFont={Stempel Garamond LT Std Bold Italic}]{Stempel Garamond LT Std Roman} 
\begin{document}

Regular \textbf{bold}  \emph{italics \textbf{bold italics}}  

\end{document}

这会导致以下错误消息:

LaTeX Font Info:    Font shape `EU2/StempelGaramondLTStdRoman(0)/m/sl' in size <10.95> not available
(Font)              Font shape `EU2/StempelGaramondLTStdRoman(0)/m/it' tried instead on input line 10.
luaotfload | load: auto-selecting default features for script: latn
luaotfload | load: no defaults for script “latn”, falling back to “dflt”
luaotfload | load: invalid request “/Users/simi/FontExplorerX/S/Stempel” of type anon
luaotfload | load: use square bracket syntax or consult the documentation.
luaotfload | load: path lookup of “/Users/simi/FontExplorerX/S/Stempel” unsuccessful, falling back to file: ! Font \EU2/StempelGaramondLTStdRoman(0)/m/it/10.95=/Users/simi/FontExplorerX/S/
Stempel not loadable: metric data not found or bad.
<to be read again> 
G

真正奇怪的是它产生了以下输出:
(来源:西米电影网

正如你所见,luaotfload确实找到了正确的字体形状。

编辑

更奇怪的是:我简化了目录结构。Stempel Garamond Lt Std 的所有四种形状现在都在 中Users/simi/FontExplorerX/S/StempelGaramondLTStd/。我让luaotload-tool更新所有内容,并且luaotfload-tool -F --find="Stempel Garamond LT Std Roman"(或此类变体)确实为我提供了正确的路径。

现在,当我尝试 MWE 时,甚至没有生成 PDF。相反,我收到以下错误:

LaTeX Font Info:    Font shape `EU2/StempelGaramondLTStdRoman(0)/m/sl' in size <10.95> not available
(Font)              Font shape `EU2/StempelGaramondLTStdRoman(0)/m/it' tried instead on input line 10.
luaotfload | load: auto-selecting default features for script: latn
luaotfload | load: no defaults for script “latn”, falling back to “dflt”
luaotfload | load: invalid request “/Users/simi/FontExplorerX/S/Stempel” of type anon
luaotfload | load: use square bracket syntax or consult the documentation.
luaotfload | load: path lookup of “/Users/simi/FontExplorerX/S/Stempel” unsuccessful, falling back to file:
! Font \EU2/StempelGaramondLTStdRoman(0)/m/it/10.95=/Users/simi/FontExplorerX/S/Stempel not loadable: metric data not found or bad.
<to be read again> 
G
l.10 \end{document}
                 
? 
[1{/usr/local/texlive/2013/texmf-var/fonts/map/pdftex/updmap/pdftex.map}

]
(./test.aux) )

如您所见,这里给出的路径并不完整,这很奇怪,因为luaotfload-tool确实知道正确的路径。

编辑2:

这是一个已确认的错误,解决

答案1

这似乎是luaotfload和/或luatex中的一个错误\fontname。它在这里被触发,因为fontspec声明斜体字体作为(不存在的)倾斜字体的替代品。这将调用 latex 的\do@subst@correction,它用于\fontname\font加载替代字体。但是使用luatex(和luaotfload),\fontname\font错误地返回字体的完整路径(在您的情况下/Users/simi/FontExplorerX/S/Stempel Garamond LT Std Italic/StempelGaramondLTStdItalic.otf)而不是其“名称”("StempelGaramondLTStdItalic:mode=node;script=latn;language=DFLT;+tlig;+trep;" at 10.95pt)。这反过来会使\font爆炸。

您可以通过明确指定倾斜字体来防止这种情况发生,从而避免替换混乱:

\setmainfont[Ligatures=TeX,
     ItalicFont={Stempel Garamond LT Std Italic},
     SlantedFont={Stempel Garamond LT Std Italic},
     BoldFont={Stempel Garamond LT Std Bold},
     BoldItalicFont={Stempel Garamond LT Std Bold Italic},
     BoldSlantedFont={Stempel Garamond LT Std Bold Italic}]
   {Stempel Garamond LT Std Roman}

相关内容