编辑

编辑

使用 LuaLaTeX 编译时,我尝试让新字体工作时遇到了问题。我在 Mac 上工作并使用 TexShop(带有MacTeX包裹)。

具体如下:

例如,我下载了Cardo字体;我安装了Cardo字体(它现在出现在字体册中);我尝试编写如下简单文本:

\documentclass[11pt]{book}
\usepackage[no-math]{fontspec}    
\usepackage[frenchb]{babel}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmainfont{Cardo}

\begin{document}
Hello world!
\end{document}

编译后我收到以下错误消息:

luaotfload | Font names database loaded: /Users/juan/Library/texlive/2012/texmf
-var/luatex-cache/generic/names/otfl-names.lua
luaotfload | Updating the font names database:
luaotfload | Scanning TEXMF fonts...
luaotfload | Scanning OS fonts...
luaotfload | Font names database saved: %s 
: /Users/juan/Library/texlive/2012/texmf-var/luatex-cache/generic/names/otfl-names.lua

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
./testBembo.tex:6: fontspec error: "font-not-found"
! 
! The font "Cardo" cannot be found.
! 
! See the fontspec documentation for further information.
! 
! For immediate help type H <return>.
!...............................................  

l.6 \setmainfont{Cardo}

? 
Process aborted
  • 然后我检查了,otfl-names.lua发现Cardo不见了;
  • 然后我将Cardo文件夹字体添加到此文件夹:

    /usr/local/texlive/2012/texmf-dist/fonts/
    
  • mkluatexfontdb -vvv在终端中执行了该命令;

  • 我重新检查otfl-names.luaCardo终于到了

因此,我自然而然地尝试在重置计算机后再次编译文本,并且(您现在可能已经猜到了)我(再次!)收到了以下错误消息:

luaotfload | Font names database loaded: /Users/juan/Library/texlive/2012/texmf
-var/luatex-cache/generic/names/otfl-names.lua
luaotfload | Updating the font names database:
luaotfload | Scanning TEXMF fonts...
luaotfload | Scanning OS fonts...
luaotfload | Font names database saved: %s 
: /Users/juan/Library/texlive/2012/texmf-var/luatex-cache/generic/names/otfl-na
mes.lua

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
./testBembo.tex:6: fontspec error: "font-not-found"
! 
! The font "Cardo" cannot be found.
! 
! See the fontspec documentation for further information.
! 
! For immediate help type H <return>.
!...............................................  

l.6 \setmainfont{Cardo}

? 
Process aborted

这东西快把我逼疯了!我迁移到了 LuaLaTeX仅有的因为我被承诺可以使用几乎任何字体。我做错了什么?

答案1

我第一次尝试使用 XeTeX 时遇到了和你一样的问题。如果你想fontspec自动找到字体的路径并为你加载,那么你需要将字体安装为系统字体。在 OS X 上,你可以通过导航到Font Book -> Preferences“默认安装位置”并将“用户”更改为“计算机”来执行此操作。这应该允许你使用该\setmainfont{<font name>}命令而无需任何事先配置。对于 Linux 发行版,你应该查阅桌面环境的文档。

如果您不想修改系统字体集,或者您正在开发一个项目,希望所有资源都存在于一个目录结构中,则可以明确指定字体的路径。例如,如果您将 Cardo 安装为用户字体(这是 OS X 上的默认行为),则应将字体文件复制到~/Library/Fonts。假设字体的常规版本在名为的文件中提供Cardo.ttf,您可以按如下方式加载字体。(请务必更改<username>为您的用户名)。

\setmainfont[
    Path           = /Users/<username>/Library/Fonts/,
    Extension      = .ttf,
    Ligatures      = TeX
]{Cardo}

如果您的字体有粗体、斜体和粗斜体变体,则可以通过添加几行来使用它们。在此示例中,我使用了一种名为 Crimson 的字体,该字体以格式提供OTF。该字体的常规版本称为Crimson-Roman.otf;粗体、斜体和粗斜体变体分别称为Crimson-Bold.otfCrimson-Italic.otfCrimson-BoldItalic.otf

\setmainfont[
    Path           = /Users/<username>/Library/Fonts/,
    Extension      = .otf,
    Ligatures      = TeX,
    BoldFont       = Crimson-Bold,
    ItalicFont     = Crimson-Italic,
    BoldItalicFont = Crimson-BoldItalic
]{Crimson-Roman}

所有这些信息都可以在fontspec 手册

编辑

由于您在使用 LuaTeX 时似乎仍然遇到问题,我认为逐步发布我的程序可能有助于识别问题。我的texlive发行版来自 MacPorts;运行后lualatex -v返回以下内容:This is LuaTeX, Version beta-0.70.2-2013011221 (TeX Live 2012/MacPorts 2012_5)

  • 我从此链接。字体文件名为LibreBaskerville-Regular.otfLibreBaskerville-Bold.otfLibreBaskerville-Italic.otf
  • 我安装的字体如下用户字体双击 Finder 中的字体文件。
  • 我创建了一个名为的文件,baskerville.tex其内容如下。(我将我的用户名替换为<username>)。
\documentclass[11pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont[
    Path           = /Users/<username>/Library/Fonts/,
    Extension      = .otf,
    Ligatures      = TeX,
    BoldFont       = LibreBaskerville-Bold,
    ItalicFont     = LibreBaskerville-Italic
]{LibreBaskerville-Regular}
\begin{document}
This is a test.
\end{document}
  • 我使用命令编译了该文件lualatex baskerville.tex

答案2

如果您的新字体已存在~/.fonts但无法被识别mkluatexfontdb,请尝试以下操作:

OSFONTDIR=${HOME}/.fonts:/usr/share/fonts//:/usr/share/texmf/fonts//   
mkluatexfontdb --force --verbose=-1 -vvv

答案3

在 OSX 上,我能够按照以下方式使事情正常运作:

  1. 安装至默认用户位置 ( /Users/john/Library/Fonts)
  2. mkluatexfontdb --force --verbose=-1 -vvv

这就是全部了!

答案4

使用来自的解决方案空指针,我尝试将 Cardo 与 LuaLaTex 一起使用,但遇到了找不到字体的问题。

以下是我对他的回答所做的修改,以便它对我有用。基本上,忽略 FontBook 为字体指定的名称,并使用文件名减去扩展名(可以在⌘ + iFontBook 中找到并搜索Location

\usepackage{fontspec}
\setmainfont[
    Path       = /Library/Fonts/, 
    Extension  = .ttf, 
    Ligatures  = TeX, 
    BoldFont   = Cardob101, 
    ItalicFont = Cardoi99,
]{Cardo104s}

注意:即使是常规字体名称(即\setmainfont[...]{regular-font-name})也需要是 Finder 中的文件名减去扩展名。

相关内容