\usemodule[present-lines]

\definecolor[maincolor][r=.4,g=.4]

\startdocument[title=Font features,subtitle={\CONTEXT\ 2017 Maibach}]

\startchapter[title=What are they]

\startitemize
    \startitem
        built in substitution that is often optional like ligatures but for some
        languages mandate
    \stopitem
    \startitem
        built in positioning that is assumed to be applied like kerning, mark
        anchoring cursive
    \stopitem
    \startitem
        external properties like coloring, spacing, fallback combinations
    \stopitem
    \startitem
        engine related tricks like expansion and protrusion
    \stopitem
    \startitem
        tracing options
    \stopitem
    \startitem
        whatever you like \unknown\ so let me know
    \stopitem
    \blank[2*big]
    \startitem
        so in \CONTEXT\ we have font features (driven by font) and pseudo
        features (driven by additional needs)
    \stopitem
\stopitemize

\stopchapter

\startchapter[title=Substitution]

\startitemize
    \startitem
        single: replace one by another
    \stopitem
    \startitem
        alternate: replace one by one of a set
    \stopitem
    \startitem
        multiple: replace one by multiple others
    \stopitem
    \startitem
        ligature: replace multiple by one shape
    \stopitem
    \blank[2*big]
    \startitem
        contextual lookups and replacements with look back and look ahead
    \stopitem
\stopitemize

\stopchapter

\startchapter[title=Positioning]

\startitemize
    \startitem
        single: repositioning a glyph (with optional marks), this includes
        traditional kerning
    \stopitem
    \startitem
        pairwise: repositioning two adjacent glyphs (with optional marks)
    \stopitem
    \startitem
        anchoring: often used for marks to base glyphs, ligatures and other marks
    \stopitem
    \startitem
        attachment: often used for cursive scripts, pasting glyphs in a word together
    \stopitem
    \blank[2*big]
    \startitem
        contextual lookups and positioning with look back and look ahead
    \stopitem
\stopitemize

\stopchapter

\startchapter[title=Related]

\startitemize
    \startitem
        analyze: needed for dealing with features that need information about
        initial, medial, final and isolated properties
    \stopitem
    \startitem
        reordering: needed for script like devanagari
    \stopitem
    \startitem
        spacing: deals with for positioning glyphs and spaces
    \stopitem
\stopitemize

\stopchapter

\startchapter[title=Pitfalls]

\startitemize
    \startitem
        solutions for similar tasks can be quite different which makes tracing
        or checking sometimes hard (many ways to make ligatures)
    \stopitem
    \startitem
        order matters and demands careful font design but it is hard to predict
        all cases
    \stopitem
    \startitem
        a sloppy font design can result in a performance hit or huge fonts
    \stopitem
    \startitem
        features can be bugged and fonts vendors seldom have an update policy
    \stopitem
    \startitem
        shapers can differ due to assumptions, heuristics, interpreting
        specifications, bugs, \unknown
    \stopitem
\stopitemize

\stopchapter

\startchapter[title=Examples]
    \startitem
        all kind of substitutions: \type {2017-features-substitutiontest.tex}
    \stopitem
    \startitem
        simple inter character kerns: \type {2017-features-kerntest.tex}
    \stopitem
    \startitem
        single character positioning: \type {2017-features-singletest.tex}
    \stopitem
    \startitem
        pairwise character positioning: \type {2017-features-pairtest.tex}
    \stopitem
    \startitem
        contextual positioning: \type {2017-features-contexttest.tex}
    \stopitem
    \startitem
        kerning with space (glue): \type {2017-features-spacetest.tex}
    \stopitem
\startitemize

\stopitemize

\stopchapter

\stopdocument

