在 ConTeXt 中切换到绝对字体大小

在 ConTeXt 中切换到绝对字体大小

是否有一种首选/支持的方法可以将当前字体大小切换为绝对ConT E Xt中的值?

维基页面字体切换参考手册描述诸如\tfb和 之类的命令\tfx,用于放大或缩小字体大小相对的到当前大小。

\switchtobodyfont接受绝对字体大小,但不会将字体大小调整回所需大小,如下所示:

切换到正文字体

\mainlanguage[en]
\setuppapersize[letter]
\setupbodyfont[modern,12pt]
\starttext

1. Normal text (12pt)

2. {\tt \{\backslash tfb \{\backslash switchtobodyfont[12pt] normal\}\}} \longrightarrow\ {\tfb tfb{\switchtobodyfont[12pt] normal}}

3. {\tt \{\backslash tfb \{\backslash switchtobodyfont[10pt] normal\}\}} \longrightarrow\ {\tfb tfb{\switchtobodyfont[10pt] normal}}

4. {\tt \{\backslash tfb \{\backslash switchtobodyfont[8pt] normal\}\}} \longrightarrow\ {\tfb tfb{\switchtobodyfont[8pt] normal}}

\stoptext

在上述所有\switchtobodyfont[<new_font_size>]项目中,最终的字体大小为更大<new_font_size>,最有趣的是,在(2)中使用\switchtobodyfont[12pt]可以保持字体大小不变。

根据这一观察,也许\switchtobodyfont[<new_font_size>]不是<new_font_size>绝对值,而是相对于<standard_font_size>\setupbodyfont[<standard_font_size>]这可以解释第 (2) 项中的字体大小未调整,因为12pt / 12pt = 1,但这只是一个猜测......

(上面的例子是为了说明目的而精心设计和简化的。)

答案1

您可以使用\fullrestoreglobalbodyfont。在下面的 MWE 中,我定义了一个命令来将此设置与新字体大小的选择相结合。与名称所暗示的不同,此设置是组内的本地设置。

\mainlanguage[en]
\setuppapersize[letter]
\setupbodyfont[modern,12pt]
\define[1]\globalfsize{\fullrestoreglobalbodyfont\switchtobodyfont[#1]}
\starttext
1. Normal text (12pt)

2. {\tt \{\backslash tfb \{\backslash switchtobodyfont[12pt]\}\}} \longrightarrow\ {\tfb tfb{\globalfsize{12pt} Normal} still tfb} Normal

3. {\tt \{\backslash tfb \{\backslash switchtobodyfont[10pt]\}\}} \longrightarrow\ {\tfb tfb{\globalfsize{10pt} Normal} still tfb} Normal

4. {\tt \{\backslash tfb \{\backslash switchtobodyfont[8pt]\}\}} \longrightarrow\ {\tfb tfb{\globalfsize{8pt} Normal} still tfb} Normal

\stoptext

在此处输入图片描述

相关内容