% 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
