是否可以使用纯格式的 LuaTeX 来获得 OpenType 字体?
我努力了:
\font\test="texgyrepagellaregular"\test test\bye
但我明白了! Font \test=texgyrepagellaregular not loadable: metric data not found or bad.
。
mtxrun --script fonts --list --all --pattern=pagella
当我按照以下说明操作时,显示上述字体名称http://wiki.contextgarden.net/Fonts_in_LuaTeX。
但在实际使用字体时,页面切换到 ConTeXt 而不是 LuaTeX,这让我想知道是否可以将 OT 字体与普通字体一起使用?
更新
尽管现在对于位于我的主目录中的字体(OSX Lion、BasicTeX2012、luatex-plain
按照以下说明构建的 -format)来说,这可以正常工作,但我无法使用位于系统目录中的字体。因此,虽然上述示例(使用texgyrepagellaregular
)有效,但mtxrun
-script 显示其位置为~/Library/Fonts
,而以下示例无效:
\font\test="minionproregular"
大概是因为mtxrun
显示其位置为/Library/Fonts
(同样的问题似乎与里面的字体有关/System/Library/Fonts
)。
现在,我添加了~/.zshrc
:
export OSFONTDIR=/System/Library/Fonts:/Library/Fonts:$OSFONTDIR
之后我能够使用mtxrun --script fonts --reload
以下方法更新字体数据库这些说明),现在mtxrun
列表确实显示了所有字体。只是luatex-plain
看不到它们。
我怎样才能luatex-plain
看到字体mtxrun
?
答案1
让我再加点困惑:实际上有两种格式可用于使用 LuaTeX 运行 Plain!其中一种格式是在运行
luatex
TeX Live 等命令时调用的格式;egreg 已在
他的回答。
然而,还有另一种格式,称为luatex-plain。由于它自带了字体加载器,因此它的优点是无需额外软件包即可使用 OpenType 字体。这是一个演示(第二部分需要 Adobe 提供的免费 Minion Pro 字体):
\font\iwonaregular =file:Iwona-Regular at 12pt
\font\iwonaitalic =file:Iwona-Italic at 12pt
\font\iwonabold =file:Iwona-Bold at 12pt
\font\iwonabolditalic=file:Iwona-BoldItalic at 12pt
{\iwonaregular foo}\par
{\iwonaitalic bar}\par
{\iwonabold baz}\par
{\iwonabolditalic xyzzy}\par
\font\minionproliningfigures =file:MinionPro_Regular at 12pt
\font\minionprotextfigures =file:MinionPro_Regular:+onum; at 12pt
\font\minionprosmallcaps =file:MinionPro_Regular:+smcp; at 12pt
{\minionproliningfigures 0123456789abcdef}\par
{\minionprotextfigures 0123456789abcdef}\par
{\minionprosmallcaps 0123456789abcdef}\par %% implicit +onum!
\bye
有关更复杂的例子,请参阅 测试文件。
luatex-plain与 ConTeXt 一起分发并可通过目录下的 TeX Live 获得texmf-dist/tex/generic/context/luatex/
。(专家提示:构建格式,然后将luatex
二进制文件符号链接到luatex-plain
,这样您就不必指定参数--fmt
。)
答案2
LuaTeX 本身具有与 pdfTeX 相同的字体支持。但是,使用正确的 Lua 代码可以扩展字体支持,这正是 的工作luaotfload.lua
。luaotfload.sty
文件也可以使用纯 LuaTeX 格式加载。
尝试编译以下文件luatex
(请注意,“Linux Libertine O”在我的系统字体中,我只是用它作为示例。
\input luaotfload.sty
\font\x="texgyrepagella-regular.otf"
\font\liber="Linux Libertine O/I=5:+smcp" at 12pt
\x
abcdef
\liber
abcdef
\bye