On 9/9/2025 10:16 PM, Wolfgang Schuster wrote:
Am 09.09.2025 um 09:59 schrieb Hans Hagen via ntg-context:
On 9/9/2025 9:34 AM, Max Chernoff via ntg-context wrote:
Hi Hans,
OpenType contextual alternates ("calt") seem to be disabled by default
in ConTeXt. However, the OpenType spec recommends that this is enabled
by default
https://learn.microsoft.com/en-us/typography/opentype/spec/
features_ae#tag-calt
and it's enabled by default in both HTML and HarfBuzz
https://drafts.csswg.org/css-fonts/#default-features
https://harfbuzz.github.io/shaping-opentype-features.html
Changing this default in ConTeXt probably isn't possible due to
backwards compatibility concerns, so this is more of an FYI than a
request for any changes to be made.
Background: this came up in a recent TeX.SE question
https://tex.stackexchange.com/a/750767
where a new user was surprised by ConTeXt's default setting since it
makes some fonts render differently than other programs.
We started with opentype support (2005) when there wasn't much info
about it. The reference implementation was uniscribe so we had to
guess and compare with that. The xetex engine was using some libraries
and changed them later on. So we couldn't check that out either.
Now, when it comes to features, those experiences, also with specific
fonts, made us decide for the defaults. Over time the specification
became better and more complete but as you say: we want to remain
compatibility. (I assume that ltx folk spend substantial time on
checking changes in hb every time there is an update in tex live,
which is quite often if i look at git syncing.)
An omission in otf is that the font doesn't specify what features are
to be on by default. Combine that with font usage where users have no
control over features, and we see why soem are just turned on.
Probably the same for some (fixing) heuristics. It's now how tex
works: there we *ask* for something, not being *enforced* to.
If I could motivate myself we could of course make such a list of
default features per font.
Of course one can wonder why we have rlig/lig/clig as well as kern/
dist split into several features when they are supposed to be always
on. But I will not waste time on pondering that.
A simple change is to a additional feature set with all the new
recommended settings. Changes to the list can happen unlike the default
feature set and users can apply it to their own font settings.
\definefontfeature
[standard] % harfbuzz?
[always]
[itlc=yes,
rlig=yes,
liga=yes,
clig=yes,
calt=yes]
\starttext
more like "recommended" as there is no standard and specific
applications are no standard either .. font-pre has a comment:
% ccmp=yes, % maybe too
% locl=yes, % maybe too
% calt=yes, % maybe too
% clig=yes, % maybe too
% rlig=yes, % maybe too
% tlig=yes, % no longer default (texligatures=yes)
% trep=yes, % no longer default (texquotes=yes)
so shouln't we then also add ccmp and locl there?
\definefontfeature
[recommended]
[always]
[itlc=yes,
% ccmp=yes,
% locl=yes,
rlig=yes,
liga=yes,
clig=yes,
calt=yes]
Because I guess those will be next. We (us users) can add more as more
becomes 'recommended' .
Hans
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : ntg-context@ntg.nl /
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________