为什么 ConTeXt 有时会忽略周围的字体属性?

为什么 ConTeXt 有时会忽略周围的字体属性?

我正在处理一个包含各种字体样式和大小的文档。我使用命令,例如\ss更改为无衬线字体、\tfa将字体大小设置为“a”以及\bf将文本设为粗体。我还使用括号来定义哪些区域采用哪种格式。

我发现这种行为有时是不可预测的。以下是一个例子:

\starttext
    {\ss
        This is 12pt sans serif text. \crlf
        {\tfc This is 20.7pt sans serif text.} \crlf
        {\bf
            This is 12pt bold sans serif text. \crlf
    {\tfc This is 20.7pt bold sans serif text.} \crlf
    {\tfc \bf This is 20.7pt bold sans serif text.} \crlf
        }
     }
     This is 12pt serif text.
\stoptext

在此示例中,\ss第 2 行将括号内的所有文本设置为无衬线,但是,\bf第 5 行中的命令在第 7 行创建了粗体文本。

为什么第 7 行的文本忽略了\bf第 5 行的命令?

答案1

\bf都是\tf字体替代品。因此,一次只能激活一个。如果您只想根据abc值进行缩放,请使用:

\unprotect
\unexpanded\def\setbodyfontscale#1%
    {\font_helpers_set_current_font_size{#1}\the\everybodyfont}
\protect

\setbodyfontscale{c}

相关内容