在 ConTeXt 中,除了常规和粗体之外,还有其他规范的方法来访问字体粗细吗?有不是工作:
\definefontfamily [myfamily] [serif][Calluna]
\definefontfamily [myfamily] [sans] [Calluna Sans Light]
\setupbodyfont [myfamily]
\starttext
1. Avec Serif\\
{\ss 2. Sans Serif}
\blank
\it 3. Avec Serif\\
\ss\bi 4. Sans Serif
\stoptext
第 1 行和第 3 行显示正常,分别为常规衬线和常规斜体衬线;包含的行\ss
显示为常规衬线。如果我在系列定义中省略,则Light
一切都按预期工作,即第 2 行显示为常规无衬线,第 4 行显示为粗体无衬线斜体。
我确实有这些字体,Gnome 字体管理器也知道它们,而且mtxrun --script fonts --list --all --pattern=Calluna*
:
calluna callunablack /home/thomas/.local/share/fonts/exljbris - Calluna-Black.otf
callunablack callunablack /home/thomas/.local/share/fonts/exljbris - Calluna-Black.otf
callunabold callunabold /home/thomas/.local/share/fonts/exljbris - Calluna-Bold.otf
callunaboldit callunaboldit /home/thomas/.local/share/fonts/exljbris - Calluna-BoldIt.otf
callunabolditalic callunaboldit /home/thomas/.local/share/fonts/exljbris - Calluna-BoldIt.otf
callunait callunait /home/thomas/.local/share/fonts/exljbris - Calluna-It.otf
callunaitalic callunait /home/thomas/.local/share/fonts/exljbris - Calluna-It.otf
callunalight callunalight /home/thomas/.local/share/fonts/exljbris - Calluna-Light.otf
callunanormal callunait /home/thomas/.local/share/fonts/exljbris - Calluna-It.otf
callunaregular callunaregular /home/thomas/.local/share/fonts/exljbris - Calluna-Regular.otf
callunasans callunasansblack /home/thomas/.local/share/fonts/CallunaSansBlack.otf
callunasansblack callunasansblack /home/thomas/.local/share/fonts/CallunaSansBlack.otf
callunasansblackitalic callunasansblackitalic /home/thomas/.local/share/fonts/CallunaSansBlackItalic.otf
callunasansbold callunasansbold /home/thomas/.local/share/fonts/CallunaSansBold.otf
callunasansbolditalic callunasansbolditalic /home/thomas/.local/share/fonts/CallunaSansBoldItalic.otf
callunasansdemibold callunasanssemibold /home/thomas/.local/share/fonts/CallunaSansSemiBold.otf
callunasansitalic callunasansitalic /home/thomas/.local/share/fonts/exljbris - CallunaSans-Italic.otf
callunasanslight callunasanslight /home/thomas/.local/share/fonts/CallunaSansLight.otf
callunasanslightitalic callunasanslightitalic /home/thomas/.local/share/fonts/CallunaSansLightItalic.otf
callunasansnormal callunasansitalic /home/thomas/.local/share/fonts/exljbris - CallunaSans-Italic.otf
callunasansregular callunasansregular /home/thomas/.local/share/fonts/exljbris - CallunaSans-Regular.otf
callunasanssemibold callunasanssemibold /home/thomas/.local/share/fonts/CallunaSansSemiBold.otf
callunasanssemibolditalic callunasanssemibolditalic /home/thomas/.local/share/fonts/CallunaSansSemiBoldItalic.otf
callunasemibold callunasemibold /home/thomas/.local/share/fonts/exljbris - Calluna-Semibold.otf
callunasemiboldit callunasemiboldit /home/thomas/.local/share/fonts/exljbris - Calluna-SemiboldIt.otf
说callunasanslight
代替Calluna Sans Light
也行不通。我试图使用 Sans Light 和 Sans Semibold 代替 Sans 和 Sans Bold。但除了 和 之外,如果能有 light、semibold 和 heavy 字体切换就更好\bf
了\tf
。
顺便说一句:更大的问题实际上是:在 ConTeXt 中哪里可以找到关于此类内容的文档???ConTeXt
对于谷歌来说这是一个很难找到的词!
编辑:我找到了一种解决此问题的方法,至少是部分解决此问题:
\definefontfamily [myfamily][sans] [Calluna Sans]
[tf=Calluna Sans Light,
it=Calluna Sans Light Italic,
bf=Calluna Sans SemiBold,
bi=Calluna Sans SemiBold Italic,
sc=Calluna Sans Light]
它不在定义或描述\definefontfamily
中语境花园。那里根本没有描述,只有一些例子。
无论如何,我仍然缺少(a)半粗体小型大写字母和(b)一种使所有粗细“同时”可访问的方法。
答案1
要使用单一字体访问更多替代方案,您必须先使用命令创建其他替代方案\definefontalternative
。在我的示例中,我为浅色和中等样式添加了新定义,对于替代方案本身的名称,每个名称只能有两个字母,并且您应确保不会覆盖任何重要命令,例如,下面我覆盖了语言切换,您lithuanian
可以忽略它,因为您仍然可以\language[lt]
在文档中使用。
\definefontalternative[lt] % light
\definefontalternative[li] % lightitalic
\definefontalternative[md] % medium
\definefontalternative[mi] % mediumitalic
现在,您可以在打字稿中添加浅色和中等样式的条目,并将同义词映射到字体文件,对于同义词的名称,您应该坚持默认名称,例如,我使用的SerifLight
字体是浅色样式。
\starttypescript [serif] [antykwa-torunska-extended]
\definefontsynonym [SerifLight] [file:antykwatorunskalightregular] [features=default]
\definefontsynonym [SerifLightItalic] [file:antykwatorunskalightitalic] [features=default]
\definefontsynonym [Serif] [file:antykwatorunskaRegular] [features=default]
\definefontsynonym [SerifItalic] [file:antykwatorunskaitalic] [features=default]
\definefontsynonym [SerifMedium] [file:antykwatorunskamedregular] [features=default]
\definefontsynonym [SerifMediumItalic] [file:antykwatorunskameditalic] [features=default]
\definefontsynonym [SerifBold] [file:antykwatorunskabold] [features=default]
\definefontsynonym [SerifBoldItalic] [file:antykwatorunskabolditalic] [features=default]
\definefontsynonym [SerifCaps] [file:antykwatorunskaregular] [features=smallcaps]
\stoptypescript
现在到了重要的部分,我将使用命令将轻量和中等样式的文件分配给其他替代方案\definebodyfont
。
\starttypescript [serif] [antykwa-torunska-extended]
\definebodyfont [default] [rm]
[lt=SerifLight sa 1,
li=SerifLightItalic sa 1,
tf=Serif sa 1,
it=SerifItalic sa 1,
md=SerifMedium sa 1,
mi=SerifMediumItalic sa 1,
bf=SerifBold sa 1,
bi=SerifBoldItalic sa 1,
sc=SerifCaps sa 1]
\stoptypescript
完成后,我现在可以创建一种支持除默认提供的字体之外的替代字体的新字体(\tf
等\it
)。
\definetypeface[antykwa-torunska-extended][rm][serif][antykwa-torunska-extended][default]
\setupbodyfont[antykwa-torunska-extended]
\starttext
\starttabulate[|l|l|]
\NC \tex{lt} \NC \lt Light \NC\NR
\NC \tex{li} \NC \li LightItalic \NC\NR
\NC \tex{tf} \NC \tf Regular \NC\NR
\NC \tex{it} \NC \it Italic \NC\NR
\NC \tex{md} \NC \md Medium \NC\NR
\NC \tex{mi} \NC \mi MediumItalic \NC\NR
\NC \tex{bf} \NC \bf Bold \NC\NR
\NC \tex{bi} \NC \bi BoldItalic \NC\NR
\NC \tex{sc} \NC \sc SmallCaps \NC\NR
\stoptabulate
\stoptext
答案2
我对 ConTeXt 还比较陌生,但我认为解决任何字体加载问题的规范方法是编写 typescript。要访问半粗体小写字母,您必须执行\setff{smallcaps}\bf
。这是因为\sc
和\bf
不是可加的(就像在 Plain TeX 中一样)。一旦您使用 切换到小写字母,\setff
您就可以使用助记符字体开关访问所有不同的样式。
我没有专有的 Calluna 字体,所以我使用 TeX Gyre Termes 和 TeX Gyre Heros。只需替换文件即可应该工作。
\starttypescriptcollection [calluna]
\starttypescript [serif] [calluna]
\definefontsynonym [Serif] [file:texgyretermes-regular.otf] [features=default]
\definefontsynonym [SerifItalic] [file:texgyretermes-italic.otf] [features=default]
\definefontsynonym [SerifBold] [file:texgyretermes-bold.otf] [features=default]
\definefontsynonym [SerifBoldItalic] [file:texgyretermes-bolditalic.otf] [features=default]
\definefontsynonym [SerifCaps] [file:texgyretermes-regular.otf] [features=smallcaps]
\stoptypescript
\starttypescript [sans] [calluna]
\definefontsynonym [Sans] [file:texgyreheros-regular.otf] [features=default]
\definefontsynonym [SansItalic] [file:texgyreheros-italic.otf] [features=default]
\definefontsynonym [SansBold] [file:texgyreheros-bold.otf] [features=default]
\definefontsynonym [SansBoldItalic] [file:texgyreheros-bolditalic.otf] [features=default]
\definefontsynonym [SansCaps] [file:texgyreheros-regular.otf] [features=smallcaps]
\stoptypescript
\starttypescript [calluna]
\definetypeface [calluna] [rm] [serif] [calluna] [default] [features=default]
\definetypeface [calluna] [ss] [sans] [calluna] [default] [features=default]
\stoptypescript
\stoptypescriptcollection
\setupbodyfont[calluna]
\starttext
{
\tf Serif
\it SerifItalic
\bf SerifBold
\bi SerifBoldItalic
}
{
\setff{smallcaps}
\tf serifcaps
\it serifitaliccaps
\bf serifboldcaps
\bi serifbolditaliccaps
}
{
\ss Sans
\it SansItalic
\bf SansBold
\bi SansBoldItalic
}
{
\setff{smallcaps}
\ss SansCaps
\it SansItalicCaps
\bf SansBoldCaps
\bi SansBoldItalicCaps
}
\stoptext
答案3
如果你不想使用打字稿:
\definefontalternative[LT] % Using capitals avoids command shadowing
\definefontalternative[MD]
\definefontfamily [calluna]
[sans]
[Calluna Sans]
[
LT=Calluna Sans Light,
MD=Calluna Sans Medium,
]
\setupbodyfont [calluna]
类似地,你可以定义你需要的任何其他权重,但请记住你限制为两个字符(下一个字符设置字体的大小)。
也要使用小型大写字母,简单\MD\smallcaps
就可以了。