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

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