%D \module %D [ file=meta-imp-kaktovik, %D version=2023.04.18, %D title=\METAPOST\ Graphics, %D subtitle=Kaktovik Numbers, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. %D Just a quick hack for Hraban (after a post on the mailing list). \startMPcalculation{simplefun} path kaktovik_glyphs[] ; def InitializeKaktovik = save p, d, u ; pair p[] ; numeric d ; d := .1 ; numeric u ; u := .15 ; % d := getparameterdefault "mpsfont" "d" .10 ; % u := getparameterdefault "mpsfont" "u" .15 ; p[0] := (0,1) ; p[1] := (1,0) ; p[2] := (2,1 - d) ; p[3] := (3,0) ; p[4] := (4,1 - 2d) ; p[5] := (4,1 + u) ; p[6] := (0,1 + 2u) ; p[7] := (4,1 + 4u) ; kaktovik_glyphs[0] := (1,1) { right } .. { left } (2,1/2) { left } .. { right } (3,1); for i= 1 upto 4 : kaktovik_glyphs[i] := p[0] for j=1 upto i : -- p[j] endfor ; endfor ; kaktovik_glyphs[ 5] := p[5] -- p[0] ; for i= 6 upto 9 : kaktovik_glyphs[i] := p[5] -- kaktovik_glyphs[i-5] ; endfor ; kaktovik_glyphs[10] := p[6] -- kaktovik_glyphs[ 5] ; for i=11 upto 14 : kaktovik_glyphs[i] := p[6] -- kaktovik_glyphs[i-5] ; endfor ; kaktovik_glyphs[15] := p[7] -- kaktovik_glyphs[10] ; for i=16 upto 19 : kaktovik_glyphs[i] := p[7] -- kaktovik_glyphs[i-5] ; endfor ; enddef ; vardef Kaktovik(expr i) = draw image ( draw kaktovik_glyphs[i] xscaled (10/20 -1/20) yscaled (25/20 -2/20) withpen (pencircle xscaled 1/20 yscaled 5/20) rotated -(2*20) % withpen (pencircle xscaled 1/40 yscaled 5/40) rotated -(2*20) % withpen (pencircle xscaled 2.5/40 yscaled 5/40) rotated -(2*20) ; ) shifted (2/20,2/20) enddef ; lmt_registerglyphs [ name = "kaktovik", units = 2, usecolor = true, width = 2, height = 2, depth = 0, preamble = "InitializeKaktovik" ] ; for i=0 upto 19 : lmt_registerglyph [ category = "kaktovik", unicode = 119488 + i, % "0x1D2C0" code = "Kaktovik(" & decimal i & ")" ] ; endfor ; \stopMPcalculation \startluacode interfaces.implement { name = "kaktoviknumerals", arguments = "integer", actions = function(n) local digits = { } local count = 1 while true do digits[count] = utf.char(0x1D2C0 + (n % 20)) n = n // 20 if n == 0 then break; end count = count + 1 end table.reverse(digits) context("%t",digits) end } \stopluacode \unprotect \permanent\def\kaktoviknumerals#1{\clf_kaktoviknumerals\numexpr#1\relax} \defineconversion [kaktoviknumerals] [\kaktoviknumerals] \defineconversion [K] [\kaktoviknumerals] \definefontfeature [kaktovik] [metapost=kaktovik] \protect \continueifinputfile{meta-imp-kaktovik.mkxl} \definefontfeature [default] [default] [metapost=kaktovik] % [metapost={category=kaktovik,u=.25,d=.20,x=}] \setupbodyfont[dejavu] % \nopdfcompression \startTEXpage[offset=1ts,width=3es] \start \showglyphs KAKTOVIK \dostepwiserecurse{0}{19}{1}{\kaktoviknumerals{#1}\space } \stop kaktovik \start \red\glyphxscale 700 \dostepwiserecurse{0}{19}{1}{\kaktoviknumerals{#1}\space } \stop \startitemize[packed,K][color=orange,stopper=] \startitem first \stopitem \startitem second \stopitem \startitem third \stopitem \stopitemize KAKTOVIK \start \red \kaktoviknumerals{2023} -- \green\kaktoviknumerals{4} -- \blue \kaktoviknumerals{18} \stop KAKTOVIK \stopTEXpage