LaTeX 令人讨厌的方面之一是默认字体数量有限,而且制作新字体“LaTeX”非常麻烦。我有一组 TrueType 字体想要准备使用,而且我肯定想确保我有这些字体的矢量版本(即不是 Type 3/位图版本)。有没有相对轻松的方法来做到这一点?
答案1
一个解决方案是使用西拉特克斯,它可以让您(大部分)轻松使用系统字体。
答案2
最简单的方法是使用 XeTeX 或 LuaTeX 和fontspec
软件包。它们可以使用系统上安装的任何 TTF 字体。对于 Linux,这意味着系统范围的字体和您输入的任何字体~/.fonts/
(例如通过 Nautilus 安装它们)。
要使用字体,您只需加载fontspec
包并设置字体:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Arial}
\begin{document}
Lorem ipsum...
\end{document}
xelatex
然后使用或编译该文档lualatex
。fontspec
文档描述了改变字体的所有可能性。
唯一的缺点(据我所知)是您只能生成 .pdf 文件,并且需要足够新的 TeX 发行版(TeX Live 2009 应该适用于 XeTeX,而 Tex Live 2010 应该适用于 LuaTeX)。
答案3
PdfTeX 的流程如下(有点取决于你的发行版):
- 从 CPAN 的 Fontools 获取 autoinst.pl
- 从 lcdf-typetools 获取 otf2tfm
- 在所有 ttfs 上运行 autoinst.pl(使用 Perl)
- 添加生成的 PdfTeX 字体映射(例如在 MikTeX 中)
initexmf --edit-config-file updmap
,添加Map yourmap.map
并运行initexmf --mkmaps
)
您也可以手动完成整个过程(autoinst.pl 只是一个智能包装器):
- 使用以下方法创建 tfm 指标和 ttfonts.map
ttf2tfm
- 使用创建虚拟字体表
vptovf
- 使用以下方式创建 afm 指标
ttf2afm
- 使用以下方式创建 pdf 字体映射
afm2tfm
- 将*.tfm, *.afm, *.ttf, *.vf 放入
fonts/tfm/
等中。 - 添加字体映射
- 创建一个包/sty,将各种字体拉入一个字体系列(这是我遇到的问题)
我的运行命令的 ruby 脚本如下所示:
require 'fileutils'
basename = "Nexus"
open("#{basename}.map", 'a') { |pdfFontMap|
Dir["#{basename}*.ttf"].each{ |file|
file.sub!(/\.ttf$/, "")
ttf = "#{file}.ttf"
file.gsub!(/_/,"") # Remove underscores
puts `ttf2tfm #{ttf} -q -T T1-WGL4.enc -v ec#{file}.vpl rec#{file}.tfm >> ttfonts.map`
puts `vptovf ec#{file}.vpl ec#{file}.vf rec#{file}.tfm`
puts `ttf2afm -e T1-WGL4.enc -o rec#{file}.afm #{ttf}`
pdfFontMap.puts `afm2tfm rec#{file}.afm -T T1-WGL4.enc rec#{file}.tfm`.gsub(/\r|\n/, "") + " <#{ttf}"
}
}
您可以在以下位置找到有关手动方式的更多详细信息:
http://www.radamir.com/tex/ttf-tex.htm
附言:
initexmf --update-fndb
每次将新文件放入某处时运行
答案4
LuaTeX 带来了 TTF 支持,但我不知道它现在有多成熟。