Hi, * I try to "remove the paths of text" from a metapost pictures to let the background visible. * Using https://mailman.ntg.nl/pipermail/ntg-context/2018/thread.html#92725 * I was able to get the following with one glyph (MVE code below) https://wiki.contextgarden.net/images/d/d2/test_extract_glyphs.pdf 2 questions: 1/ for some fonts (e.g. dejavu vs latin modern) the "encompassing" path of the B glyph can switch from B[1] to B[Bn]. Is there a trick to identify which id match with "the encompassing" path ? 2/ now, I would like to do the same, but for text... a kind of derivative of "textext" or "outlinetext". Would you please give me some guidelines ? does it already exist ? should I use something like \handletokens, \scantokens ? do you have examples where I can get inspiration ? Thanks again for your help, Garulfo %============================================================================== \starttext %------------------------------------------------------------------------------ \startluacode function document.outlinepaths(character) local chardata = fonts.hashes.characters[true] -- by unicode local shapedata = fonts.hashes.shapes[true] -- by index local c = chardata[character] if c and c.index and shapedata then local shapeglyphs = shapedata.glyphs or { } local glyph = shapeglyphs[c.index] if glyph and (glyph.segments or glyph.sequence) then local units = shapedata.units or 1000 local factor = 100/units return fonts.metapost.paths(glyph,factor) end end return { } end function document.defineoutline(char,target) local outlines = document.outlinepaths(char) local nofpaths = #outlines context("path %s[] ;",target) context("numeric %sn ; %sn := %s ;",target,target,nofpaths) for i=1,nofpaths do context("%s[%i] := %s ; ",target,i,outlines[i]) end end \stopluacode %------------------------------------------------------------------------------ \def\mpdefineoutlines#1#2{\ctxlua{document.defineoutline(\number`#1,"#2")}} %------------------------------------------------------------------------------ \startMPpage numeric dimA ; dimA := 20cm; path pathbackground ; pathbackground := unitsquare scaled dimA ; fill pathbackground withshademethod "linear" withshadedirection(0,1) withshadecolors (red,blue); %-------------------------------------- \mpdefineoutlines{B}{B} %-------------------------------------- numeric dimB ; dimB := 2cm; numeric vratio ; vratio := 2; path frame ; frame := unitsquare xscaled (dimA - 2 * dimB) yscaled (dimA / vratio) shifted (dimB , (dimA - (dimA / vratio))/2 ); %-------------------------------------- pair shift ; shift := center frame; numeric scal ; scal := (0.9) * (10cm / (bbheight B[1])) ; picture monImageB; monImageB := nullpicture; addto monImageB contour (B[1] shifted (- center B[1]) scaled scal) shifted shift withpostscript "collect"; addto monImageB contour frame withpostscript "evenodd"; for i=2 upto Bn : addto monImageB contour (B[i] shifted (- center B[1]) scaled scal) shifted shift; endfor ; %-------------------------------------- draw monImageB withcolor white; \stopMPpage \stoptext