我想在 ConTeXt 中使用 EBGaramond 字体“历史”功能,就像我在 LaTeX 中使用它们一样,但没有成功。我认为我的 ConTeXt 中缺少了某些东西,但我看不出是什么。我举了 2 个例子来说明我想要什么。LaTeX(工作)示例:
\documentclass[fontsize=8pt]{scrbook}
\usepackage{fontspec}
\defaultfontfeatures{Contextuals=Alternate,Numbers=OldStyle,RawFeature={+ss02,+cv01,+cv03,+dlig}}
\setmainfont[RawFeature={+ss02,+cv01,+cv03,+ss05,+dlig,+cv91},Ligatures=Historic]{EBGaramond12-Regular.otf}
\begin{document}
session
univers
Que
Quelconque
Joseph
¶
\end{document}
ConTexT(部分不起作用)示例:
\enableregime[utf]
\language[fr] % french hyphenation
\definefontfeature[oldstyle][calt=yes,onum=yes,ss02=yes,cv01=yes,cv03=yes,ss05=yes,dlig=yes,cv91=yes,hlig=yes,liga=yes]
\definefontfamily[mainfont][serif][EBGaramond][features=oldstyle]
\setupbodyfont[mainfont, 8pt]
\starttext
session
univers
Que
Quelconque
Joseph
¶
\stoptext
从 pdf 输出中,我看到 s 没有转换为长 s,前导 u 没有转换为 v,中间 v 没有转换为 u,并且 Q 没有长尾。但是 J (+cv03) 和 pilcrow (+cv91) 显示正确。
使用 XeTeX 和 LuaTeX 构建 LaTeX 示例会产生相同的输出。
答案1
您的代码没有任何问题(除了 \enableregime,它已过时但不会造成任何损害)。但是,它不起作用 - 我不知道为什么。当您逐个定义和添加字体功能时,它们确实有效(这可能是上下文字体加载机制的一个错误,我记得列表中多次提到了 ebgaramond 字体)。所以我的示例是:
\definefontfeature[f:cv01] [cv01=yes]
\definefontfeature[f:cv03] [cv03=yes]
\definefontfeature[f:cv91] [cv91=yes]
\definefontfeature[f:calt] [calt=yes]
\definefontfeature[f:dlig] [dlig=yes]
\definefontfeature[f:hlig] [hlig=yes]
\definefontfeature[f:liga] [liga=yes]
\definefontfeature[f:onum] [onum=yes]
\definefontfeature[f:ss02] [ss02=yes]
\definefontfeature[f:ss05] [ss05=yes]
\definefontfamily [mytest] [serif] [EBGaramond]
\setupbodyfont [mytest,14pt]
\startTEXpage
{\addff{f:cv01} \addff{f:cv03} \addff{f:cv91} \addff{f:calt}\addff{f:onum} \addff{f:ss02} \addff{f:ss05} \addff{f:dlig} \addff{f:hlig} \addff{f:liga}
official fist fiction
session
univers
Que
Quelconque
Joseph
¶}
\stopTEXpage
这使:
我想这正是您所期望的。但是,我同意关于这些功能的评论:它们是不错的玩具,适合展示这些东西,但您不会想用它们进行任何严肃的语言排版;这些规则有太多例外。