我正在尝试找到一种让 LaTex 默认字体“Computer Modern”(CM)变粗(也称为“变黑”)的好方法。我真的很喜欢这种字体,尤其是在数学模式下,所以像“更改字体”这样的答案不符合要求,抱歉。:) 唯一的问题是 CM 的线条很细,所以字体看起来很轻。有几种方法可以让 CM“变粗”(我不是在谈论大胆的系列字体!这个看起来不一样,不是我想要的。)可以在 tex.stackexchange 的其他地方找到:
1)在XeLaTex中使用FakeBold: 如何让数学字体稍微变粗一点?
2)按照此处的建议使用 pdfliteral: LuaLaTeX 中的假粗体
3)按照此处的建议使用 pdfrender: 使用 pdfrender 使整个文档变得更重
但是,那里给出的答案不适合这里:1)需要 XeLaTex(我只有 PDFLaTex,而且我无法安装其他软件,因为我不是系统管理员。)使用 2)+ 3)产生的结果看起来非常好。实际上它看起来确切地就像我想要的那样。然而,它只适合肯定阅读器软件(Evince 和 Okular 的某些版本)。使用其他阅读器软件(例如 Okular 的其他版本或甚至 Adobe Reader)时,字符的基线不太一样,或者字母内部有白色瑕疵。
我认为,解决问题的唯一选择是创建合适的字体。(2)和 3)中的解决方案不会创建新字体,它们是操纵原始 CM 字体显示方式的黑客攻击。)这是我的问题:如何创建“基于矢量”(而非基于像素)的字体恰当的Computer Modern 的字体具有与 2) 和 3) 中用 pdfrender/pdfliteral 获得的结果相同的“厚度”属性?我对字体一无所知。基本思路应该是采用原始 CM 字体并对其几何形状进行一些调整。有一篇德文帖子:
http://www.typografie.info/3/topic/22238-ist-die-computer-modern-wirklich-zu-d%C3%BCnn/
他们在那里谈到了 CM 的“metafont 源文件”中的“blacker”参数。但是他们制作的是基于像素的字体,我不太清楚他们到底在做什么。
结论:我想要一个厚的(不是大胆的) CM 类字体,适用于任何阅读器软件,并且应该可以与 PDFLaTex 一起使用。感谢您的帮助。
为了让您了解我的想法:这是一篇(著名的)文章,我尝试使用修改后的 CM 字体来模仿其“老派”外观:
http://math.stanford.edu/~lekheng/flt/wiles.pdf
我将其放大并与我自己的“pdfliteral”结果进行了比较,我的结论是它确实是更厚的 CM(可能是因为它是之后打印和扫描的,正如某些页面上的文本行不太水平所表明的那样)。
我现在知道如何澄清我的问题了:使用 METAFONT,如何从原始 CM metafont 源文件创建新字体(http://www.ctan.org/pkg/cm-mf)但黑度参数更高?
答案1
一些选项包括这些(见下面的示例):
使用“Latin Modern”(
\usepackage{lmodern}
),这是 Computer Modern 的更新版本。在我看来,它在屏幕上和打印时看起来比原来的要简洁一些。(下面的例子)比例“Computer Modern”如下所示(感谢这个答案)
使用字体“Computer Concrete”(
\usepackage{concmath}
),这是 Knuth 使用 METAFONT 设计的 Computer Modern 的较粗版本。使用类似但更粗的字体。例如
gfsbodoni
(\usepackage[default]{gfsbodoni}
) 属于同一“现代”字体系列,但可能具有更理想的粗细。直接使用METAFONT,根据自己的喜好进行调整。这种事情就是那个程序的最初目的。
(编辑)
字体缩放的演示(上面的#2):
这是一种缩放字体的方法。您要求将较小的字体大小放大到较大的字体大小;由于较小的字体大小有较粗的笔画,因此您会得到看起来更粗但更宽的字体。您可以尝试不同的比例。此示例放大cmr7
到默认的 10pt。
(我还没有让斜体起作用,并且我认为粗体没有缩放,但希望其他人可以添加这一点。)
\documentclass{article}
\usepackage[T1]{fontenc}
\DeclareFontShape{T1}{cmr}{mx}{n}%
{<->cmr7}{}
\DeclareFontShape{T1}{cmr}{mx}{it}%
{<->cmr7}{}
\AtBeginDocument{%
\fontseries{mx}\selectfont%
}
% to create dummy text for testing
\newcommand{\quickfox}{The quick brown fox jumps over the lazy dog}
\newcommand{\Fox}{The Quick Brown Fox}
\newcommand{\Dog}{The Lazy Dog}
\newcommand{\Jumps}{Jumps Over}
\usepackage{lipsum}
\begin{document}
\section{\Fox}
\quickfox?
\subsection{\Dog}
\emph{\quickfox.}
\paragraph{\Jumps}
\lipsum[1]
\end{document}
因此,cmr7 缩放至 10pt:
为了比较,下面是示例lmodern
并且无缩放:
这是gfsbodoni
:
这是concmath
(计算机混凝土)(正如评论中所指出的,尽管它源自 Computer Modern,但它确实属于不同的字体系列):
(编辑)
以下是关于如何开始修改 Metafont 的一个非常基本的演示。(这是我第一次这样做,所以请谨慎对待。)
- 查找 Computer Modern 10pt 的 Metafont 源
TEXMF-DIST/fonts/source/public/cm/crm10.mf
。 - 将此文件复制到单独的工作目录,这样就不会弄乱您的 TeXLive 安装。
- 进入并将“厚度”和“宽度”参数更改为更大的值。以新名称保存文件,例如,
cmthick.mf
- 例如第 25 行:
thin_join#:=10/36pt#; % width of extrafine details
- 例如第 25 行:
- 使用 METAFONT 编译字体(参见
texdoc metafont
):mf '\mode=localfont; input cmthick'
gftopk cmthick.600gf
使用新字体。由于这只是为了演示,我不知道我在做什么,所以我只是在 Plain TeX 中执行了此操作。文件
cmthicktest.tex
:The quick brown fox jumps over the lazy dog. \font\cmthick=cmthick \cmthick The quick brown fox jumps over the lazy dog. \bye
编译后
tex cmthicktest && dvips cmthicktest && ps2pdf cmthicktest.ps
我得到以下内容:
这只是为了表明这是可以做到的。我不知道这是否是正确的方法。
答案2
我不记得这个方法是在哪里找到的,但我在这里分享它,因为这是要求更现代的计算机的众多问题之一。我希望这就是你要找的,这也是我要找的。
在您的 modes.mf 中添加:
mode_def myblacker =
mode_param (pixels_per_inch, 1200);
mode_param (blacker, 3.5);
mode_param (fillin, 0);
mode_param (o_correction, 1);
mode_common_setup_;
enddef;
如果您查看该文件,您可能会找到添加它的位置(有一长串的模式)。您可能希望更改值以适合您的打印机和口味。上面给出的值适合我工作中的打印机(和我的口味)。
接下来运行
fmtutil-sys --byfmt mf
以 root 身份登录。现在您已设置为使用此模式。以下是最小工作文件:
\pdfpkresolution=1200
\pdfpkmode={myblacker}
\pdfmapfile{}
\documentclass{article}
\begin{document}
Some text, and a formula: $D\tan x=1+\tan^2x$.
\end{document}
只需像往常一样使用 pdflatex 进行编译,希望您能够满意。
最后两点说明:
1) 此方法会使您的文件不太可移植,因为其他人可能没有添加模式 myblacker。如果您需要在其他地方进行编译,最好使用\pdfpkmode={lexmarkr}
或在 modes.mf 中找到适合您口味的其他模式。因此,不需要准备的最小工作文件是:
\pdfpkresolution=1200
\pdfpkmode={lexmarkr}
\pdfmapfile{}
\documentclass{article}
\begin{document}
Some text, and a formula: $D\tan x=1+\tan^2x$.
\end{document}
2) 我有点失望,尽管我的文档中的文本现在看起来更厚,因此更像您链接到的论文,但相比之下我的数学结果仍然非常薄。;)
答案3
我不确定在问题首次发布时该包是否存在,但 mlmodern 字体(和 mlmodern 包)确实是“更黑”的 lmodern,这意味着本质上是一种更黑的计算机现代罗马字体。