![使用 Arial Narrow 和 LuaLaTeX 的 fontspec,而 XeLaTeX 才是正確的](https://rvso.com/image/335500/%E4%BD%BF%E7%94%A8%20Arial%20Narrow%20%E5%92%8C%20LuaLaTeX%20%E7%9A%84%20fontspec%EF%BC%8C%E8%80%8C%20XeLaTeX%20%E6%89%8D%E6%98%AF%E6%AD%A3%E7%A2%BA%E7%9A%84.png)
我目前正在處理一個在多台機器上編輯的文檔,兩台機器都運行 Windows 10。然而,當我嘗試編譯以下 MWE 時,一台機器上出現了問題:
\documentclass{book}
\usepackage{fontspec}
\setmainfont{Arial}
\usepackage{lipsum}
\begin{document}
\lipsum[1-5]
\end{document}
使用 XeLaTeX,PDF 看起來符合預期,Arial 顯示為嵌入字體。然而,當我嘗試使用 Lualatex 時,PDF 實際上使用的是該字體的窄變體。
Xelatex 的輸出如下:
.................................................
. fontspec info: "defining-font"
.
. Font family 'Arial(0)' created for font 'Arial' with options
. [Ligatures=TeX].
.
. This font family consists of the following NFSS series/shapes:
. - 'normal' (m/n) with NFSS spec.:
. <->"Arial/OT:script=latn;language=DFLT;mapping=tex-text;"
. - 'small caps' (m/sc) with NFSS spec.:
. <->"Arial/OT:script=latn;language=DFLT;mapping=tex-text;+smcp;"- 'bold'
. (bx/n) with NFSS spec.:
. <->"Arial/B/OT:script=latn;language=DFLT;mapping=tex-text;"
. - 'bold small caps' (bx/sc) with NFSS spec.:
. <->"Arial/B/OT:script=latn;language=DFLT;mapping=tex-text;+smcp;"- 'italic'
. (m/it) with NFSS spec.:
. <->"Arial/I/OT:script=latn;language=DFLT;mapping=tex-text;"
. - 'italic small caps' (m/itsc) with NFSS spec.:
. <->"Arial/I/OT:script=latn;language=DFLT;mapping=tex-text;+smcp;"- 'bold
. italic' (bx/it) with NFSS spec.:
. <->"Arial/BI/OT:script=latn;language=DFLT;mapping=tex-text;"
. - 'bold italic small caps' (bx/itsc) with NFSS spec.:
. <->"Arial/BI/OT:script=latn;language=DFLT;mapping=tex-text;+smcp;"
.................................................
Lualatex 的輸出是:
.................................................
. fontspec info: "defining-font"
.
. Font family 'Arial(0)' created for font 'Arial' with options
. [Ligatures=TeX].
.
. This font family consists of the following NFSS series/shapes:
. - 'normal' (m/n) with NFSS spec.: <->"Arial:mode=node;+tlig;"
. - 'small caps' (m/sc) with NFSS spec.: - 'bold' (bx/n) with NFSS spec.:
. <->"Arial/B:mode=node;+tlig;"
. - 'bold small caps' (bx/sc) with NFSS spec.: - 'italic' (m/it) with NFSS
. spec.: <->"Arial/I:mode=node;+tlig;"
. - 'italic small caps' (m/itsc) with NFSS spec.: - 'bold italic' (bx/it)
. with NFSS spec.: <->"Arial/BI:mode=node;+tlig;"
. - 'bold italic small caps' (bx/itsc) with NFSS spec.:
.................................................
我懷疑 Lualatex 實際上預設為窄字體而不是常規字體。運行luaotfload-tool --find="Arial"
給出以下輸出
luaotfload | resolve : Font "Arial" found!
luaotfload | resolve : Resolved file name "c:/windows/fonts/arialn.ttf
在我看來,查找實際上是錯誤的。我嘗試使用cache=purge
、force
和flush-lookup
選項,但無濟於事。有沒有辦法可以手動修改查找以指向正確的文件?
答案1
這可以幫助解決問題並將其上傳到發行版。
\documentclass{book}
\usepackage{fontspec}
\setmainfont{arial}[ %Need such long loading because of luaotfload issue
Extension = .ttf,
UprightFont = *,
BoldFont = *bd,
ItalicFont = *i,
BoldItalicFont = *bi]
\newfontfamily\cyrillicfont{arial}[ %for Cyrillic users
Extension = .ttf ,
UprightFont = *,
BoldFont = *bd,
ItalicFont = *i,
BoldItalicFont = *bi]
\usepackage{lipsum}
\begin{document}
\lipsum[1-5]
\end{document}
Idea 可用於受影響的字體。可以查一查
luaotfload-tool --find="Arial"
指arialn.ttf
Arial Narrow 和
luaotfload-tool --find="DejaVuSerif"
指向dejavuserifcondensed.ttf
DejaVuSerifCondensed。
問題至少是一個月大。