在 Latex 中,通过较粗的笔触使字体(作为矢量)人为加粗?

在 Latex 中,通过较粗的笔触使字体(作为矢量)人为加粗?

我想这个问题已经在我可以在数学模式下将希腊字母加粗吗?,但它没有得到我想要的答案,所以我会再试一次:)

我对这里的粗体数学不感兴趣,我的情况是这样的:我喜欢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。

相关内容