[NTG-context] beta

Hans Hagen pragma at wxs.nl
Tue Mar 21 14:46:02 CET 2017


Hi,

The beta has some new font trickery: support for variable fonts. This is 
still experimental but around the context meeting i expect the user 
interface etc to be stable. There is a bit of magic involved in the 
transformations along design axis because not only shapes change but 
also positional features get influenced (e.g kerning).

Variable fonts are defined in the opentype 1.8 standard but there isnot 
much more known about them. There are a few example fonts already out 
there. The only reasonable ones i could find were Avenir Next Variable 
and Adobe Variable Font Prototype (which is a rip off of some other 
font). I have no clue how well these fonts are because I guess that 
getting all the features right is not that trivial (so it's hard to 
decide if something weird is due to the font or to context but we'll get 
there eventually).

Using these fonts should be transparent in the sense that it should just 
work. As the shapes are transformed along axis the pdf has to get the 
right stuff and currently there are two methods: inline shapes (it's how 
i explored things) and native. For native one needs a version of luatex 
with a trivial extension (most works happens in the font loader) and 
that version (1.05) will be released on the garden after the tl code 
freeze (tl will have 1.04). One can force inline shapes but it will be 
done automatically when one runs a luatex that lacks the small extension 
needed.

Anyway, it provides users a way to play a bit with this new technology 
so that we can come up with a (maybe more extensive) user interface in 
context. It also permits WS to adapt his selectfont mechanism.

\definefontfeature
   [default:shaped]
   [default]
   [axis={width:900,weight:100}]

\definefont
   [SomeFont]
   [name:avenirnextvariable*default]
\SomeFont \input ward\par

\definefont
   [SomeFont]
   [name:avenirnextvariable*default:shaped]
\SomeFont \input ward\par

\definefont
   [SomeFont]
   [name:avenirnextvariableregular*default]
\SomeFont \input ward\par

\definefont
   [SomeFont]
   [name:avenirnextvariablemedium*default]
\SomeFont \input ward\par

\definefont
   [SomeFont]
   [name:adobevariablefontprototypeextralight*default]   \SomeFont 
\input ward\par

\definefont
   [SomeFont]
   [name:adobevariablefontprototypelight*default]
\SomeFont \input ward\par

etc etc

So, one can either use a predefined instance or ask for a user defined 
instance. The s-fonts-variable.mkiv style can be used to identify 
proprties, as can

   mtxrun --script font --list  --pattern=aven* --info

which returns, among other things

mtx-fonts       |
mtx-fonts       | instances : regular medium bold heavy condensed 
mediumcondensed boldcondensed heavycondensed
mtx-fonts       |

So, keep in mind that it's experimental and will evolve in sync with my 
understanding of what the standard expects.

Hans


-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the ntg-context mailing list