使用 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.lua
了Cardo
终于到了;
因此,我自然而然地尝试在重置计算机后再次编译文本,并且(您现在可能已经猜到了)我(再次!)收到了以下错误消息:
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.otf
、Crimson-Italic.otf
和Crimson-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.otf
、LibreBaskerville-Bold.otf
和LibreBaskerville-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 上,我能够按照以下方式使事情正常运作:
- 安装至默认用户位置 (
/Users/john/Library/Fonts
) mkluatexfontdb --force --verbose=-1 -vvv
这就是全部了!
答案4
使用来自的解决方案空指针,我尝试将 Cardo 与 LuaLaTex 一起使用,但遇到了找不到字体的问题。
以下是我对他的回答所做的修改,以便它对我有用。基本上,忽略 FontBook 为字体指定的名称,并使用文件名减去扩展名(可以在⌘ + i
FontBook 中找到并搜索Location
。
\usepackage{fontspec}
\setmainfont[
Path = /Library/Fonts/,
Extension = .ttf,
Ligatures = TeX,
BoldFont = Cardob101,
ItalicFont = Cardoi99,
]{Cardo104s}
注意:即使是常规字体名称(即\setmainfont[...]{regular-font-name}
)也需要是 Finder 中的文件名减去扩展名。