<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 12, 2014 at 1:38 PM, Hans Hagen <span dir="ltr"><<a href="mailto:pragma@wxs.nl" target="_blank">pragma@wxs.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5">On 10/11/2014 5:07 PM, Mittelbach, Frank wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
while trying to make Taco's linebreaker code I came across some behavior<br>
that I found rather weird<br>
<br>
in essense it looks as if \rpcode is not ending up in the char table<br>
unless \lpcode for the same char is set first (and non-zero)<br>
<br>
\pdfprotrudechars=1<br>
<br>
%\lpcode\font 50 = 1<br>
\rpcode\font 50 = 200<br>
\efcode\font 50 = 333<br>
<br>
\directlua{<br>
local function FMItable (name,t)<br>
     print ("---- looking at table ", name, tostring(t))<br>
       for k, v in pairs(t) do<br>
     print("    ", k,"=", tostring(v))<br>
       end<br>
     print("----------------")<br>
end<br>
  FMItable("char 50",font.fonts[font.current()]<u></u>.characters[50])<br>
}<br>
<br>
\bye<br>
<br>
--------------------<br>
<br>
if you uncomment the lpcode line then both values show up. But what is<br>
puzzling me even more is that if I change the values and then run this<br>
directlua bit again, nothing changes (could of course be that I should<br>
define FMItable differently but ...<br>
<br>
anybody any clue?<br>
</blockquote>
<br></div></div>
sure .. the table that you see is a cached one and if you change a rp value after the font definition it is not reflected in there<br>
<br>
see page 158 of luatex manual : cache field in passed tfm data tbale<br>
<br>
keep in mind that normally one will only set the protrusion values when a font is loaded because once a font is used they are frozen<br>
<br>
(currently these values are em related but at some point they might become glyph width related)<br>
<br>
\starttext<br>
<br>
\directlua{<br>
    function fonts.constructors.<u></u>aftercopyingcharacters(target,<u></u>original)<br>
        target.cache = "renew"<br>
    end<br>
}<br>
<br>
\pdfprotrudechars=1<br>
<br>
\font\foo = LMRoman10-Regular*default,<u></u>quality at 12.3pt<br>
<br>
\foo<br>
<br>
\lpcode\foo 45 = 2000\relax<br>
\rpcode\foo 45 = 2000\relax<br>
\efcode\foo 45 = 4000\relax<br>
<br>
\directlua{<br>
    print("data at tex end")<br>
    inspect(font.fonts              [font.current()].characters[<u></u>45])<br>
    print("original passed data")<br>
    inspect(fonts.hashes.<u></u>identifiers[font.current()].<u></u>characters[45])<br>
}<br>
<br>
test<br>
<br>
\stoptext<br>
<br></blockquote><div><br></div><div>with luatex-plain from contexst mkiv</div><div> </div></div>%%</div><div class="gmail_extra">%% test-hans-1<br clear="all"><div><div>\directlua{</div><div>    function fonts.constructors.aftercopyingcharacters(target,original)</div><div>        target.cache = "renew"</div><div>    end</div><div>}</div><div><br></div><div>\pdfprotrudechars=1</div><div><br></div><div>\font\foo = file:lmroman12-regular </div><div>\foo</div><div><br></div><div>\lpcode\foo 45 = 2000\relax</div><div>\rpcode\foo 45 = 2000\relax</div><div>\efcode\foo 45 = 4000\relax</div><div><br></div><div>\directlua{</div><div>    print("data at tex end")</div><div>    inspect(font.fonts              [font.current()].characters[45])</div><div>    print("original passed data")</div><div>    inspect(fonts.hashes.identifiers[font.current()].characters[45])</div><div>}</div><div><br></div><div>test</div><div>\bye</div></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><div>$ luatex --fmt=luatex-plain test-hans-1.tex </div><div>This is LuaTeX, Version beta-0.79.1 </div><div> \write18 enabled.</div><div>(./test-hans-1.tex</div><div>(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l</div><div>uatex-basics.tex)</div><div>(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l</div><div>uatex-fonts.tex <push namespace> </opt/luatex/standalone-mkiv-new/tex/texmf-cont</div><div>ext/tex/generic/context/luatex/luatex-fonts-merged.lua>(using cache: /opt/luatex</div><div>/standalone-mkiv-new/tex/texmf-cache/luatex-cache/generic) <luatex-fonts.lua loa</div><div>ded in 0.051 seconds> <pop namespace>)</div><div>(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l</div><div>uatex-math.tex(load luc: /opt/luatex/standalone-mkiv-new/tex/texmf-cache/luatex-</div><div>cache/generic/fonts/otf/lmroman10-regular.luc)(load luc: /opt/luatex/standalone-</div><div>mkiv-new/tex/texmf-cache/luatex-cache/generic/fonts/otf/lmroman7-regular.luc)(lo</div><div>ad luc: /opt/luatex/standalone-mkiv-new/tex/texmf-cache/luatex-cache/generic/fon</div><div>ts/otf/lmroman5-regular.luc)(load luc: /opt/luatex/standalone-mkiv-new/tex/texmf</div><div>-cache/luatex-cache/generic/fonts/otf/lmmono10-regular.luc)(load luc: /opt/luate</div><div>x/standalone-mkiv-new/tex/texmf-cache/luatex-cache/generic/fonts/otf/lmromanslan</div><div>t10-regular.luc)(load luc: /opt/luatex/standalone-mkiv-new/tex/texmf-cache/luate</div><div>x-cache/generic/fonts/otf/lmroman10-italic.luc)(load luc: /opt/luatex/standalone</div><div>-mkiv-new/tex/texmf-cache/luatex-cache/generic/fonts/otf/lmroman10-bold.luc)(loa</div><div>d luc: /opt/luatex/standalone-mkiv-new/tex/texmf-cache/luatex-cache/generic/font</div><div>s/otf/lmroman10-bolditalic.luc)(load luc: /opt/luatex/standalone-mkiv-new/tex/te</div><div>xmf-cache/luatex-cache/generic/fonts/otf/latinmodern-math.luc))</div><div>(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l</div><div>uatex-languages.tex)</div><div>(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l</div><div>uatex-mplib.tex)(load luc: /opt/luatex/standalone-mkiv-new/tex/texmf-cache/luate</div><div>x-cache/generic/fonts/otf/lmroman12-regular.luc)data at tex end</div><div>table={</div><div> ["bot_accent"]=0,</div><div> ["depth"]=0,</div><div> ["expansion_factor"]=4000,</div><div> ["height"]=191103,</div><div> ["index"]=64,</div><div> ["italic"]=0,</div><div> ["left_protruding"]=2000,</div><div> ["right_protruding"]=2000,</div><div> ["top_accent"]=0,</div><div> ["used"]=false,</div><div> ["width"]=256377,</div><div>}</div><div>original passed data</div><div>table={</div><div> ["height"]=191102.976,</div><div> ["index"]=64,</div><div> ["width"]=256376.832,</div><div>}</div><div> [1{/opt/luatex/standalone-mkiv-</div><div>new/tex/texmf/fonts/map/pdftex/plain/pdftex.map}])</opt/luatex/standalone-mkiv-n</div><div>ew/tex/texmf/fonts/opentype/public/lm/lmroman10-regular.otf></opt/luatex/standal</div><div>one-mkiv-new/tex/texmf/fonts/opentype/public/lm/lmroman12-regular.otf></div><div>Output written on test-hans-1.pdf (1 page, 5021 bytes).</div><div>Transcript written on test-hans-1.log.</div></div><div><br></div><div><br></div><div><br></div><div>-- <br></div>luigi<br>
</div></div>