summaryrefslogtreecommitdiff
path: root/metapost/context/base
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2021-01-21 18:48:54 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2021-01-21 18:48:54 +0100
commitaea52f4b97d1be9ba194cd9a1d0ff1865c413691 (patch)
tree6b6fe6b48a7b8f161442e391ab03c34f2b4222b4 /metapost/context/base
parente7016154c1f84ab4f9420c19d14af6a28f53bac8 (diff)
downloadcontext-aea52f4b97d1be9ba194cd9a1d0ff1865c413691.tar.gz
2021-01-21 18:04:00
Diffstat (limited to 'metapost/context/base')
-rw-r--r--metapost/context/base/mpxl/mp-lmtx.mpxl28
1 files changed, 28 insertions, 0 deletions
diff --git a/metapost/context/base/mpxl/mp-lmtx.mpxl b/metapost/context/base/mpxl/mp-lmtx.mpxl
index 88a0450d6..ae00f43f1 100644
--- a/metapost/context/base/mpxl/mp-lmtx.mpxl
+++ b/metapost/context/base/mpxl/mp-lmtx.mpxl
@@ -2221,6 +2221,34 @@ def lmt_registerglyph = applyparameters "mpsglyph" "lmt_do_registerglyph" end
newscriptindex mfid_registerglyphs ; mfid_registerglyphs := scriptindex "registerglyphs" ; def lmt_do_registerglyphs = runscript mfid_registerglyphs enddef ;
newscriptindex mfid_registerglyph ; mfid_registerglyph := scriptindex "registerglyph" ; def lmt_do_registerglyph = runscript mfid_registerglyph enddef ;
+% An experimental macro:
+
+vardef composeglyph(suffix snippets) =
+ save llx, lly, urx, ury, u ;
+ u := getparameter "mpsfont" "unicode" ;
+ snippets[u] := image (
+ for i=1 upto getparametercount "mpsfont" "shapes" :
+ draw scantokens ( getparameter "mpsfont" "shapes" i "shape" )
+ withcolor getparameter "mpsfont" "shapes" i "color" ;
+ endfor ;
+ ) ;
+ llx := xpart llcorner snippets[u] ;
+ lly := ypart llcorner snippets[u] ;
+ urx := xpart urcorner snippets[u] ;
+ ury := ypart urcorner snippets[u] ;
+ lmt_registerglyph [
+ category = getparameter "mpsfont" "category",
+ unicode = u,
+ code = "draw " & str snippets & "[" & decimal u & "]",
+ height = ury,
+ depth = - lly,
+ width = urx - llx,
+ boundingbox = { llx, lly, urx, ury }
+ ] ;
+enddef ;
+
+permanent composeglyph ;
+
% Again an experiment (todo: the faster method):
newscriptindex mfid_remaptext ; mfid_remaptext := scriptindex "remaptext" ; def lmt_remaptext = runscript mfid_remaptext enddef ;