ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* [NTG-context] Kerning ignored on some macOS TTC fonts
@ 2025-02-03 21:12 Paul Schalck via ntg-context
  2025-02-04  6:27 ` [NTG-context] " Henning Hraban Ramm
  0 siblings, 1 reply; 2+ messages in thread
From: Paul Schalck via ntg-context @ 2025-02-03 21:12 UTC (permalink / raw)
  To: ntg-context; +Cc: Paul Schalck

Hello,

I'm trying to set up typescripts for a few classic TTC font collections shipped with macOS (see script below).

No problems with:

/System/Library/Fonts/Avenir Next Condensed.ttc
/System/Library/Fonts/Avenir Next.ttc
/System/Library/Fonts/Avenir.ttc
/System/Library/Fonts/Supplemental/Charter.ttc
/System/Library/Fonts/Supplemental/Futura.ttc
/System/Library/Fonts/Supplemental/Seravek.ttc

However, the kerning and the standard ligatures aren't picked up by ConTeXt on those:

/System/Library/Fonts/Helvetica.ttc
/System/Library/Fonts/HelveticaNeue.ttc
/System/Library/Fonts/Optima.ttc
/System/Library/Fonts/Palatino.ttc
/System/Library/Fonts/Times.ttc
/System/Library/Fonts/Supplemental/Baskerville.ttc
/System/Library/Fonts/Supplemental/Bodoni 72.ttc
/System/Library/Fonts/Supplemental/Didot.ttc
/System/Library/Fonts/Supplemental/GillSans.ttc
/System/Library/Fonts/Supplemental/Hoefler Text.ttc

As an example, running

mtxrun --script fonts --list --info --file Optima.ttc

gives:

mtx-fonts       |
mtx-fonts       | mapping   : 1
mtx-fonts       | fontname  : optimaextrablack
mtx-fonts       | fullname  : optimaextrablack
mtx-fonts       | filename  : /System/Library/Fonts/Optima.ttc
mtx-fonts       | family    : optima
mtx-fonts       | weight    : black
mtx-fonts       | style     : normal
mtx-fonts       | width     : normal
mtx-fonts       | variant   : normal
mtx-fonts       | subfont   : 5
fonts           | otf loading | loading '/System/Library/Fonts/Optima.ttc', hash 'optima'
otf reader      | ignoring empty kern table of feature 'kern'
fonts           | otf loading | loading done
fonts           | otf loading | saving '/System/Library/Fonts/Optima.ttc' in cache
system          | lua | compiling '/Users/benutzer/.local/share/tex/texmf-cache/luametatex-cache/context/5fe67e0bfe781ce0dde776fb1556f32e/fonts/otl/optima.tma' into '/Users/benutzer/.local/share/tex/texmf-cache/luametatex-cache/context/5fe67e0bfe781ce0dde776fb1556f32e/fonts/otl/optima.tmd'
system          | lua | dumping '/Users/benutzer/.local/share/tex/texmf-cache/luametatex-cache/context/5fe67e0bfe781ce0dde776fb1556f32e/fonts/otl/optima.tma' into '/Users/benutzer/.local/share/tex/texmf-cache/luametatex-cache/context/5fe67e0bfe781ce0dde776fb1556f32e/fonts/otl/optima.tmd' stripped
fonts           | otf loading | loading, optimizing, packing and caching time 0.004
mtx-fonts       |

It seems that ConTeXt cannot find the kern values ("ignoring empty kern table of feature 'kern'"). What I usually do when I encounter kerning issues with older TrueType fonts is to generate new ones with FontForge. It never fails. I wonder though if there is a clean, native ConTeXt solution to this.

Testing environment:
- LuaMetaTeX 2.11.06 20241230 + ConTeXt LMTX 2024.12.30 (the current version)
- macOS Sequoia 15.3. I'm assuming that most TTC files on older Mac systems are identical, given their internal version date.

///

\starttypescript [serif] [baskerville] % Baskerville.ttc; version 13.0d1e10; 2017-06-15
  \usetypescript     [serif][fallback]
  \definefontsynonym [Serif]           [file:Baskerville.ttc(Baskerville)]             [features=default]
  \definefontsynonym [SerifBold]       [file:Baskerville.ttc(Baskerville Bold)]        [features=default]
  \definefontsynonym [SerifItalic]     [file:Baskerville.ttc(Baskerville Italic)]      [features=default]
  \definefontsynonym [SerifBoldItalic] [file:Baskerville.ttc(Baskerville Bold Italic)] [features=default]
\stoptypescript

\starttypescript [serif] [bodoni_72] % Bodoni 72.ttc; version 13.0d2e1; 2017-07-12
  \usetypescript     [serif][fallback]
  \definefontsynonym [Serif]           [file:Bodoni 72.ttc(Bodoni 72 Book)]        [features=default]
  \definefontsynonym [SerifBold]       [file:Bodoni 72.ttc(Bodoni 72 Bold)]        [features=default]
  \definefontsynonym [SerifItalic]     [file:Bodoni 72.ttc(Bodoni 72 Book Italic)] [features=default] % no bold italic
\stoptypescript

\starttypescript [serif] [charter] % Charter.ttc; version14.0d2e1; 2017-11-28
  \usetypescript     [serif][fallback]
  \definefontsynonym [Serif]           [name:charterroman]      [features=default]
  \definefontsynonym [SerifBold]       [name:charterbold]       [features=default]
  \definefontsynonym [SerifItalic]     [name:charteritalic]     [features=default]
  \definefontsynonym [SerifBoldItalic] [name:charterbolditalic] [features=default]
\stoptypescript

\starttypescript [serif] [didot] % Didot.ttc; version 13.0d1e3; 2017-06-30
  \usetypescript     [serif][fallback]
  \definefontsynonym [Serif]           [file:Didot.ttc(Didot)]             [features=default]
  \definefontsynonym [SerifBold]       [file:Didot.ttc(Didot Bold)]        [features=default]
  \definefontsynonym [SerifItalic]     [file:Didot.ttc(Didot Italic)]      [features=default] % no bold italic
\stoptypescript

\starttypescript [serif] [hoefler_text] % Hoefler Text.ttc; version 14.0d1e2; 2018-01-19
  \usetypescript     [serif][fallback]
  \definefontsynonym [Serif]           [file:Hoefler Text.ttc(Hoefler Text)]              [features=default]
  \definefontsynonym [SerifBold]       [file:Hoefler Text.ttc(Hoefler Text Black)]        [features=default]
  \definefontsynonym [SerifItalic]     [file:Hoefler Text.ttc(Hoefler Text Italic)]       [features=default]
  \definefontsynonym [SerifBoldItalic] [file:Hoefler Text.ttc(Hoefler Text Black Italic)] [features=default]
\stoptypescript

\starttypescript [serif] [palatino] % Palatino.ttc; version 18.0d1e19; 2021-11-10
  \usetypescript     [serif][fallback]
  \definefontsynonym [Serif]           [file:Palatino.ttc(Palatino)]             [features=default]
  \definefontsynonym [SerifBold]       [file:Palatino.ttc(Palatino Bold)]        [features=default]
  \definefontsynonym [SerifItalic]     [file:Palatino.ttc(Palatino Italic)]      [features=default]
  \definefontsynonym [SerifBoldItalic] [file:Palatino.ttc(Palatino Bold Italic)] [features=default]
\stoptypescript

\starttypescript [serif] [times] % Times.ttc; version 17.0d1e1; 2021-01-16
  \usetypescript     [serif][fallback]
  \definefontsynonym [Serif]           [file:Times.ttc(Times Roman)]       [features=default]
  \definefontsynonym [SerifBold]       [file:Times.ttc(Times Bold)]        [features=default]
  \definefontsynonym [SerifItalic]     [file:Times.ttc(Times Italic)]      [features=default]
  \definefontsynonym [SerifBoldItalic] [file:Times.ttc(Times Bold Italic)] [features=default]
\stoptypescript

\starttypescript [sans] [avenir] % Avenir.ttc; version 13.0d3e1; 2017-06-26
  \usetypescript     [sans][fallback]
  \definefontsynonym [Sans]           [file:Avenir.ttc(Avenir Roman)]     [features=default]
  \definefontsynonym [SansBold]       [file:Avenir.ttc(Avenir Heavy)]        [features=default]
  \definefontsynonym [SansItalic]     [file:Avenir.ttc(Avenir Oblique)]      [features=default]
  \definefontsynonym [SansBoldItalic] [file:Avenir.ttc(Avenir Heavy Oblique)] [features=default]
\stoptypescript

\starttypescript [sans] [avenir_next] % Avenir Next.ttc; version 13.0d1e10; 2017-06-30
  \usetypescript     [sans][fallback]
  \definefontsynonym [Sans]           [file:Avenir Next.ttc(Avenir Next Regular)]     [features=default]
  \definefontsynonym [SansBold]       [file:Avenir Next.ttc(Avenir Next Bold)]        [features=default]
  \definefontsynonym [SansItalic]     [file:Avenir Next.ttc(Avenir Next Italic)]      [features=default]
  \definefontsynonym [SansBoldItalic] [file:Avenir Next.ttc(Avenir Next Bold Italic)] [features=default]
\stoptypescript

\starttypescript [sans] [avenir_next_condensed] % Avenir Next Condensed.ttc; version 13.0d1e10; 2017-06-30
  \usetypescript     [sans][fallback]
  \definefontsynonym [Sans]           [file:Avenir Next Condensed.ttc(Avenir Next Condensed Regular)]     [features=default]
  \definefontsynonym [SansBold]       [file:Avenir Next Condensed.ttc(Avenir Next Condensed Bold)]        [features=default]
  \definefontsynonym [SansItalic]     [file:Avenir Next Condensed.ttc(Avenir Next Condensed Italic)]      [features=default]
  \definefontsynonym [SansBoldItalic] [file:Avenir Next Condensed.ttc(Avenir Next Condensed Bold Italic)] [features=default]
\stoptypescript

\starttypescript [sans] [futura] % Futura.ttc; version 16.0d2e1; 2020-07-06
  \usetypescript     [sans][fallback]
  \definefontsynonym [Sans]           [file:Futura.ttc(Futura Medium)]        [features=default]
  \definefontsynonym [SansBold]       [file:Futura.ttc(Futura Bold)]          [features=default]
  \definefontsynonym [SansItalic]     [file:Futura.ttc(Futura Medium Italic)] [features=default] % no bold italic
\stoptypescript

\starttypescript [sans] [gill_sans] % GillSans.ttc; version 16.0d1e1; 2020-07-06
  \usetypescript     [sans][fallback]
  \definefontsynonym [Sans]           [file:GillSans.ttc(Gill Sans)]             [features=default] % kerning only with regular
  \definefontsynonym [SansBold]       [file:GillSans.ttc(Gill Sans Bold)]        [features=default]
  \definefontsynonym [SansItalic]     [file:GillSans.ttc(Gill Sans Italic)]      [features=default]
  \definefontsynonym [SansBoldItalic] [file:GillSans.ttc(Gill Sans Bold Italic)] [features=default]
\stoptypescript

\starttypescript [sans] [helvetica] % Helvetica.ttc; version 17.0d1e1; 2020-09-21
  \usetypescript     [sans][fallback]
  \definefontsynonym [Sans]           [file:Helvetica.ttc(Helvetica)]              [features=default]
  \definefontsynonym [SansBold]       [file:Helvetica.ttc(Helvetica Bold)]         [features=default]
  \definefontsynonym [SansItalic]     [file:Helvetica.ttc(Helvetica Oblique)]      [features=default]
  \definefontsynonym [SansBoldItalic] [file:Helvetica.ttc(Helvetica Bold Oblique)] [features=default]
\stoptypescript

\starttypescript [sans] [helvetica_neue] % Helvetica Neue.ttc; version 17.0d2e1; 2021-02-05
  \usetypescript     [sans][fallback]
  \definefontsynonym [Sans]           [file:Helvetica Neue.ttc(Helvetica Neue)]             [features=default]
  \definefontsynonym [SansBold]       [file:Helvetica Neue.ttc(Helvetica Neue Bold)]        [features=default]
  \definefontsynonym [SansItalic]     [file:Helvetica Neue.ttc(Helvetica Neue Italic)]      [features=default]
  \definefontsynonym [SansBoldItalic] [file:Helvetica Neue.ttc(Helvetica Neue Bold Italic)] [features=default]
\stoptypescript

\starttypescript [sans] [optima] % Optima.ttc; version 13.0d1e2; 2017-06-15
  \usetypescript     [sans][fallback]
  \definefontsynonym [Sans]           [file:Optima.ttc(Optima Regular)]     [features=default]
  \definefontsynonym [SansBold]       [file:Optima.ttc(Optima Bold)]        [features=default]
  \definefontsynonym [SansItalic]     [file:Optima.ttc(Optima Italic)]      [features=default]
  \definefontsynonym [SansBoldItalic] [file:Optima.ttc(Optima Bold Italic)] [features=default]
\stoptypescript

\starttypescript [sans] [seravek] % Seravek.ttc; version 13.0d3e2; 2017-06-30
  \usetypescript     [sans][fallback]
  \definefontsynonym [Sans]           [file:Seravek.ttc(Seravek)]             [features=default]
  \definefontsynonym [SansBold]       [file:Seravek.ttc(Seravek Bold)]        [features=default]
  \definefontsynonym [SansItalic]     [file:Seravek.ttc(Seravek Italic)]      [features=default]
  \definefontsynonym [SansBoldItalic] [file:Seravek.ttc(Seravek Bold Italic)] [features=default]
\stoptypescript

\definetypeface [baskv] [rm] [serif] [baskerville]           [default]
\definetypeface [bodon] [rm] [serif] [bodoni_72]             [default]
\definetypeface [chart] [rm] [serif] [charter]               [default]
\definetypeface [didot] [rm] [serif] [didot]                 [default]
\definetypeface [hoefl] [rm] [serif] [hoefler_text]          [default]
\definetypeface [paltn] [rm] [serif] [palatino]              [default]
\definetypeface [times] [rm] [serif] [times]                 [default]
\definetypeface [avenr] [ss] [sans]  [avenir]                [default]
\definetypeface [avenx] [ss] [sans]  [avenir_next]           [default]
\definetypeface [avnxc] [ss] [sans]  [avenir_next_condensed] [default]
\definetypeface [futur] [ss] [sans]  [futura]                [default]
\definetypeface [gills] [ss] [sans]  [gill_sans]             [default]
\definetypeface [helvt] [ss] [sans]  [helvetica]             [default]
\definetypeface [helvn] [ss] [sans]  [helvetica_neue]        [default]
\definetypeface [optim] [ss] [sans]  [optima]                [default]
\definetypeface [servk] [ss] [sans]  [seravek]               [default]

\setupbodyfont [10pt]

\def\smpl{VO WA LT Vo Va Ty \bgroup\enabletrackers[visualizers.glyph]fi fl\egroup\crlf}
\def\test{\tf\ctxlua{tex.print(fonts.hashes.properties[font.current()].fullname)}\crlf\smpl\bf\smpl\it\smpl\bi\smpl\blank}

\starttext

\enabletrackers[visualizers.fontkern]

\startcolumns[n=3,balance=no]
  \switchtobodyfont[baskv]\test
  \switchtobodyfont[bodon]\test
  \switchtobodyfont[chart]\test
  \switchtobodyfont[didot]\test
  \switchtobodyfont[hoefl]\test
  \switchtobodyfont[paltn]\test\column
  \switchtobodyfont[times]\test
  \switchtobodyfont[avenr]\test
  \switchtobodyfont[avenx]\test
  \switchtobodyfont[avnxc]\test
  \switchtobodyfont[futur]\test\column
  \switchtobodyfont[gills]\test
  \switchtobodyfont[helvt]\test
  \switchtobodyfont[helvn]\test
  \switchtobodyfont[optim]\test
  \switchtobodyfont[servk]\test
\stopcolumns

\stoptext
___________________________________________________________________________________
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] 2+ messages in thread

* [NTG-context] Re: Kerning ignored on some macOS TTC fonts
  2025-02-03 21:12 [NTG-context] Kerning ignored on some macOS TTC fonts Paul Schalck via ntg-context
@ 2025-02-04  6:27 ` Henning Hraban Ramm
  0 siblings, 0 replies; 2+ messages in thread
From: Henning Hraban Ramm @ 2025-02-04  6:27 UTC (permalink / raw)
  To: ntg-context

Am 03.02.25 um 22:12 schrieb Paul Schalck via ntg-context:
> Hello,
> 
> I'm trying to set up typescripts for a few classic TTC font collections shipped with macOS (see script below).
> 
> No problems with:
> 
> /System/Library/Fonts/Avenir Next Condensed.ttc
> /System/Library/Fonts/Avenir Next.ttc
> /System/Library/Fonts/Avenir.ttc
> /System/Library/Fonts/Supplemental/Charter.ttc
> /System/Library/Fonts/Supplemental/Futura.ttc
> /System/Library/Fonts/Supplemental/Seravek.ttc
> 
> However, the kerning and the standard ligatures aren't picked up by ConTeXt on those:
> 
> /System/Library/Fonts/Helvetica.ttc
> /System/Library/Fonts/HelveticaNeue.ttc
> /System/Library/Fonts/Optima.ttc
> /System/Library/Fonts/Palatino.ttc
> /System/Library/Fonts/Times.ttc
> /System/Library/Fonts/Supplemental/Baskerville.ttc
> /System/Library/Fonts/Supplemental/Bodoni 72.ttc
> /System/Library/Fonts/Supplemental/Didot.ttc
> /System/Library/Fonts/Supplemental/GillSans.ttc
> /System/Library/Fonts/Supplemental/Hoefler Text.ttc
> 
> As an example, running
> 
> mtxrun --script fonts --list --info --file Optima.ttc
> 
> gives:
> 
> mtx-fonts       |
> mtx-fonts       | mapping   : 1
> mtx-fonts       | fontname  : optimaextrablack
> mtx-fonts       | fullname  : optimaextrablack
> mtx-fonts       | filename  : /System/Library/Fonts/Optima.ttc
> mtx-fonts       | family    : optima
> mtx-fonts       | weight    : black
> mtx-fonts       | style     : normal
> mtx-fonts       | width     : normal
> mtx-fonts       | variant   : normal
> mtx-fonts       | subfont   : 5
> fonts           | otf loading | loading '/System/Library/Fonts/Optima.ttc', hash 'optima'
> otf reader      | ignoring empty kern table of feature 'kern'
> fonts           | otf loading | loading done
> fonts           | otf loading | saving '/System/Library/Fonts/Optima.ttc' in cache
> system          | lua | compiling '/Users/benutzer/.local/share/tex/texmf-cache/luametatex-cache/context/5fe67e0bfe781ce0dde776fb1556f32e/fonts/otl/optima.tma' into '/Users/benutzer/.local/share/tex/texmf-cache/luametatex-cache/context/5fe67e0bfe781ce0dde776fb1556f32e/fonts/otl/optima.tmd'
> system          | lua | dumping '/Users/benutzer/.local/share/tex/texmf-cache/luametatex-cache/context/5fe67e0bfe781ce0dde776fb1556f32e/fonts/otl/optima.tma' into '/Users/benutzer/.local/share/tex/texmf-cache/luametatex-cache/context/5fe67e0bfe781ce0dde776fb1556f32e/fonts/otl/optima.tmd' stripped
> fonts           | otf loading | loading, optimizing, packing and caching time 0.004
> mtx-fonts       |
> 
> It seems that ConTeXt cannot find the kern values ("ignoring empty kern table of feature 'kern'"). What I usually do when I encounter kerning issues with older TrueType fonts is to generate new ones with FontForge. It never fails. I wonder though if there is a clean, native ConTeXt solution to this.
> 
> Testing environment:
> - LuaMetaTeX 2.11.06 20241230 + ConTeXt LMTX 2024.12.30 (the current version)
> - macOS Sequoia 15.3. I'm assuming that most TTC files on older Mac systems are identical, given their internal version date.

Why do you think these fonts have kern tables at all?
I looked at Optima.ttc with Fontforge and can’t find one.

Hraban
___________________________________________________________________________________
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] 2+ messages in thread

end of thread, other threads:[~2025-02-04  6:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-03 21:12 [NTG-context] Kerning ignored on some macOS TTC fonts Paul Schalck via ntg-context
2025-02-04  6:27 ` [NTG-context] " Henning Hraban Ramm

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).