summaryrefslogtreecommitdiff
path: root/doc/context/presentations/bachotex
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2018-01-12 08:12:50 +0100
committerContext Git Mirror Bot <phg42.2a@gmail.com>2018-01-12 08:12:50 +0100
commitd0edf3e90e8922d9c672f24ecdc5d44fe2716f31 (patch)
tree5b618b87aa5078a8c744c94bbf058d69cd7111b2 /doc/context/presentations/bachotex
parent409a95f63883bd3b91699d39645e39a8a761457c (diff)
downloadcontext-d0edf3e90e8922d9c672f24ecdc5d44fe2716f31.tar.gz
2018-01-08 23:11:00
Diffstat (limited to 'doc/context/presentations/bachotex')
-rw-r--r--doc/context/presentations/bachotex/2017/bachotex-2017-emoji-demo.pdfbin0 -> 46443 bytes
-rw-r--r--doc/context/presentations/bachotex/2017/bachotex-2017-emoji-demo.tex26
-rw-r--r--doc/context/presentations/bachotex/2017/bachotex-2017-emoji.pdfbin0 -> 308972 bytes
-rw-r--r--doc/context/presentations/bachotex/2017/bachotex-2017-emoji.tex374
-rw-r--r--doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts-demo.pdfbin0 -> 219237 bytes
-rw-r--r--doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts-demo.tex44
-rw-r--r--doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts.pdfbin0 -> 251093 bytes
-rw-r--r--doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts.tex500
8 files changed, 944 insertions, 0 deletions
diff --git a/doc/context/presentations/bachotex/2017/bachotex-2017-emoji-demo.pdf b/doc/context/presentations/bachotex/2017/bachotex-2017-emoji-demo.pdf
new file mode 100644
index 000000000..cce61e1b3
--- /dev/null
+++ b/doc/context/presentations/bachotex/2017/bachotex-2017-emoji-demo.pdf
Binary files differ
diff --git a/doc/context/presentations/bachotex/2017/bachotex-2017-emoji-demo.tex b/doc/context/presentations/bachotex/2017/bachotex-2017-emoji-demo.tex
new file mode 100644
index 000000000..ada27160b
--- /dev/null
+++ b/doc/context/presentations/bachotex/2017/bachotex-2017-emoji-demo.tex
@@ -0,0 +1,26 @@
+\starttext
+
+\definefontfeature
+ [seguiemj-cl]
+ [default]
+ [colr=yes,
+ ccmp=yes,
+ dist=yes]
+
+\definefont
+ [MyEmoji]
+ [seguiemj*seguiemj-cl]
+
+\typefile{emoji-demo-001.tex}
+
+\showotfcomposition
+ {seguiemj*seguiemj-cl}
+ {1}
+ {\resolvedemoji
+ {family
+ man light skin tone
+ woman dark skin tone
+ girl medium skin tone
+ boy medium skin tone}}
+
+\stoptext
diff --git a/doc/context/presentations/bachotex/2017/bachotex-2017-emoji.pdf b/doc/context/presentations/bachotex/2017/bachotex-2017-emoji.pdf
new file mode 100644
index 000000000..d7e01f59c
--- /dev/null
+++ b/doc/context/presentations/bachotex/2017/bachotex-2017-emoji.pdf
Binary files differ
diff --git a/doc/context/presentations/bachotex/2017/bachotex-2017-emoji.tex b/doc/context/presentations/bachotex/2017/bachotex-2017-emoji.tex
new file mode 100644
index 000000000..c6deb3873
--- /dev/null
+++ b/doc/context/presentations/bachotex/2017/bachotex-2017-emoji.tex
@@ -0,0 +1,374 @@
+% language=uk
+
+\setuppapersize
+ [S6]
+
+\setupbackgrounds
+ [page]
+ [background=color,
+ backgroundcolor=darkgray]
+
+\setuplayout
+ [backspace=24pt,
+ topspace=20pt,
+ bottomspace=8pt,
+ width=middle,
+ height=middle,
+ footerdistance=8pt,
+ footer=8pt,
+ header=0pt]
+
+\setupcolors
+ [textcolor=white]
+
+\setupbodyfont
+ [dejavu,14.4pt]
+
+\definecolor[trace:o] [s=1]
+\definecolor[trace:r] [s=1]
+\definecolor[trace:do][s=1]
+\definecolor[trace:dr][s=1]
+
+\usemodule[abr-03]
+
+\definefontfeature[noligatures][liga=no]
+
+\setuphead
+ [section]
+ [page=yes,
+ style=\bfb,
+ after={\blank[3*medium]}]
+
+\setuphead
+ [subsection]
+ [page=no,
+ style=\bf\addfeature{noligatures},
+ before={\blank[3*medium]},
+ after={\blank}]
+
+\setupfooter
+ [strut=no,
+ style=\bf]
+
+\startdocument
+ [title={Picture Fonts},
+ subtitle={welcome to a (beautiful) mess},
+ author={Hans Hagen},
+ occasion={BachoTUG 2017}]
+
+\startstandardmakeup
+ \vskip32pt
+ \bfd \setupinterlinespace
+ \documentvariable{title}
+ \crlf
+ \bfb \setupinterlinespace
+ \vskip12pt
+ \documentvariable{subtitle}
+ \vfill
+ \bfb \setupinterlinespace
+ \documentvariable{author}
+ \crlf
+ \documentvariable{occasion}
+\stopstandardmakeup
+
+\startsubject[title=A Summary]
+
+\startitemize
+\startitem
+ {\bf the macro package's view:} just a font like any other but it needs to configure
+ some extra color related properties
+\stopitem
+\startitem
+ {\bf the engine's view:} depending on the technology a normal font that needs a bit
+ special treatment or needs to be dealt with as collection of graphics
+\stopitem
+\startitem
+ {\bf the viewer's view:} regular outline glyphs or images tagged as kind of
+ characters so that their unicode representation can be cut and paste
+\stopitem
+\startitem
+ {\bf the user's view:} more pictures than glyphs although some people one can
+ communicate using them
+\stopitem
+\stopitemize
+
+So, in practice, for most \TEX\ users it's probably not a high priority font but more a fun
+one.
+
+\stopsubject
+
+\startsubject[title=Technologies]
+
+As each vendor came up with something, we have to deal with a all kinds of formats. And or
+course, as eagerness pushes things on the market before it's perfect we now have to deal
+with all of them.
+
+\startitemize
+\startitem
+ {\bf overlapping glyphs:} this technique uses the \type {colr} and \type {cpal} tables
+ and is actually a quite clean technology, you can combine in different ways
+\stopitem
+\startitem
+ {\bf svg graphics:} this technique uses the \type {svg} table that contains a svg vector
+ image
+\stopitem
+\startitem
+ {\bf bitmap graphics:} this technique uses for instance \type {sbix} tables that can have
+ various graphic images
+\stopitem
+\stopitemize
+
+The first two are already supported in the \CONTEXT\ font loader and processor
+for a while, the last one was added recently.
+
+\blank
+
+Only the overlapping method is useable for the tens of thousands of skin tone combinations of
+families, (kissing) couples, and professions.
+
+\stopsubject
+
+\startsubject[title=Preparation]
+
+For now one has to enable the feature:
+
+\startbuffer
+\definefontfeature[overlay][default][ccmp=yes,colr=yes,dist=yes]
+\definefontfeature[svg] [default][svg=yes]
+\definefontfeature[bitmap] [default][sbix=yes]
+
+\definefontfeature [colored] [default]
+ [cmcp=yes,dist=yes,
+ colr=yes,svg=yes,sbix=yes]
+\stopbuffer
+
+\typebuffer \getbuffer
+
+Defining a font is not different from others
+
+\starttyping
+\definefont[MyEmojiFont] [seguiemj*overlay]
+\definefontsynonym[emoji][seguiemj*overlay]
+\stoptyping
+
+As is using:
+
+\starttyping
+{\MyEmojiFont\resolvedemoji{woman}}
+\emoji{woman}
+\stoptyping
+
+\stopsubject
+
+\startsubject[title=Accessing shapes]
+
+\startbuffer
+\definesymbol[man] [\emoji{man}]
+\definesymbol[woman][\emoji{woman}]
+\definesymbol[girl] [\emoji{girl}]
+\definesymbol[boy] [\emoji{boy}]
+
+\definesymbol[family][\emoji{family man woman girl boy}]
+\stopbuffer
+
+\typebuffer \getbuffer
+
+\starttyping
+\definefontsynonym[emoji][file:seguiemj.ttf*default,overlay]
+
+\symbol[boy] \symbol[girl] \symbol[man] \symbol[woman]
+
+\symbol[family]
+\stoptyping
+
+\stopsubject
+
+\startsubject[title=Different fonts]
+
+\def\ShowThem#1#2#3%
+ {\NC #1
+ \NC default
+ \NC \definefontsynonym[emoji][#3*default]\symbol[boy] \symbol[girl] \symbol[man] \symbol[woman]
+ \NC \definefontsynonym[emoji][#3*default]\symbol[family]
+ \NC \NR
+ \NC
+ \NC #2
+ \NC \definefontsynonym[emoji][#3*#2]\symbol[boy] \symbol[girl] \symbol[man] \symbol[woman]
+ \NC \definefontsynonym[emoji][#3*#2]\symbol[family]
+ \NC \NR}
+
+\starttabulate[|T|T|||]
+ \ShowThem{seguiemj} {overlay}{file:seguiemj.ttf}
+ \ShowThem{emojionecolor-svginot}{svg} {file:emojionecolor-svginot.ttf}
+ \ShowThem{emojionemozilla} {overlay}{file:emojionemozilla.ttf}
+ \ShowThem{applecoloremoji} {bitmap} {file:applecoloremoji.ttc}
+\stoptabulate
+
+\stopsubject
+
+\startsubject[title=Ligatures]
+
+\definefontfeature[seguiemj-cl][default][colr=yes,ccmp=yes,dist=yes]
+\definefontfeature[seguiemj-bw][default][ccmp=yes]
+
+% \definefont[MyEmoji][emojionecolor-svginot*default,svg]
+% \definefont[MyEmoji][seguiemj*seguiemj-bw]
+\definefont[MyEmoji][seguiemj*seguiemj-cl]
+% \definefont[MyEmoji][emojionemozilla*default,overlay]
+% \definefont[MyEmoji][applecoloremoji*default,bitmap]
+
+{\MyEmoji 👨🏽‍🌾 👨🏽‍🍳 👨🏽‍🎓 👨🏽‍🎤 👨🏽‍🎨 👨🏽‍🏫 👨🏽‍🏭 👨🏽‍💻 👨🏽‍💼 👨🏽‍🔧 👨🏽‍🔬 👨🏽‍🚀}
+
+\starttabulate[|T|T||]
+\NC character \NC 1F477 \NC \MyEmoji \utfchar{"1F477} \NC \NR % construction worker
+\NC skin modifier \NC 1F3FE \NC \MyEmoji \utfchar{"1F3FE} \NC \NR % medium dark skin
+\NC ligature \NC 1F477 1F3FE \NC \MyEmoji \utfchar{"1F477}%
+ \utfchar{"1F3FE} \NC \NR
+\NC zero width joiner \NC 0200D \NC \MyEmoji \utfchar{"0200D} \NC \NR
+\NC female modifier \NC 02640 0FE0F \NC \MyEmoji \utfchar{"02640}%
+ \utfchar{"0FE0F} \NC \NR
+\NC the whole lot \NC \NC \MyEmoji \utfchar{"1F477}%
+ \utfchar{"1F3FE}%
+ \utfchar{"0200D}%
+ \utfchar{"02640}%
+ \utfchar{"0FE0F} \NC \NR
+\stoptabulate
+
+\starttabulate[|T|T||]
+\NC 1F468 1F3FD 200D 1F33E \NC \MyEmoji 👨🏽‍🌾 \NC man farmer medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F373 \NC \MyEmoji 👨🏽‍🍳 \NC man cook medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F393 \NC \MyEmoji 👨🏽‍🎓 \NC man student medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F3A4 \NC \MyEmoji 👨🏽‍🎤 \NC man singer medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F3A8 \NC \MyEmoji 👨🏽‍🎨 \NC man artist medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F3EB \NC \MyEmoji 👨🏽‍🏫 \NC man teacher medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F3ED \NC \MyEmoji 👨🏽‍🏭 \NC man factory worker medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F4BB \NC \MyEmoji 👨🏽‍💻 \NC man technologist medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F4BC \NC \MyEmoji 👨🏽‍💼 \NC man office worker medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F527 \NC \MyEmoji 👨🏽‍🔧 \NC man mechanic medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F52C \NC \MyEmoji 👨🏽‍🔬 \NC man scientist medium skin tone \NC \NR
+\NC 1F468 1F3FD 200D 1F680 \NC \MyEmoji 👨🏽‍🚀 \NC man astronaut medium skin tone \NC \NR
+\stoptabulate
+
+\stopsubject
+
+\usemodule[fonts-emoji]
+
+\startsubject[title=Snippets]
+
+\start
+
+ \definedfont[seguiemj*seguiemj-cl @ 32pt]
+
+ \ShowEmojiSnippets
+ [family man light skin tone woman dark skin tone girl medium skin tone boy medium skin tone]
+
+ \vskip1ex
+
+ \ShowEmojiSnippetsOverlay
+ [family man light skin tone woman dark skin tone girl medium skin tone boy medium skin tone]
+
+ \vskip1ex
+
+ \ShowEmojiGlyphs
+ [family man light skin tone woman dark skin tone girl medium skin tone boy medium skin tone]
+
+\stop
+
+\stopsubject
+
+\startsubject[title=Using \type{\ShowEmoji[^man]}]
+
+\start
+
+ \MyEmoji
+
+ \ShowEmoji[^man]
+
+\stop
+
+\stopsubject
+
+\startsubject[title=Recoloring Seguiem]
+
+\start
+
+\definecolor[emoji-red] [r=.4]
+\definecolor[emoji-blue] [b=.4]
+\definecolor[emoji-yellow][y=.4]
+\definecolor[emoji-gray] [s=.5,t=.5,a=1]
+
+\definefontcolorpalette
+ [emoji-red]
+ [emoji-red,emoji-gray]
+
+\definefontcolorpalette
+ [emoji-blue]
+ [emoji-blue,emoji-gray]
+
+\definefontcolorpalette
+ [emoji-yellow]
+ [emoji-yellow,emoji-gray]
+
+\definefontfeature[seguiemj-r][default][ccmp=yes,dist=yes,colr=emoji-red]
+\definefontfeature[seguiemj-b][default][ccmp=yes,dist=yes,colr=emoji-blue]
+\definefontfeature[seguiemj-y][default][ccmp=yes,dist=yes,colr=emoji-yellow]
+
+\definefont[MyColoredEmojiR][seguiemj*seguiemj-r @ 80pt]
+\definefont[MyColoredEmojiB][seguiemj*seguiemj-b @ 80pt]
+\definefont[MyColoredEmojiY][seguiemj*seguiemj-y @ 80pt]
+
+\MyColoredEmojiR
+ \resolvedemoji{man}
+ \resolvedemoji{woman}
+ \resolvedemoji{baby}
+
+\vskip24pt
+
+\MyColoredEmojiB
+ \resolvedemoji{triangular ruler}
+ \resolvedemoji{rabbit face}
+ \resolvedemoji{family man woman girl boy}
+
+\vskip24pt
+
+\MyColoredEmojiY
+ \resolvedemoji{triangular ruler}
+ \resolvedemoji{rabbit face}
+ \resolvedemoji{family man woman girl boy}
+
+\stop
+
+\page
+
+\starttyping
+\definecolor [emoji-red] [r=.4]
+\definecolor [emoji-gray] [s=.5,t=.5,a=1]
+
+\definefontcolorpalette
+ [emoji-red]
+ [emoji-red,emoji-gray]
+
+\definefontfeature
+ [seguiemj-r]
+ [default]
+ [ccmp=yes,dist=yes,colr=emoji-red]
+
+\definefont
+ [MyColoredEmojiR]
+ [seguiemj*seguiemj-r @ 80pt]
+
+\MyColoredEmojiR
+ \emoji{man}
+ \emoji{woman}
+ \emoji{baby}
+\stoptyping
+
+\stopsubject
+
+\startsubject[title=Pallet \type{\ShowEmojiPalettes[1]}]
+
+{\MyEmoji \ShowEmojiPalettes[1]}
+
+\stopsubject
+
+\stopdocument
diff --git a/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts-demo.pdf b/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts-demo.pdf
new file mode 100644
index 000000000..bac8d54c1
--- /dev/null
+++ b/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts-demo.pdf
Binary files differ
diff --git a/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts-demo.tex b/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts-demo.tex
new file mode 100644
index 000000000..e9543a30a
--- /dev/null
+++ b/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts-demo.tex
@@ -0,0 +1,44 @@
+% macros=mkvi
+
+\usemodule[art-01] \dontcomplain
+
+\starttexdefinition unexpanded TestFont #font#variant#size
+ \bgroup
+ \definedfont[name:#font#variant*default @ #size]
+ \setupinterlinespace
+ % \showstruts
+ % \strut
+ \samplefile{tufte}
+ \par
+ \egroup
+\stoptexdefinition
+
+\starttext
+
+\dorecurse {5} {
+
+ \dostepwiserecurse {8} {14} {1} { % 30 fonts
+ \TestFont {adobevariablefontprototype} {extralight} {##1pt}
+ \TestFont {adobevariablefontprototype} {light} {##1pt}
+ \TestFont {adobevariablefontprototype} {regular} {##1pt}
+ \TestFont {adobevariablefontprototype} {semibold} {##1pt}
+ \TestFont {adobevariablefontprototype} {bold} {##1pt}
+ \TestFont {adobevariablefontprototype} {black} {##1pt}
+ }
+
+ \page
+
+ % \dostepwiserecurse {8} {14} {1} { % 40 fonts
+ % \TestFont {avenirnextvariable} {regular} {##1pt}
+ % \TestFont {avenirnextvariable} {medium} {##1pt}
+ % \TestFont {avenirnextvariable} {bold} {##1pt}
+ % \TestFont {avenirnextvariable} {heavy } {##1pt}
+ % \TestFont {avenirnextvariable} {condensed} {##1pt}
+ % \TestFont {avenirnextvariable} {medium condensed} {##1pt}
+ % \TestFont {avenirnextvariable} {bold condensed} {##1pt}
+ % \TestFont {avenirnextvariable} {heavy condensed} {##1pt}
+ % }
+
+}
+
+\stoptext
diff --git a/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts.pdf b/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts.pdf
new file mode 100644
index 000000000..ee3537bd2
--- /dev/null
+++ b/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts.pdf
Binary files differ
diff --git a/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts.tex b/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts.tex
new file mode 100644
index 000000000..08050a57d
--- /dev/null
+++ b/doc/context/presentations/bachotex/2017/bachotex-2017-variablefonts.tex
@@ -0,0 +1,500 @@
+% language=uk
+
+\setuppapersize
+ [S6]
+
+\setupbackgrounds
+ [page]
+ [background=color,
+ backgroundcolor=darkblue]
+
+\setuplayout
+ [backspace=24pt,
+ topspace=20pt,
+ bottomspace=8pt,
+ width=middle,
+ height=middle,
+ footerdistance=8pt,
+ footer=8pt,
+ header=0pt]
+
+\setupcolors
+ [textcolor=white]
+
+\setupbodyfont
+ [dejavu,14.4pt]
+
+\definecolor[trace:o] [s=1]
+\definecolor[trace:r] [s=1]
+\definecolor[trace:do][s=1]
+\definecolor[trace:dr][s=1]
+
+\usemodule[abr-03]
+
+\definefontfeature[noligatures][liga=no]
+
+\setuphead
+ [section]
+ [page=yes,
+ style=\bfb,
+ after={\blank[3*medium]}]
+
+\setuphead
+ [subsection]
+ [page=no,
+ style=\bf\addfeature{noligatures},
+ before={\blank[3*medium]},
+ after={\blank}]
+
+\setupfooter
+ [strut=no,
+ style=\bf]
+
+\startuseMPgraphic{pagenumber}
+ if LastPageNumber > 0 :
+ draw outlinetext.f
+ (decimal RealPageNumber)
+ (withcolor "darkgray")
+ xysized ((RealPageNumber/LastPageNumber) * TextWidth/2,FooterHeight) ;
+ fi ;
+\stopuseMPgraphic
+
+\setupfootertexts
+ [\useMPgraphic{pagenumber}]
+
+\startdocument
+ [title={Variable Fonts},
+ subtitle={we're ready for them},
+ author={Hans Hagen},
+ occasion={BachoTUG 2017}]
+
+\startstandardmakeup
+ \vskip32pt
+ \bfd \setupinterlinespace
+ \documentvariable{title}
+ \crlf
+ \bfb \setupinterlinespace
+ \vskip12pt
+ \documentvariable{subtitle}
+ \vfill
+ \bfb \setupinterlinespace
+ \documentvariable{author}
+ \crlf
+ \documentvariable{occasion}
+\stopstandardmakeup
+
+\startsubject[title=A Summary]
+
+\startitemize
+\startitem
+ {\bf the macro package's view:} just a font but with many possible variations
+ in shapes (width, weight, slope, etc) and therefore a bit more complex user
+ interface
+\stopitem
+\startitem
+ {\bf the engine's view:} an abstraction not different from other fonts but
+ that needs a special treatment in the backend
+\stopitem
+\startitem
+ {\bf the viewer's view:} a font to be displayed like any other with outlines
+ in cff of ttf format
+\stopitem
+\startitem
+ {\bf the user's view:} an opentype font with possibly surprising shapes of
+ which you need to know a bit more than usual if you want to profit from it
+\stopitem
+\stopitemize
+
+So, in practice, for most \TEX\ users it's just a font that has to be supported by
+\TEX\ and friends.
+
+\stopsubject
+
+\startsubject[title=Starting point]
+
+\startitemize
+\startitem
+ The OpenType 1.8 specification at the MicroSoft website defined the extra
+ tables and explains bits and pieces.
+\stopitem
+\startitem
+ There a few fonts that have relevant tables (not all) and implement variants
+ as well as features.
+\stopitem
+\startitem
+ There are some posts on the internet that show a bit about axis and other things
+ that go on in these fonts.
+\stopitem
+\startitem
+ Luckily we have ways (in \CONTEXT) to explore what goes on in these fonts and
+ how they could look.
+\stopitem
+\startitem
+ Condition: no tricks, no fuzzy heuristics, just the specification should be
+ enough.
+\stopitem
+\stopitemize
+
+\stopsubject
+
+\startsubject[title=Implementation steps]
+
+\startitemize
+\startitem
+ First try to render variants in order to see what we're dealing with. This was not too
+ hard (starting with cff) because we have already virtual font support.
+\stopitem
+\startitem
+ Next try to load the relevant tables and figure out what these deltas and such really
+ mean and how axis and regions and \unknown\ have to be applied.
+\stopitem
+\startitem
+ Try to make it all work on a real piece of text, so not only shapes but also features
+ and dimensions.
+\stopitem
+\startitem
+ Finally make sure that the font can get embedded as a normal font and not as inline
+ (tagged) graphic.
+\stopitem
+\startitem
+ Also, try to generalize the helpers and methods in such ways that we can experiment
+ with additional tricks (after all, \TEX\ is about control).
+\stopitem
+\startitem
+ Todo: once there are more fonts (with the right data tables), check the code with the
+ specification.
+\stopitem
+\stopitemize
+
+\stopsubject
+
+\setupTABLE[c][1][style=tttf,align={flushleft,lohi}]
+
+\startsubject[title=Adobe Variable Font Prototype (cff)]
+
+\unexpanded\def\SampleFont#1#2% weight / contrast
+ {\definedfont[name:adobevariablefontprototype#1*default at 32pt]It looks like this!}
+
+\bTABLE[distance=2em,frame=off]
+\bTR \bTD extralight 0/0 \eTD \bTD \SampleFont {extralight} \eTD \eTR
+\bTR \bTD light 150/0 \eTD \bTD \SampleFont {light} \eTD \eTR
+\bTR \bTD regular 394/0 \eTD \bTD \SampleFont {regular} \eTD \eTR
+\bTR \bTD semibold 600/0 \eTD \bTD \SampleFont {semibold} \eTD \eTR
+\bTR \bTD bold 824/0 \eTD \bTD \SampleFont {bold} \eTD \eTR
+\bTR \bTD black high contrast 1000/100 \eTD \bTD \SampleFont {blackhighcontrast} \eTD \eTR
+\bTR \bTD black medium contrast 1000/50 \eTD \bTD \SampleFont {blackmediumcontrast} \eTD \eTR
+\bTR \bTD black 1000/0 \eTD \bTD \SampleFont {black} \eTD \eTR
+\eTABLE
+
+\stopsubject
+
+% \starttyping
+% \definefont
+% [MyLightFont]
+% [name:adobevariablefontprototypelight*default]
+% \stoptyping
+
+\unexpanded\def\SampleFont#1#2% weight / width
+ {\definedfont[name:avenirnextvariable#1*default at 32pt]It looks like this!}
+
+\startsubject[title=Avenir Next Variable (ttf)]
+
+\bTABLE[distance=2em,frame=off]
+\bTR \bTD regular 400/100 \eTD \bTD \SampleFont {regular} \eTD \eTR
+\bTR \bTD medium 500/100 \eTD \bTD \SampleFont {medium} \eTD \eTR
+\bTR \bTD bold 700/100 \eTD \bTD \SampleFont {bold} \eTD \eTR
+\bTR \bTD heavy 900/100 \eTD \bTD \SampleFont {heavy} \eTD \eTR
+\bTR \bTD condensed 400/75 \eTD \bTD \SampleFont {condensed} \eTD \eTR
+\bTR \bTD medium condensed 500/75 \eTD \bTD \SampleFont {mediumcondensed} \eTD \eTR
+\bTR \bTD bold condensed 700/75 \eTD \bTD \SampleFont {boldcondensed} \eTD \eTR
+\bTR \bTD heavy condensed 900/75 \eTD \bTD \SampleFont {heavycondensed} \eTD \eTR
+\eTABLE
+
+\stopsubject
+
+\startbuffer[both]
+\vfill
+\startMPcode
+ draw outlinetext.b
+ ("\getbuffer[a]")
+ (withcolor "white")
+ (withcolor "red" withpen pencircle scaled 1/10)
+ xsized .9TextWidth ;
+\stopMPcode
+\vfill
+\startMPcode
+ draw outlinetext.b
+ ("\getbuffer[b]")
+ (withcolor "white")
+ (withcolor "red" withpen pencircle scaled 1/10)
+ xsized .9TextWidth ;
+\stopMPcode
+\vfill
+\startMPcode
+ draw outlinetext.b
+ ("\getbuffer[c]")
+ (withcolor "white")
+ (withcolor "red" withpen pencircle scaled 1/10)
+ xsized .90TextWidth ;
+\stopMPcode
+\vfill
+\stopbuffer
+
+\startbuffer[fill]
+\vfill
+\startMPcode
+ draw outlinetext.f
+ ("\getbuffer[a]")
+ (withcolor "white")
+ xsized .9TextWidth ;
+\stopMPcode
+\vfill
+\startMPcode
+ draw outlinetext.f
+ ("\getbuffer[b]")
+ (withcolor "white")
+ xsized .9TextWidth ;
+\stopMPcode
+\vfill
+\startMPcode
+ draw outlinetext.f
+ ("\getbuffer[c]")
+ (withcolor "white")
+ xsized .9TextWidth ;
+\stopMPcode
+\vfill
+\stopbuffer
+
+\startbuffer[draw]
+\vfill
+\startMPcode
+ draw outlinetext.d
+ ("\getbuffer[a]")
+ (withcolor "white" withpen pencircle scaled 1/10)
+ xsized .9TextWidth ;
+\stopMPcode
+\vfill
+\startMPcode
+ draw outlinetext.d
+ ("\getbuffer[b]")
+ (withcolor "white" withpen pencircle scaled 1/10)
+ xsized .9TextWidth ;
+\stopMPcode
+\vfill
+\startMPcode
+ draw outlinetext.d
+ ("\getbuffer[c]")
+ (withcolor "white" withpen pencircle scaled 1/10)
+ xsized .9TextWidth ;
+\stopMPcode
+\vfill
+\stopbuffer
+
+\startbuffer[overlay]
+\startoverlay{%
+\startMPcode
+ draw outlinetext.d
+ ("\getbuffer[a]")
+ (withcolor "green" withtransparency (3,0.5) withpen pencircle scaled 1/10)
+ xsized .9TextWidth ;
+\stopMPcode
+}{%
+\startMPcode
+ draw outlinetext.d
+ ("\getbuffer[b]")
+ (withcolor "yellow" withtransparency (3,0.5) withpen pencircle scaled 1/10)
+ xsized .9TextWidth ;
+\stopMPcode
+}{%
+\startMPcode
+ draw outlinetext.d
+ ("\getbuffer[c]")
+ (withcolor "red" withtransparency (3,0.5) withpen pencircle scaled 1/10)
+ xsized .9TextWidth ;
+\stopMPcode
+}
+\stopoverlay
+\stopbuffer
+
+\startbuffer[a]
+\definedfont[name:adobevariablefontprototypeextralight]bachotex%
+\stopbuffer
+
+\startbuffer[b]
+\definedfont[name:adobevariablefontprototypelight]bachotex%
+\stopbuffer
+
+\startbuffer[c]
+\definedfont[name:adobevariablefontprototypebold]bachotex%
+\stopbuffer
+
+\startsubject[title=Metafontisch overlap (1)]
+ \getbuffer[both]
+\stopsubject
+
+\startbuffer[a]
+\definefontfeature[whatever][axis={weight:50}]%
+\definedfont[name:adobevariablefontprototype*whatever]bachotex%
+\stopbuffer
+
+\startbuffer[b]
+\definefontfeature[whatever][axis={weight:300}]%
+\definedfont[name:adobevariablefontprototype*whatever]bachotex%
+\stopbuffer
+
+\startbuffer[c]
+\definefontfeature[whatever][axis={weight:700}]%
+\definedfont[name:adobevariablefontprototype*whatever]bachotex%
+\stopbuffer
+
+\startsubject[title=Metafontisch overlap (2)]
+ \getbuffer[both]
+\stopsubject
+\startsubject[title=Fills hide the details]
+ \getbuffer[fill]
+\stopsubject
+\startsubject[title=Unsuitable outlines]
+ \getbuffer[draw]
+\stopsubject
+
+\startbuffer[a]
+\definefontfeature[whatever][axis={weight:100,contrast:0}]%
+\definedfont[name:adobevariablefontprototype*whatever]bachotex%
+\stopbuffer
+
+\startbuffer[b]
+\definefontfeature[whatever][axis={weight:200,contrast:20}]%
+\definedfont[name:adobevariablefontprototype*whatever]bachotex%
+\stopbuffer
+
+\startbuffer[c]
+\definefontfeature[whatever][axis={weight:200,contrast:50}]%
+\definedfont[name:adobevariablefontprototype*whatever]bachotex%
+\stopbuffer
+
+\startsubject[title=Stay within specification]
+ \getbuffer[draw]
+\stopsubject
+
+\startsubject[title=Subjective choices]
+ \getbuffer[fill]
+\stopsubject
+
+\startbuffer[a]
+\definefontfeature[whatever][axis={weight:100,contrast:0}]%
+\definedfont[name:adobevariablefontprototype*whatever]tex%
+\stopbuffer
+
+\startbuffer[b]
+\definefontfeature[whatever][axis={weight:200,contrast:20}]%
+\definedfont[name:adobevariablefontprototype*whatever]tex%
+\stopbuffer
+
+\startbuffer[c]
+\definefontfeature[whatever][axis={weight:200,contrast:50}]%
+\definedfont[name:adobevariablefontprototype*whatever]tex%
+\stopbuffer
+
+\startsubject[title=Difficult choices]
+ \getbuffer[overlay]
+\stopsubject
+
+\startsubject[title=Definitions (1)]
+
+\startbuffer
+\definefontfeature
+ [default:shaped]
+ [default]
+ [axis={width:10}]
+
+\definefont
+ [SomeFont]
+ [file:avenirnextvariable*default:shaped]
+\stopbuffer
+
+\typebuffer \getbuffer
+
+\start \setupinterlinespace \showglyphs \showfontkerns \SomeFont \input zapf \wordright{Hermann Zapf}\par \stop
+
+\stopsubject
+
+\startsubject[title=Definitions (2)]
+
+\startbuffer
+\definefontfeature
+ [default:shaped]
+ [default]
+ [axis={width:100,weight=200}]
+
+\definefont
+ [SomeFont]
+ [file:avenirnextvariable*default:shaped @ 12pt]
+\stopbuffer
+
+\typebuffer \getbuffer
+
+\start \setupinterlinespace \showglyphs \showfontkerns \SomeFont \input zapf \wordright{Hermann Zapf}\par \stop
+
+\stopsubject
+
+\startsubject[title=Transformations]
+
+\subsubject{correction:}
+
+\startformula
+ x^\prime = x
+ + s_{x1} \cdot x_1
+ + s_{x2} \cdot x_2
+ + s_{x3} \cdot x_3
+ + s_{x4} \cdot x_4
+\stopformula
+
+\startformula
+ y^\prime = y
+ + s_{y1} \cdot y_1
+ + s_{y2} \cdot y_2
+ + s_{y3} \cdot y_3
+ + s_{y4} \cdot y_4
+\stopformula
+
+\subsubject{internal cff:}
+
+\starttyping
+1 <setvstore>
+120 [10 -30 40 -60] 1 <blend> ... <operator>
+100 120 [10 -30 40 -60] [30 -10 -30 20] 2 <blend> .. <operator>
+\stoptyping
+
+\subsubject{external ttf:}
+
+\starttyping
+apply x deltas [10 -30 40 -60] to x 120
+apply y deltas [30 -10 -30 20] to y 100
+\stoptyping
+
+\stopsubject
+
+\startsubject[title=Follow up]
+
+\startitemize
+\startitem
+ Performance is quite okay because we cache instances. I might come up with an
+ alternative way but there is not much to gain.
+\stopitem
+\startitem
+ Once fonts show up alternative interfaces to axis and scaling can be explored
+ and provided.
+\stopitem
+\startitem
+ I will look into ways to do all the backend font code in \CONTEXT\ in \LUA\
+ (easier to update and more flexible).
+\stopitem
+\startitem
+ Luigi and I will play with variable fonts defined in the traditional meta tools
+ that come with \TEX.
+\stopitem
+\stopitemize
+
+\stopsubject
+
+\stopdocument