经常会有人问如何手动安装字体,通常指的是“Type1 字体”。所以我觉得我们应该写一个关于需要考虑的几个方面的一般性答案。
除了通常的做法手动安装软件包看来,对于字体来说,还需要进一步的步骤。这些步骤是什么?或更好:
如何在 TeX 发行版中手动安装字体及其相关的支持文件?
答案1
第零
在开始之前,请确保确实无法使用 TeX 发行版的包管理器进行安装。对于 TeX Live,另请参阅脚本获取非免费字体(TeX.SX 上的用户 dcmt 写道很好的答案)以及这个问题和答案:TeX Live 中的错误 – 字体...无法加载:未找到度量 (TFM) 文件。
在广泛的部分已经简要描述TeX 用户组:安装 TeX 字体。
Siep Kroonenberg 描述了一种不同的方法字体安装浅显易懂(PDF,荷兰 TeX 用户组 NTG 的网站;与 TUGboat 文章相同:tb86kroonenberg-字体.pdf。
第一的
您必须将字体文件安装到本地 texmf 树中。
为了微特克斯你也许必须创建这样的本地 texmf 树。
在TeX 直播
texmf-local
您已经在某个地方有一个用于系统范围本地安装的目录(系统变量TEXMFLOCAL
),但您也可以创建用户特定路径(TEXMFHOME
)。要找出实际路径或它们是否已经存在,您可以分别输入kpsewhich --var-value=TEXMFLOCAL
或TEXMFHOME
。
TEXMFHOME
不建议安装字体,因为之后你必须手动更新每次任何 Type1 字体(见下文)相关内容都已更新!请参阅为什么我不应该使用 getnonfreefonts 安装其他字体?为什么我不应该使用 updmap 安装或删除字体?了解所有血腥细节(以及如果太晚读到此警告该怎么办)。
如果字体包包含在打包文件中,那么在大多数情况下,您可以安全地将子目录提取到此本地 texmf 树中,但在执行此操作之前,您应该通过与以下树结构进行比较来控制这一点。例如,也许所有需要的子目录都打包在不需要的texmf
目录下。
笔记:有时map
文件会被包含两次。在最近的 TeX 发行版中,你只需要下面提到的那些文件<local-texmf>/fonts/map/<engine-name>/...
,不是这些中<local-texmf>/<engine-name>/...
– 大部分<engine-name>
是dvips
,但有时也是pdftex
,并且很少只是另一个。
如果打包文件中没有子目录结构,则必须通过<local-texmf>
复制相应的主 texmf 树(称为 TDS,TeX 目录结构)——这里显示了几乎完整的结构(在主 texmf 树中,它实际上更复杂),对于单个字体包来说,很可能只需要部分内容:
<local-texmf>
+--fonts
|--afm
| +--<font-package-name>
| +--<*.afm files>
|--enc
| +--<engine-name>
| +--<font-package-name>
| +--<*.enc files>
|--map
| +--<engine-name>
| +--<font-package-name>
| +--<*.map files>
|--ofm
| +--<font-package-name>
| +--<*.ofm files>
|--opentype
| +--<font-package-name>
| +--<*.otf files>
|--ovf
| +--<font-package-name>
| +--<*.ovf files>
|--ovp
| +--<font-package-name>
| +--<*.ovp files>
|--pfm
| +--<font-package-name>
| +--<*.pfm files>
|--pk
| +--<printer-type>
| +--<font-package-name>
| +--<font-resolution>
| +--<*.pk files>
|--sfd
| +--<font-package-name>
| +--<*.sfd files>
|--source
| +--<font-package-name>
| +--<*.mf files>
|--tfm
| +--<font-package-name>
| +--<*.tfm files>
|--truetype
| +--<font-package-name>
| +--<*.ttf files>
|--type1
| +--<font-package-name>
| +--<*.pfa/*.pfb files>
+--vf
+--<font-package-name>
+--<*.vf files>
在主 texmffonts
树中(而不是<font-package-name>
实际上在几乎所有目录中),都有一个额外的<font-vendor>
或public
介于两者之间的。
此外,如今大多数字体都是以带有文档和样式文件的软件包形式发货的。这些
<local-texmf>
|--doc
| +--fonts
| +--<font-package-name>
| |--<document files and their *.tex sources>
| +--<example files>
+tex
|--latex
| +--<font-package-name>
| |--<*.fd files>
| |--<*.sty files>
| +--<*.tex files [no document sources and examples]>
+--plain
+--<font-package-name>
|--<*.def files>
+--<*.tex files [no document sources and examples]>
注意fonts
和tex
处于同一水平
<local-texmf>
|
+fonts
|
+tex
第二
复制文件后,您必须更新 TeX 发行版的文件名数据库:
在微特克斯(另请注意)MiKTeX 管理模式和用户模式的区别)
使用 GUI:在“开始”菜单中,转到 MiKTeX 条目并打开设置 - 如果您以管理员身份运行,则当然是“设置(管理员)”。将打开“MiKTeX 选项”窗口。转到“常规”选项卡,然后单击“刷新 FNDB”(FNDB = 文件名数据库)。
使用 CLI(命令提示符):执行
initexmf --update-fndb
(或更短initexmf -u
,以管理员身份添加交换机--admin
)。
在TeX 直播
Linux 和 MacOSX:
sudo mktexlsr
(或者,也许最好记住,用别名[符号链接到mktexlsr
]:sudo texhash
。视窗:
mktexlsr
(或别名texhash
:)
为了元字体文件(*.mf
)这就足够了。
为了Open-/TrueType字体文件(*.otf/*.ttf
,这里的目录名称具有误导性,因为文件扩展名不是谈论 OpenType 功能)你还应该运行fc-cache
(MiKTeX 和 TeX Live Windows)或者sudo fc-cache
(TeX Live Linux 和 MacOSX)在命令提示符下,然后您就准备好了。这些字体不需要再做任何事情。
但请注意,只要您不使用便携式 TeX 发行版,最好将 Open- 或 TrueType 字体安装到系统范围的字体目录中,因为无论如何都会搜索该目录并将字体添加到字体缓存中fc-cache
。
MiKTeX 便携式用户还阅读带有便携式 MiKTeX 的外部字体,版本 2.9, 请。
第三
为了Type1 字体(参见维基百科,PostScript 字体)需要采取进一步措施:
在微特克斯(对于 MiKTeX 便携式,也请阅读带有便携式 MiKTeX 的外部字体,版本 2.9!
在命令提示符下(此处没有 GUI)执行
initexmf --edit-config-file=updmap.cfg
(或initexmf --edit-config-file updmap
)updmap.cfg
。这将打开您的默认文本编辑器,其中包含用户配置文件下的文件%AppData%\MiKTeX\<version>\miktex\config\
。如果它尚不存在,则会创建它。如果添加开关,则文件将在(自 Windows Vista 起)或(直到 Windows XP,该字符串依赖于语言)
--admin
中创建/打开,并且对于没有自己的文件名数据库的所有用户有效。%AllUsersProfile%\MiKTeX\<version>\miktex\config\
%AllUsersProfile%\<Application Data>\MiKTeX\<version>\miktex\config\
<Application Data>
至少添加以下内容(带有 的行
#
是注释,我们在此假设 Map 文件的名称为fontname.map
)。# <font name> or <package name> or what fits better for you Map fontname.map
保存并退出。如果还有更多操作,应在自述文件中阅读。有关信息,您还可以打开在线帮助页面更新映射配置文件或者
updmap.cfg
在你的主MiKTeX\miktex\config
安装树中阅读其中的注释(但不要编辑,因为所有编辑都将在以后的更新中丢失!)。执行
initexmf -u
,这仅为活动用户更新字体名称数据库(如果您确定本地updmap.cfg
已经存在,则可以省略这一步)。执行
initexmf --mkmaps
(或更短updmap
)。
在TeX 直播(假设相应的地图文件名是
fontname.map
)在Linux 和 MacOSX执行
sudo updmap-sys --enable Map=fontname.map
,在视窗updmap-sys --enable Map=fontname.map
。再次更新文件名数据库,参见上面的第二步。
如果仍然有问题,您可以尝试这个答案中给出的方法:在 TexLive 上安装 MathTime Professional 2 字体时出现问题。
答案2
因为其他问题(不幸)与这个问题相关,所以我想提一下,这种自动安装可能会对其他人有所帮助:
sudo apt-get install texlive-full
将安装更多软件包,这可能会解决您的问题。它在 Ubuntu 20.04 上对我有用。
答案3
在 Windows 10 中,在 tex-live 中手动安装字体(*.ttf),请按照以下步骤操作,
- 在以下路径中创建具有字体名称的目录(例如),
*C:\texlive\2024\texmf-dist\fonts\truetype\public*
- 将 *.ttf 字体复制到新创建的目录中,
C:\texlive\2024\texmf-dist\fonts\truetype\public\jameel
- 复制文件后,您必须更新 TeX 发行版的文件名数据库:
C:\mktexlsr(或别名:texhash)
现在 *.ttf 字体已可以在 tex-live 环境中使用