如何使用覆盖在 ConTeXt 中创建缺失的粗体字体?

如何使用覆盖在 ConTeXt 中创建缺失的粗体字体?

我使用 ConTeXt 和一种名为“CMU Concrete”的字体。我想创建一种比提供的字体更好的粗体字体(它不够粗体)。我没有使用 FontForge 或假粗体,而是尝试通过创建命令\pmb(Poor Man's Bold ;) )直接在 ConTeXt 中执行此操作:

\defineeffect[outline][alternative=outer, rulethickness=0.3pt]
\define[1]\pmb{\startoverlay{\black#1}{\starteffect[outline]{\black#1}\stopeffect}\stopoverlay}

它对于孤立的单词很有效,但对于句子则不然:

比较

我该如何解决这个问题?提前致谢。

答案1

当你使用环境both的替代方案时effect,就不需要使用该overlay环境了。

\defineeffect[heavy][alternative=both,rulethickness=.5pt]

\starttext

\input ward

\starteffect[heavy]
\input ward
\stopeffect

\stoptext

粗体文本

答案2

看起来覆盖层将其内容放在一个框中,然后以轻微的偏移多次打印该框。显然,您不能在那里换行。

我建议使用直接 pdf 方法并在那里加粗字体。我为您准备了一个宏\pmb,其行为与通常的 类似\bf,但字体加粗程度更高。您可以使用 来控制粗细\pmbweight

在内部,\pmb我切换到普通粗体字体以利用调整后的字距来获得更粗的字形。

\definefontfamily[mainface][rm][CMU Concrete]
\setupbodyfont[mainface]
\def\pmbweight{0.05}
\def\pmbon{\pdfliteral direct{2 Tr \pmbweight\space w}}
\def\pmboff{\pdfliteral direct{0 Tr}}
\def\pmb{\aftergroup\pmboff\pmbon\bf}
\starttext
Platon, dans le {\it Phèdre}, parle d'un «privilège de la beauté» par
rapport aux autres essences.

{\bf
  Platon, dans le {\it Phèdre}, parle d'un «privilège de la beauté»
  par rapport aux autres essences.
}

{\pmb
  Platon, dans le {\it Phèdre}, parle d'un «privilège de la beauté»
  par rapport aux autres essences.
}
\stoptext

在此处输入图片描述

相关内容