summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mkxl/meta-imp-demo.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkxl/meta-imp-demo.mkxl')
-rw-r--r--Master/texmf-dist/tex/context/base/mkxl/meta-imp-demo.mkxl233
1 files changed, 233 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkxl/meta-imp-demo.mkxl b/Master/texmf-dist/tex/context/base/mkxl/meta-imp-demo.mkxl
new file mode 100644
index 00000000000..b89a4771bec
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/mkxl/meta-imp-demo.mkxl
@@ -0,0 +1,233 @@
+%D \module
+%D [ file=meta-imp-demo,
+%D version=2021.01.21,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Demo Font,
+%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 This is just a demo of defining a font in \METAPOST. The rendering as well as definitions
+%D are delayed till we actually need the glyph.
+
+\startMPcalculation{simplefun}
+
+ picture DemoSnippets[];
+
+ vardef DemoCircle = image(fill fullcircle scaled 10 ;) enddef ;
+ vardef DemoCenter = image(fill fullcircle scaled 3 ;) enddef ;
+
+ vardef DemoLeft = image(fill fullcircle scaled 3 shifted (-5, 0) ;) enddef ;
+ vardef DemoRight = image(fill fullcircle scaled 3 shifted ( 5, 0) ;) enddef ;
+ vardef DemoUp = image(fill fullcircle scaled 3 shifted ( 0, 5) ;) enddef ;
+ vardef DemoDown = image(fill fullcircle scaled 3 shifted ( 0,-5) ;) enddef ;
+ vardef DemoLowerLeft = image(fill fullcircle scaled 3 shifted (-5,-5) ;) enddef ;
+ vardef DemoLowerRight = image(fill fullcircle scaled 3 shifted ( 5,-5) ;) enddef ;
+ vardef DemoUpperRight = image(fill fullcircle scaled 3 shifted ( 5, 5) ;) enddef ;
+ vardef DemoUpperLeft = image(fill fullcircle scaled 3 shifted (-5, 5) ;) enddef ;
+
+ vardef DemoGlyph =
+ composeglyph(DemoSnippets) ;
+ enddef ;
+
+ lmt_registerglyphs [
+ name = "demo",
+ units = 10,
+ width = 10,
+ height = 10,
+ depth = 0,
+ ] ;
+
+ % we need to set up some basics (signals to the backend and such) at definition
+ % time so we just force a bogus shape (zero)
+
+ lmt_registerglyph [
+ category = "demo",
+ ] ;
+
+\stopMPcalculation
+
+\startluacode
+
+metapost.metafonts.demo = {
+ [utf.byte("g")] = {
+ code = "DemoGlyph",
+ shapes = {
+ { shape = "DemoCircle", color = "gray" },
+ { shape = "DemoLeft", color = "cyan" },
+ { shape = "DemoUp", color = "magenta" },
+ { shape = "DemoCenter", color = "yellow" },
+ }
+ },
+ [utf.byte("h")] = {
+ code = "DemoGlyph",
+ shapes = {
+ { shape = "DemoCircle", color = "gray" },
+ { shape = "DemoRight", color = "red" },
+ { shape = "DemoDown", color = "green" },
+ { shape = "DemoCenter", color = "blue" },
+ }
+ },
+ [19] = {
+ code = "DemoGlyph",
+ shapes = {
+ { shape = "DemoCircle", color = "gray" },
+ { shape = "DemoUp", color = "darkgray" },
+ { shape = "DemoDown", color = "darkgray" },
+ { shape = "DemoLeft", color = "darkgray" },
+ { shape = "DemoRight", color = "darkgray" },
+ { shape = "DemoCenter", color = "darkgray" },
+ }
+ },
+ ["weirdsymbol"] = {
+ code = "DemoGlyph",
+ shapes = {
+ { shape = "DemoCircle", color = "middlegray" },
+ { shape = "DemoUp", color = "red" },
+ { shape = "DemoDown", color = "green" },
+ { shape = "DemoLeft", color = "blue" },
+ { shape = "DemoRight", color = "magenta" },
+ { shape = "DemoCenter", color = "yellow" },
+ }
+ },
+ ["weirdersymbol"] = {
+ code = "DemoGlyph",
+ shapes = {
+ -- { shape = "DemoCircle", color = "gray" },
+ { shape = "DemoCenter", color = "darkgray" },
+ { shape = "DemoLowerLeft", color = "red" },
+ { shape = "DemoLowerRight", color = "green" },
+ { shape = "DemoUpperRight", color = "blue" },
+ { shape = "DemoUpperLeft", color = "yellow" },
+ { shape = "DemoUp", color = "darkred" },
+ { shape = "DemoDown", color = "darkgreen" },
+ { shape = "DemoLeft", color = "darkblue" },
+ { shape = "DemoRight", color = "darkmagenta" },
+ }
+ }
+}
+
+\stopluacode
+
+\continueifinputfile{meta-imp-demo.mkxl}
+
+\setuplayout[tight]
+
+\setupbodyfont[dejavu]
+
+\definefontfeature[demo][metapost=demo,metafont=demo]
+
+\definefont[DemoA][Serif*demo]
+\definefont[DemoB][Serif*demo sa .5]
+\definefont[DemoC][Serif*demo sa .25]
+
+\starttext
+
+ \startbuffer
+ x\ruledhbox{gh}%
+ x\ruledhbox{\char19}%
+ x\privatecharacter{weirdsymbol}%
+ x\privatecharacter{weirdersymbol}%
+ x%
+ \stopbuffer
+
+ \startTEXpage[offset=2pt]
+ \DemoA\getbuffer\par
+ \DemoB\getbuffer\quad\DemoC\getbuffer\par
+ \stopTEXpage
+
+ {\DemoA\ctxlua{fonts.helpers.setmetaglyph {
+ category = "demo",
+ name = "whatever",
+ code = "DemoGlyph",
+ shapes = {
+ { shape = "DemoCenter", color = "darkgray" },
+ { shape = "DemoLowerLeft", color = "darkred" },
+ { shape = "DemoLowerRight", color = "darkgreen" },
+ { shape = "DemoUpperRight", color = "darkblue" },
+ { shape = "DemoUpperLeft", color = "darkyellow" },
+ { shape = "DemoUp", color = "red" },
+ { shape = "DemoDown", color = "green" },
+ { shape = "DemoLeft", color = "blue" },
+ { shape = "DemoRight", color = "magenta" },
+ }
+ }}}
+
+ {\DemoA\setmetaglyph {
+ category {demo}
+ name {forever}
+ code {DemoGlyph}
+ shapes {
+ { shape {DemoCenter} color {middlegray} }
+ { shape {DemoLowerLeft} color {darkgray} }
+ { shape {DemoLowerRight} color {darkgray} }
+ { shape {DemoUpperRight} color {darkgray} }
+ { shape {DemoUpperLeft} color {darkgray} }
+ { shape {DemoUp} color {lightgray} }
+ { shape {DemoDown} color {lightgray} }
+ { shape {DemoLeft} color {lightgray} }
+ { shape {DemoRight} color {lightgray} }
+ }
+ }}
+
+ \startTEXpage[offset=2pt]
+ \DemoA
+ \privatecharacter{whatever}
+ \privatecharacter{forever}
+ \stopTEXpage
+
+ \DemoA\setupinterlinespace \dorecurse{10}{\dorecurse{1000}{g h }\par}\page
+ \DemoB\setupinterlinespace \dorecurse{20}{\dorecurse{1000}{g h }\par}\page
+ \DemoC\setupinterlinespace \dorecurse{30}{\dorecurse{1000}{g h }\par}\page
+
+ \unexpanded\def\MyChar#1%
+ {\begingroup
+ \DemoA
+ \iffontchar\font\privatecharactercode{forever-#1}\else
+ \setmetaglyph {
+ category {demo}
+ name {forever-#1}
+ code {DemoGlyph}
+ shapes {
+ { shape {DemoCenter} color {middlegray} }
+ { shape {DemoLowerLeft} color {dark#1} }
+ { shape {DemoLowerRight} color {dark#1} }
+ { shape {DemoUpperRight} color {dark#1} }
+ { shape {DemoUpperLeft} color {dark#1} }
+ { shape {DemoUp} color {light#1} }
+ { shape {DemoDown} color {light#1} }
+ { shape {DemoLeft} color {light#1} }
+ { shape {DemoRight} color {light#1} }
+ }
+ }%
+ \fi
+ \privatecharacter{forever-#1}%
+ \endgroup}
+
+ \dontcomplain
+
+ \dorecurse{1000}{%
+ \MyChar{red}\space
+ \MyChar{green}\space
+ \MyChar{blue}\space
+ \MyChar{yellow}\space
+ }
+
+ \page
+
+ \start
+ \glyphxscale 1200
+ \glyphyscale 800
+ \dorecurse{1000}{%
+ \MyChar{red}\allowbreak
+ \MyChar{green}\allowbreak
+ \MyChar{blue}\allowbreak
+ \MyChar{yellow}\allowbreak
+ }
+ \stop
+
+\stoptext