ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* [NTG-context] OpenType contextual alternates disabled by default
@ 2025-09-09  7:34 Max Chernoff via ntg-context
  2025-09-09  7:59 ` [NTG-context] " Hans Hagen via ntg-context
  0 siblings, 1 reply; 4+ messages in thread
From: Max Chernoff via ntg-context @ 2025-09-09  7:34 UTC (permalink / raw)
  To: ntg-context; +Cc: Max Chernoff

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.

Thanks,
-- Max
___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [NTG-context] Re: OpenType contextual alternates disabled by default
  2025-09-09  7:34 [NTG-context] OpenType contextual alternates disabled by default Max Chernoff via ntg-context
@ 2025-09-09  7:59 ` Hans Hagen via ntg-context
  2025-09-09 20:16   ` Wolfgang Schuster
  0 siblings, 1 reply; 4+ messages in thread
From: Hans Hagen via ntg-context @ 2025-09-09  7:59 UTC (permalink / raw)
  To: ntg-context; +Cc: Hans Hagen

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.

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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [NTG-context] Re: OpenType contextual alternates disabled by default
  2025-09-09  7:59 ` [NTG-context] " Hans Hagen via ntg-context
@ 2025-09-09 20:16   ` Wolfgang Schuster
  2025-09-10  6:58     ` Hans Hagen via ntg-context
  0 siblings, 1 reply; 4+ messages in thread
From: Wolfgang Schuster @ 2025-09-09 20:16 UTC (permalink / raw)
  To: ntg-context

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

{\definedfont[name:playwritegbjregular*default]Whereas recognition of 
the inherent dignity}

{\definedfont[name:playwritegbjregular*standard]Whereas recognition of 
the inherent dignity}

\stoptext

Wolfgang

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [NTG-context] Re: OpenType contextual alternates disabled by default
  2025-09-09 20:16   ` Wolfgang Schuster
@ 2025-09-10  6:58     ` Hans Hagen via ntg-context
  0 siblings, 0 replies; 4+ messages in thread
From: Hans Hagen via ntg-context @ 2025-09-10  6:58 UTC (permalink / raw)
  To: ntg-context; +Cc: Hans Hagen

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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-09-10  6:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-09  7:34 [NTG-context] OpenType contextual alternates disabled by default Max Chernoff via ntg-context
2025-09-09  7:59 ` [NTG-context] " Hans Hagen via ntg-context
2025-09-09 20:16   ` Wolfgang Schuster
2025-09-10  6:58     ` Hans Hagen via ntg-context

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).