LuaLaTeX:在 Mac OS X 上使用系统字体 Monaco

LuaLaTeX:在 Mac OS X 上使用系统字体 Monaco

我想将 Mac OS X (.dfont) Monaco 与 LuaLaTeX 结合使用。使用此输入文件

\documentclass{article}
\usepackage{fontspec}
\setmonofont{Monaco}
\begin{document}
\begin{verbatim}
    foo
\end{verbatim}
\end{document}

我收到以下错误消息:

luaotfload | Font names database not found, generating new one.
             This can take several minutes; please be patient.
luaotfload | Updating the font names database:
luaotfload | Scanning TEXMF fonts...
luaotfload | Scanning OS fonts...
! LuaTeX error ...0/texmf-dist/tex/luatex/luaotfload/otfl-luat-dum.lua:67: bad 
argument #2 to 'find_file' (invalid option 'truetype dictionary').
<to be read again> 
                   \scan_stop: 
l.3 \setmonofont{Monaco}

这是文件列表:

*File List*
 article.cls    2007/10/19 v1.4h Standard LaTeX document class
  size10.clo    2007/10/19 v1.4h Standard LaTeX file (size option)
fontspec.sty    2010/09/29 v2.1b Advanced font selection for XeLaTeX/LuaLaTeX
   expl3.sty    2010/09/16 v2022 L3 Experimental code bundle wrapper
 l3names.sty    2010/09/26 v2048 L3 Experimental Naming Scheme for TeX Primitives
  luatex.sty    2010/03/09 v0.4 LuaTeX basic definition package (HO)
infwarerr.sty    2010/04/08 v1.3 Providing info/warning/message (HO)
ifluatex.sty    2010/03/01 v1.3 Provides the ifluatex switch (HO)
    etex.sty    1998/03/26 v2.0 eTeX basic definition package (PEB)
luatex-loader.sty    2010/03/09 v0.4 Lua module loader (HO)
pdftexcmds.sty    2010/04/01 v0.9 Utility functions of pdfTeX for LuaTeX (HO)
 ltxcmds.sty    2010/04/26 v1.7 LaTeX kernel commands for general use (HO)
l3basics.sty    2010/09/20 v2037 L3 Experimental basic definitions
 l3expan.sty    2010/09/20 v2037 L3 Experimental Argument Expansion module
    l3tl.sty    2010/09/21 v2040 L3 Experimental Token Lists
l3intexpr.sty    2010/09/22 v2045 L3 Integer Expressions
 l3quark.sty    2010/09/20 v2036 L3 Experimental Quark Commands
   l3seq.sty    2010/03/29 v1879 L3 Experimental sequences and stacks
  l3toks.sty    2010/09/20 v2037 L3 Experimental Token Registers
   l3int.sty    2010/09/19 v2029 L3 Experimental Integer module
   l3prg.sty    2010/09/22 v2043 L3 Experimental control structures
 l3clist.sty    2010/09/20 v2037 L3 Experimental comma separated lists
 l3token.sty    2010/09/19 v2029 L3 Experimental token investigation and manipulation
  l3prop.sty    2010/03/21 v1857 L3 Experimental Property Lists
   l3msg.sty    2010/03/23 v1866 L3 Experimental LaTeX Messages module
    l3io.sty    2010/05/22 v1923 L3 Experimental i/o module
  l3skip.sty    2010/09/23 v2047 L3 Experimental skip registers
   l3box.sty    2010/09/26 v2048 L3 Experimental Box module
l3keyval.sty    2010/04/11 v1890 L3 Experimental keyval processing
  l3keys.sty    2010/05/24 v1931 L3 Experimental key-value support
l3precom.sty    2010/02/09 v1793 L3 Experimental precompilation module
  l3xref.sty    2010/02/09 v1786 L3 Experimental cross referencing
  l3file.sty    2010/03/21 v1853 L3 Experimental file loading
    l3fp.sty    2010/09/19 v2029 L3 Experimental floating-point operations
l3luatex.sty    2010/07/18 v1985 L3 Experimental LuaTeX functions
    calc.sty    2007/08/22 v4.3 Infix arithmetic (KKT,FJ)
  xparse.sty    2010/09/20 v2037 Generic document command parser
luatextra.sty    2010/08/02 v0.971 LuaTeX extra low-level macros
luatexbase-modutils.sty    2010/05/27 v0.2a Module utilities for LuaTeX
luatexbase-loader.sty    2010/05/27 v0.2a Lua module loader for LuaTeX
luatexbase-compat.sty    2010/05/27 v0.2a Compatibility tools for LuaTeX
luatexbase-attr.sty    2010/05/27 v0.2a Attributes allocation for LuaTeX
luatexbase-cctb.sty    2010/05/27 v0.2a Catcodetable allocation for LuaTeX
luatexbase-regs.sty    2010/05/27 v0.2a Registers allocation for LuaTeX
luatexbase-mcb.sty    2010/05/27 v0.2a Callback management for LuaTeX
 environ.sty    2008/06/18 v0.2 A new way to define environments
luaotfload.sty    2010/09/12 v1.19 OpenType layout system
 xkeyval.sty    2008/08/13 v2.6a package option processing (HA)
 xkeyval.tex    2008/08/13 v2.6a key=value parser (HA)
fontspec-patches.sty    2010/09/29 v2.1b Advanced font selection for XeLaTeX/LuaLaTeX
fixltx2e.sty    2006/09/13 v1.1m fixes to LaTeX
 fontenc.sty
  eu2enc.def    2010/05/27 v0.1h Experimental Unicode font encodings
  eu2lmr.fd    2009/10/30 v1.6 Font defs for Latin Modern
xunicode.sty    2010/05/18 v0.95 provides access to latin accents and many other characters in Unicode lower plane
fontspec.cfg

这就是luatex --version告诉我的:

This is LuaTeX, Version beta-0.64.0-2010111215

现在的问题是:为了将 Monaco 与 LuaLaTeX 一起使用,我需要做什么?

答案1

我没有 Mac,但 dctt 上有人也遇到了 Monaco 问题,如果我理解正确的话,问题的根源在于安装位置:Monaco 位于“系统文件夹中的库文件夹”中,而有效的字体位于系统文件夹“之外”。

补充:您可以尝试将 otfl-luat-dum.lua 中的第 59 行(可能)从 truetype 字典更改为 truetype 字体:

-    dfont = "truetype dictionary",
+    dfont = "truetype fonts",

您还可以尝试使用“不稳定”分支中的 luaotfload 版本 (https://github.com/khaledhosny/luaotfload/tree/unstable)。(我大约两周前得到它,它似乎运行良好。)将它放在本地 texmf-tree 中,如果出现问题或它成为官方版本,您可以轻松将其删除。

我忘了:如果你想尝试不稳定版本,你可能需要纠正两件事:在 otfl-luat-dum.lua 中第 77 行缺少一个“s”。正确的是

 found = kpse.find_file(name,"other text files")

在 fontspec.lua 中,你必须将每一个替换fonts.idsfonts.identifiers

答案2

我已经关注指示在 [Dev-luatex] 邮件中提供,在您将 替换dfont = "truetype dictionary"dfont = "truetype fonts"后,它似乎可以工作otfl-luat-dum.lua(启动终端窗口,然后find /usr/local -name "otfl-luat-dum.lua"在 TeXLive 根目录下找到此文件)。您的示例然后编译成功并pdffonts显示:

name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
BKOWUW+Monaco                        CID TrueType      yes yes yes      4  0
JFRMQG+LMRoman10-Regular             CID Type 0C       yes yes yes      5  0

答案3

一个解决方法是安装一个字体创建程序,它允许你创建.otf字体的普通版本。例如字体

.dfont这可以通过在 fontforge 中加载文件并选择Generate Fonts选项来完成OpenType (CFF)

请注意,OS X 显然不喜欢与系统字体同名的字体,因此在转换之前,您应该使用Element→重命名字体Font Info

.otf然后,luaotfload 就可以找到生成的文件了(您甚至可以将其放入与您的.tex文件相同的目录中,以尽量减少操作系统混淆)。

请注意,此过程可能会或可能不会被当地法律或许可协议禁止。

相关内容