From: Paul Schalck via ntg-context <ntg-context@ntg.nl>
To: ntg-context@ntg.nl
Cc: Paul Schalck <schickele@web.de>
Subject: [NTG-context] Kerning ignored on some macOS TTC fonts
Date: Mon, 3 Feb 2025 21:12:31 +0000 [thread overview]
Message-ID: <trinity-13f250ed-1156-415f-93da-ea525d48c9fd-1738617151924@trinity-msg-rest-webde-webde-live-8d9fbf8c-m7fjh> (raw)
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
___________________________________________________________________________________
next reply other threads:[~2025-02-03 21:21 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-03 21:12 Paul Schalck via ntg-context [this message]
2025-02-04 6:27 ` [NTG-context] " Henning Hraban Ramm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=trinity-13f250ed-1156-415f-93da-ea525d48c9fd-1738617151924@trinity-msg-rest-webde-webde-live-8d9fbf8c-m7fjh \
--to=ntg-context@ntg.nl \
--cc=schickele@web.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).