这是我的输入文件:
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{TeXGyrePagella}
\begin{document}
abcde ABCDE
{\scshape abcde ABCDE}
\textsc{abcde ABCDE}
\end{document}
这是 xelatex 的渲染:
据我从文档中理解,两个小写字母命令应该可以工作,因为otfinfo
它们显示为 TeX Gyre Pagella 字体的一个特性:
$ otfinfo -f /usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-regular.otf
...
smcp Small Capitals
...
系统详情:Ubuntu 11.04,texlive-xetex 版本是2009-11。
以下是 的输出fc-cache | grep Pagella
。它似乎表明该字符串TeXGyrePagella
是正确的:
$ fc-list | grep Pagella
TeXGyrePagella:style=BoldItalic
TeXGyrePagella:style=Regular
TeXGyrePagella:style=Bold
TeXGyrePagella:style=Italic
如果我将\setmainfont
命令更改为:\fontspec[Mapping=tex-text,Path=/usr/share/texmf/fonts/opentype/public/tex-gyre/]{texgyrepagella-regular.otf}
,我会收到此错误输出:
kpathsea: Running mktextfm texgyrepagella-regular
/usr/share/texmf/web2c/mktexnam: Could not map source abbreviation for texgyrepagella-regular.
/usr/share/texmf/web2c/mktexnam: Need to update ?
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input texgyrepagella-regular
This is METAFONT, Version 2.718281 (TeX Live 2009/Debian)
kpathsea: Running mktexmf texgyrepagella-regular
! I can't find file `texgyrepagella-regular'.
<*> ...; nonstopmode; input texgyrepagella-regular
Please type another input file name
! Emergency stop.
<*> ...; nonstopmode; input texgyrepagella-regular
Transcript written on mfput.log.
grep: texgyrepagella-regular.log: No such file or directory
mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input texgyrepagella-regular' failed to make texgyrepagella-regular.tfm.
kpathsea: Appending font creation commands to missfont.log.
! Font \zf@basefont=texgyrepagella-regular.otf at 10.0pt not loadable: Metric (
TFM) file or installed font not found.
\zf@fontspec ...ntname \zf@suffix " at \f@size pt
\unless \ifzf@icu \zf@set@...
l.3 ...blic/tex-gyre/]{texgyrepagella-regular.otf}
该文件/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-regular.otf
肯定存在于我的系统中。
答案1
使用时
\setmainfont[Mapping=tex-text]{TeX Gyre Pagella}
使用 OTF 字体系列名称中的空格我得到:
寻找姓氏:
voss@shania:~> fc-list | grep Pagella
TeX Gyre Pagella:style=Italic
TeX Gyre Pagella:style=Bold Italic
TeX Gyre Pagella:style=Regular
TeX Gyre Pagella:style=Bold
voss@shania:~>
我的字体规格版本:
*File List*
fontspec.sty 2011/02/26 v2.1f Advanced font selection for XeLaTeX/LuaLaTeX
fontspec-patches.sty 2011/02/26 v2.1f Advanced font selection for XeLaTeX/Lu
aLaTeX
xunicode.sty 2010/11/06 v0.96 provides access to latin accents and many othe
r characters in Unicode lower plane
fontspec.cfg
答案2
该字体的 OTF 名称是“TeX Gyre Pagella”。PostScript 名称是“TeXGyrePagella”。如果您只看到 PostScript 名称,则意味着 xelatex 找不到 OTF 文件。正如其他示例所讨论的那样,这是打包(TeX Live 或 Debian)的一个错误。一些 PostScript 字体安装在系统文件夹中,但小写字母没有。解决方法是将 .otf 文件(您找到的)复制到“~/.fonts/”中。