我在新的 Mac OS/X El Capitan 系统上安装了 TexLive 2015 的完整版本,但在尝试排版以下文件时出现字体错误:
\font\reffont=OpenSans-Regular at 20pt
\reffont
Fubar
\end
完整的控制台会话如下。如您所见,第一个问题迹象是:
mktexnam: Could not map source abbreviation O for OpenSans-Regular.
如果我尝试OpenSans
、、或,也会遇到同样的基本问题。OpenSans-Bold
Helvetica
helvetica
我想到两个潜在的陷阱,但下面的命令行输出显示(a)字体在我的磁盘上,并且(b)我的磁盘上只安装了一个 pdftex。
我还运行了 TeX Live Utility,它说该包opensans
是Installed
。
所以我被难住了。这是什么意思:
Need to update /usr/local/texlive/2015/texmf-dist/fonts/map/fontname/special.map?
希望您能帮上忙。谢谢。
--
OpenSans 字体在我的磁盘上:
$ pwd
/usr/local/texlive/2015/texmf-dist/fonts/truetype/public/opensans
$ ls -l
total 5144
-rw-r--r-- 1 root wheel 224592 Aug 26 2011 OpenSans-Bold.ttf
-rw-r--r-- 1 root wheel 213292 Aug 26 2011 OpenSans-BoldItalic.ttf
-rw-r--r-- 1 root wheel 221108 Aug 26 2011 OpenSans-CondLight.ttf
-rw-r--r-- 1 root wheel 210804 Aug 26 2011 OpenSans-CondLightItalic.ttf
-rw-r--r-- 1 root wheel 222584 Aug 26 2011 OpenSans-ExtraBold.ttf
-rw-r--r-- 1 root wheel 213420 Aug 26 2011 OpenSans-ExtraBoldItalic.ttf
-rw-r--r-- 1 root wheel 212896 Aug 26 2011 OpenSans-Italic.ttf
-rw-r--r-- 1 root wheel 222412 Aug 26 2011 OpenSans-Light.ttf
-rw-r--r-- 1 root wheel 213128 Aug 26 2011 OpenSans-LightItalic.ttf
-rw-r--r-- 1 root wheel 217360 Aug 26 2011 OpenSans-Regular.ttf
-rw-r--r-- 1 root wheel 221328 Aug 26 2011 OpenSans-Semibold.ttf
-rw-r--r-- 1 root wheel 212820 Aug 26 2011 OpenSans-SemiboldItalic.ttf
我的系统上仅安装了一个 pdftex:
$ sudo find / -name pdftex
/usr/local/texlive/2015/bin/universal-darwin/pdftex
/usr/local/texlive/2015/bin/x86_64-darwin/pdftex
/usr/local/texlive/2015/texmf-dist/doc/pdftex
/usr/local/texlive/2015/texmf-dist/fonts/enc/pdftex
/usr/local/texlive/2015/texmf-dist/fonts/map/pdftex
/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/pdftex
/usr/local/texlive/2015/texmf-dist/fonts/type1/public/pdftex
/usr/local/texlive/2015/texmf-dist/tex/generic/pdftex
/usr/local/texlive/2015/texmf-var/fonts/map/pdftex
/usr/local/texlive/2015/texmf-var/web2c/pdftex
这是控制台会话:
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdftex)
restricted \write18 enabled.
entering extended mode
(./stub.tex
kpathsea: Running mktextfm OpenSans-Regular
/usr/local/texlive/2015/texmf-dist/web2c/mktexnam: Could not map source abbreviation O for OpenSans-Regular.
/usr/local/texlive/2015/texmf-dist/web2c/mktexnam: Need to update /usr/local/texlive/2015/texmf-dist/fonts/map/fontname/special.map?
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input OpenSans-Regular
This is METAFONT, Version 2.7182818 (TeX Live 2015) (preloaded base=mf)
kpathsea: Running mktexmf OpenSans-Regular
! I can't find file `OpenSans-Regular'.
<*> ...mag:=1; nonstopmode; input OpenSans-Regular
Please type another input file name
! Emergency stop.
<*> ...mag:=1; nonstopmode; input OpenSans-Regular
Transcript written on mfput.log.
grep: OpenSans-Regular.log: No such file or directory
mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input OpenSans-Regular' failed to make OpenSans-Regular.tfm.
kpathsea: Appending font creation commands to missfont.log.
./stub.tex:1: Font \reffont=OpenSans-Regular at 20.0pt not loadable: Metric (TF
M) file not found.
l.1 \font\reffont=OpenSans-Regular at 20pt
? x
No pages of output.
Transcript written on stub.log.
答案1
如果要在 TeX 中使用 TrueType 字体(又称系统字体),则必须使用新引擎之一xetex
或luatex
。该luatex
引擎不支持立即加载系统字体,但必须先在 Lua 级别启用它,这由完成luaotfload.sty
。
要加载系统字体,您必须将其名称放在引号中。名称是 Mac OS X 上 FontBook 中显示的名称,或fc-list
GNU/Linux 下输出中路径后面的名称。
\ifdefined\directlua
\input luaotfload.sty
\fi
\font\reffont="Open Sans" at 20pt
\reffont Hello from Open Sans!
\bye
通过 Bernard 的回答,我发现存在一个 Type1 版本的 OpenSans,可以在 中使用pdftex
。这是一个示例,它产生与上面相同的输出。
\font\reffont=OpenSans-Regular-ot1 at 20pt
\reffont Hello from Open Sans!
\bye
pdftex
目前,在和解决方案之间存在某种权衡xe/luatex
。引擎xetex
和luatex
使字体特征选择变得更加容易,因为所有特征都包含在一个文件中。选择 中的特征pdftex
需要加载另一个字体文件,但pdftex
稳定性更好,速度也快得多!
答案2
Open Sans 也可以在 LaTeX 中使用:加载opensans
包并使用\fosfamily
开关或通过defaultsans
或default
包选项。
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{opensans}
\usepackage{lipsum}
\begin{document}%
\fosfamily
\lipsum[2]
\end{document}