diff options
author | Hans Hagen <pragma@wxs.nl> | 2021-11-02 10:26:54 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2021-11-02 10:26:54 +0100 |
commit | ca2f0f64dbb46140d36db84ac6e1b6079a386cfa (patch) | |
tree | 51addfb2ea0320820d9d566d2f26206ba200bc21 /tex/context/base/mkxl/lpdf-lmt.lmt | |
parent | c0e2193b6c379b34fbc589343d31f71e02513f03 (diff) | |
download | context-ca2f0f64dbb46140d36db84ac6e1b6079a386cfa.tar.gz |
2021-11-02 10:02:00
Diffstat (limited to 'tex/context/base/mkxl/lpdf-lmt.lmt')
-rw-r--r-- | tex/context/base/mkxl/lpdf-lmt.lmt | 60 |
1 files changed, 44 insertions, 16 deletions
diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt index f6cf9f072..81df491c2 100644 --- a/tex/context/base/mkxl/lpdf-lmt.lmt +++ b/tex/context/base/mkxl/lpdf-lmt.lmt @@ -186,7 +186,7 @@ end -- fonts local fontcharacters -local fontdescriptions +----- fontdescriptions local fontparameters local fontproperties local pdfcharacters @@ -237,7 +237,7 @@ local tjfactor = 100 / 65536 function flushers.updatefontstate(font) fontcharacters = characters[font] - fontdescriptions = descriptions[font] + -- fontdescriptions = descriptions[font] fontparameters = parameters[font] fontproperties = properties[font] local size = fontparameters.size -- or bad news @@ -468,23 +468,55 @@ do -- when changing this, check math: compact-001.tex (rule width) +-- local naturalwidths = setmetatableindex(function(t,font) +-- local d = descriptions[font] +-- local c = characters[font] +-- local f = parameters[font].hfactor or parameters[font].factor +-- local v = setmetatableindex(function(t,char) +-- local w +-- local e = c and c[char] +-- if e then +-- w = e.width or 0 +-- end +-- if not w then +-- e = d and d[char] +-- if e then +-- w = e.width +-- if w then +-- w = w * f +-- end +-- end +-- end +-- if not w then +-- w = 0 +-- end +-- t[char] = w +-- return w +-- end) +-- t[font] = v +-- return v +-- end) + + -- we need to use descriptions ... otherwise we get wrong dimensions when we use + -- characters[n].xoffset or virtual stuff + local naturalwidths = setmetatableindex(function(t,font) local d = descriptions[font] local c = characters[font] local f = parameters[font].hfactor or parameters[font].factor local v = setmetatableindex(function(t,char) local w - local e = c and c[char] + local e = d and d[char] if e then - w = e.width or 0 + w = e.width + if w then + w = w * f + end end if not w then - e = d and d[char] + e = c and c[char] if e then - w = e.width - if w then - w = w * f - end + w = e.width or 0 end end if not w then @@ -611,7 +643,7 @@ do return v end) - -- local trace_threshold = false trackers.register("backends.pdf.threshold", function(v) trace_threshold = v end) + local trace_threshold = false trackers.register("backends.pdf.threshold", function(v) trace_threshold = v end) -- local f_skip = formatters["%.2N"] @@ -624,16 +656,15 @@ do pdf_goto_textmode() setup_fontparameters(font,factor,f,e,sx,sy) set_font() - elseif cur_f ~= f then -- when ok move up + elseif cur_f ~= f then -- when ok move up (maybe no longer needed) pdf_goto_textmode() setup_fontparameters(font,factor,f,e,sx,sy) set_font() --- elseif cur_tmrx ~= tmrx or cur_factor ~= factor or cur_f ~= f or cur_e ~= e then + -- elseif cur_tmrx ~= tmrx or cur_factor ~= factor or cur_f ~= f or cur_e ~= e then elseif cur_tmrx ~= tmrx or cur_factor ~= factor or cur_e ~= e then setup_fontparameters(font,factor,f,e,sx,sy) need_tm = true end - local move = calc_pdfpos(pos_h,pos_v) if trace_threshold then @@ -691,7 +722,6 @@ do if mode == "chararray" then begin_charmode() end - cw = cw + naturalwidth[char] * tmef * f_x_scale local slot = pdfcharacters[data.index or char] -- registers usage @@ -2174,7 +2204,6 @@ do objnum = objnum, immediate = true, nolength = nolength, --- compresslevel = compressed == false and 0 or nil, compresslevel = compressed, type = "stream", string = data, @@ -2190,7 +2219,6 @@ do return pdfdeferredobject { objnum = objnum, immediate = true, --- compresslevel = compressed == false and 0 or nil, compresslevel = compressed, type = "stream", file = filename, |