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