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 : [email protected] /
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
___________________________________________________________________________________