我想这个问题已经在我可以在数学模式下将希腊字母加粗吗?,但它没有得到我想要的答案,所以我会再试一次:)
我对这里的粗体数学不感兴趣,我的情况是这样的:我喜欢lmtt
电传打字机字体,我唯一想做的就是让它lmtt
更粗一点;我知道[lighttt]
,但我不太喜欢它——我不想因为这个而换成不同的打字机字体。但这个问题也可能发生在不同的环境中,这就是为什么我想用更通用的术语问:在 Latex 中,是否有可能通过用更粗的线条重新“描边”字母来“得出”字体的“更粗”版本?
我猜,开箱即用 - 但我想确认一下。据我所知,在 PDF 本身中,您声明一种字体,以及它的系列/大小,当您放置文本 PDF 基元时,这些字母仅用于查找字体字形,然后放置该字形。由于那里没有字体笔触的“线宽”参数(我记得),我怀疑 Latex 也不能使用类似的东西。
然而,对于每个这样的“人工”粗体字母,也许可以用 Latex 来达到以下目的:
- 用给定的笔画重新绘制字母
- 将描边转换为填充路径
- 找到填充路径和从描边派生的路径的并集
- 将此向量作为字形插入 PDF 中导出的新字体表中
甚至不确定 Latex 是否执行这些类型的操作(尽管我猜 Tikz 或 LuaLatex 可能会执行)——但我认为了解它们的可能性会很好。
我也刚刚发现了这个:
对于实际打印,您可以设置 MF 选项并生成新的位图来使用(作为 Type 3 位图字体),但这是一个尴尬的解决方案。
因此,显然,使用 Metafont 有可能实现位图方法 - 但在这里我对矢量方法感兴趣。我也可以使用外部程序,只要所有工作都可以由 Latex 启动(通过-shell-escape
)。
答案1
如果您不反对使用xelatex
,您可以尝试FakeBold
选项fontspec
。请参见以下示例:
% !TEX program=xelatex
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\darktt[AutoFakeBold=2.5]{Latin Modern Mono}
\newfontfamily\blacktt[AutoFakeBold=5]{Latin Modern Mono}
\def\test{abcde ABCDE}
\begin{document}
\begin{tabular}{lr}
{\ttfamily \test} & default typewriter \\
{\ttfamily\bfseries \test} & default typewriter bold \\
{\darktt\bfseries \test} & Latin Modern Mono FakeBold 2.5 \\
{\blacktt\bfseries \test} & Latin Modern Mono FakeBold 5 \\
\end{tabular}
\end{document}
此处的示例仅用于生成该FakeBold
功能的演示。真实示例如下所示:
% !TEX program=xelatex
\documentclass{article}
\usepackage{fontspec}
\setmonofont[AutoFakeBold=2.5]{Latin Modern Mono}
\begin{document}
\ttfamily Bla blal bla \textbf{bold Bla} bla.
\end{document}
但请注意,这FakeBold
不适用于 lualatex,显然也不适用于 pdflatex。