為什麼我不能使用 fc-list 輸出中列出的字體名稱?

為什麼我不能使用 fc-list 輸出中列出的字體名稱?
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Helvetica Neue LT Pro 55 Roman} % This line is OK.
\setsansfont{HelveticaNeueLT Pro 55 Roman} % This line is ERROR!

\begin{document}
Hello
\end{document}

MWE 如上所述。

xelatex 抱怨以下訊息:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
! 
! The font "HelveticaNeueLT Pro 55 Roman" cannot be found.
! 
! See the fontspec documentation for further information.
! 
! For immediate help type H <return>.
!...............................................  

l.4 \setsansfont{HelveticaNeueLT Pro 55 Roman}
                                               % This line is ERROR!

然而,fc-list 輸出如下:

/usr/share/fonts/adobe/HelveticaNeueLTPro-Roman.otf: \
Helvetica Neue LT Pro,HelveticaNeueLT Pro 55 Roman: \
style=55 Roman,Regular

據我所知,HelveticaNeueLT Pro 55 Roman應該是正確的字體名稱,也不Helvetica Neue LT Pro 55 Roman應該是。然而,實際結果似乎Helvetica Neue LT Pro 55 Roman是一個有效的字體名稱,但HelveticaNeueLT Pro 55 Roman事實並非如此。為什麼?

fc-list 的輸出是否可靠地提供字體名稱?

答案1

我不確定fc-list逗號後的輸出是什麼,但 XeTeX 似乎想要姓氏(在逗號之前,Helvetica Neue LT Pro),可選地後跟樣式(55 Roman)。這給出了您使用的第一行。所以 fc-list 輸出似乎是可靠的,只是那部分不可靠。

我沒有 Helvetica Neue LT Pro,但我嘗試過 Latin Modern(我猜大多數安裝了 TeX 的人都有)。fc-list | grep 'LM Roman 10'給出

/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bold.otf: Latin Modern Roman,LM Roman 10:style=10 Bold,Bold
/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bolditalic.otf: Latin Modern Roman,LM Roman 10:style=10 Bold Italic,Bold Italic
/usr/share/texmf/fonts/opentype/public/lm/lmroman10-regular.otf: Latin Modern Roman,LM Roman 10:style=10 Regular,Regular
/usr/share/texmf/fonts/opentype/public/lm/lmroman10-italic.otf: Latin Modern Roman,LM Roman 10:style=10 Italic,Italic

現在對於 XeTeX 我們有

\setmainfont{Latin Modern Roman} % OK
\setmainfont{Latin Modern Roman 10 Regular} % OK
\setmainfont{LM Roman 10} % Not OK
\setmainfont{Latin Modern Roman 10 Italic} % OK, font is italic and \textit gives upright

另一方面,LuaTeX 似乎使用逗號後的名稱來尋找字體,但不查找指定樣式的字體(所以我猜你的範例中只有第二行適用於 LuaTeX)。然而,以這種方式存取字體時,它似乎找不到不同的樣式。

\setmainfont{Latin Modern Roman} % OK
\setmainfont{Latin Modern Roman 10 Regular} % Not OK
\setmainfont{LM Roman 10} % OK, but \textit etc. doesn't work
\setmainfont{LM Roman 10 Regular} % OK, but \textit etc. doesn't work
\setmainfont[ItalicFont=LM Roman 10 Italic,...]{LM Roman 10} % OK

相關內容