diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/font-imp-tracing.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/font-imp-tracing.lua | 164 |
1 files changed, 12 insertions, 152 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/font-imp-tracing.lua b/Master/texmf-dist/tex/context/base/mkiv/font-imp-tracing.lua index 6ce44514372..255b4cdf068 100644 --- a/Master/texmf-dist/tex/context/base/mkiv/font-imp-tracing.lua +++ b/Master/texmf-dist/tex/context/base/mkiv/font-imp-tracing.lua @@ -47,58 +47,22 @@ local v_none = variables.none -- boundingbox={yes|background|frame|empty|<color>} -local bp = number.dimenfactors.bp -local r = 16384 * bp -- 65536 // 4 -local f_1 = formatters["%.6F w 0 %.6F %.6F %.6F re f"] -local f_2 = formatters["[] 0 d 0 J %.6F w %.6F %.6F %.6F %.6F re S"] - --- change this into w h d instead of h d w - -local backcache = setmetatableindex(function(t,h) - local h = h * bp - local v = setmetatableindex(function(t,d) - local d = d * bp - local v = setmetatableindex(function(t,w) - local v = { "pdf", "origin", f_1(r,-d,w*bp,h+d) } - t[w] = v - return v - end) - t[d] = v - return v - end) - t[h] = v - return v -end) - -local forecache = setmetatableindex(function(t,h) - local h = h * bp - local v = setmetatableindex(function(t,d) - local d = d * bp - local v = setmetatableindex(function(t,w) - -- the frame goes through the boundingbox - local v = { "pdf", "origin", f_2(r,r/2,-d+r/2,w*bp-r,h+d-r) } - t[w] = v - return v - end) - t[d] = v - return v - end) - t[h] = v - return v -end) - -local startcolor = nil -local stopcolor = nil +local backgrounds = nil +local outlines = nil +local startcolor = nil +local stopcolor = nil local function initialize(tfmdata,key,value) if value then - if not backcolors then + if not backgrounds then local vfspecials = backends.pdf.tables.vfspecials - startcolor = vfspecials.startcolor - stopcolor = vfspecials.stopcolor + startcolor = vfspecials.startcolor + stopcolor = vfspecials.stopcolor + backgrounds = vfspecials.backgrounds + outlines = vfspecials.outlines end local characters = tfmdata.characters - local rulecache = backcache + local rulecache = backgrounds local showchar = true local color = "palegray" if type(value) == "string" then @@ -106,9 +70,9 @@ local function initialize(tfmdata,key,value) for i=1,#value do local v = value[i] if v == v_frame then - rulecache = forecache + rulecache = outlines elseif v == v_background then - rulecache = backcache + rulecache = backgrounds elseif v == v_empty then showchar = false elseif v == v_none then @@ -175,107 +139,3 @@ local specification = { registerotffeature(specification) registerafmfeature(specification) - -local f_m = formatters["%F %F m"] -local f_l = formatters["%F %F l"] -local f_b = formatters["[] 0 d 0 J %.6F w"] -local f_e = formatters["s"] - -local function ladder(list,docolor,nocolor,lst,offset,sign,default) - local l = lst[1] - local x1 = bp * (offset + l.kern) * sign - local y1 = bp * l.height - local t = { f_b(r,r/2), f_m(x1,y1) } - local n = 2 - local m = #lst - if default > 0 then - default = default * bp + r - else - default = default * bp - r - end - if m == 1 then - n = n + 1 t[n] = f_l(x1,default) - else - for i=1,m do - local l = lst[i] - local x2 = bp * (offset + l.kern) * sign - local y2 = bp * l.height - if i > 1 and y2 == 0 then - y2 = default - end - n = n + 1 t[n] = f_l(x2,y1) - n = n + 1 t[n] = f_l(x2,y2) - x1, y1 = x2, y2 - end - end - n = n + 1 t[n] = f_e() - list[#list+1] = docolor - list[#list+1] = { "pdf", "origin", concat(t," ") } - list[#list+1] = nocolor -end - -local function initialize(tfmdata,key,value) - if value then - if not backcolors then - local vfspecials = backends.pdf.tables.vfspecials - startcolor = vfspecials.startcolor - stopcolor = vfspecials.stopcolor - end - local characters = tfmdata.characters - local brcolor = startcolor("darkred") - local trcolor = startcolor("darkgreen") - local blcolor = startcolor("darkblue") - local tlcolor = startcolor("darkyellow") - local black = stopcolor - for unicode, character in next, characters do - local mathkern = character.mathkern - if mathkern then - -- more efficient would be co collect more in one pdf - -- directive but this is hardly used so not worth the - -- effort - local width = character.width or 0 - local height = character.height or 0 - local depth = character.depth or 0 - local list = { } - local br = mathkern.bottom_right - local tr = mathkern.top_right - local bl = mathkern.bottom_left - local tl = mathkern.top_left - if br then - ladder(list,brcolor,black,br,width,1,height) - end - if tr then - ladder(list,trcolor,black,tr,width,1,-depth) - end - if bl then - ladder(list,blcolor,black,bl,0,-1,height) - end - if tl then - ladder(list,tlcolor,black,tl,0,-1,-depth) - end - if #list > 0 then - local commands = character.commands - if commands then - character.commands = appendcommandtable(commands,list) - else - list[#list+1] = charcommand[unicode] - character.commands = list - end - end - end - end - end -end - -local specification = { - name = "staircase", - description = "show staircase kerns", - position=1, - manipulators = { - base = initialize, - node = initialize, - } -} - -registerotffeature(specification) -registerafmfeature(specification) |