> On 10/12/2014 1:49 PM, luigi scarso wrote:

I'll add support for this:

\directlua{fonts.constructors.cacheintex = false}

(only useful for generic usage)

On Sun, Oct 12, 2014 at 1:38 PM, Hans Hagen <[email protected]
<mailto:[email protected]>> wrote:

    On 10/11/2014 5:07 PM, Mittelbach, Frank wrote:

        while trying to make Taco's linebreaker code I came across some
        behavior
        that I found rather weird

        in essense it looks as if \rpcode is not ending up in the char table
        unless \lpcode for the same char is set first (and non-zero)

        \pdfprotrudechars=1

        %\lpcode\font 50 = 1
        \rpcode\font 50 = 200
        \efcode\font 50 = 333

        \directlua{
        local function FMItable (name,t)
              print ("---- looking at table ", name, tostring(t))
                for k, v in pairs(t) do
              print("    ", k,"=", tostring(v))
                end
              print("----------------")
        end
           FMItable("char 50",font.fonts[font.current()]__.characters[50])
        }

        \bye

        --------------------

        if you uncomment the lpcode line then both values show up. But
        what is
        puzzling me even more is that if I change the values and then
        run this
        directlua bit again, nothing changes (could of course be that I
        should
        define FMItable differently but ...

        anybody any clue?


    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

    see page 158 of luatex manual : cache field in passed tfm data tbale

    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

    (currently these values are em related but at some point they might
    become glyph width related)

    \starttext

    \directlua{
         function
    fonts.constructors.__aftercopyingcharacters(target,__original)
             target.cache = "renew"
         end
    }

    \pdfprotrudechars=1

    \font\foo = LMRoman10-Regular*default,__quality at 12.3pt

    \foo

    \lpcode\foo 45 = 2000\relax
    \rpcode\foo 45 = 2000\relax
    \efcode\foo 45 = 4000\relax

    \directlua{
         print("data at tex end")
         inspect(font.fonts              [font.current()].characters[__45])
         print("original passed data")

    inspect(fonts.hashes.__identifiers[font.current()].__characters[45])
    }

    test

    \stoptext


with luatex-plain from contexst mkiv
%%
%% test-hans-1
\directlua{
     function fonts.constructors.aftercopyingcharacters(target,original)
         target.cache = "renew"
     end
}

\pdfprotrudechars=1

\font\foo = file:lmroman12-regular
\foo

\lpcode\foo 45 = 2000\relax
\rpcode\foo 45 = 2000\relax
\efcode\foo 45 = 4000\relax

\directlua{
     print("data at tex end")
     inspect(font.fonts              [font.current()].characters[45])
     print("original passed data")
     inspect(fonts.hashes.identifiers[font.current()].characters[45])
}

test
\bye





$ luatex --fmt=luatex-plain test-hans-1.tex
This is LuaTeX, Version beta-0.79.1
  \write18 enabled.
(./test-hans-1.tex
(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l
uatex-basics.tex)
(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l
uatex-fonts.tex <push namespace>
</opt/luatex/standalone-mkiv-new/tex/texmf-cont
ext/tex/generic/context/luatex/luatex-fonts-merged.lua>(using cache:
/opt/luatex
/standalone-mkiv-new/tex/texmf-cache/luatex-cache/generic)
<luatex-fonts.lua loa
ded in 0.051 seconds> <pop namespace>)
(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l
uatex-math.tex(load luc:
/opt/luatex/standalone-mkiv-new/tex/texmf-cache/luatex-
cache/generic/fonts/otf/lmroman10-regular.luc)(load luc:
/opt/luatex/standalone-
mkiv-new/tex/texmf-cache/luatex-cache/generic/fonts/otf/lmroman7-regular.luc)(lo
ad luc:
/opt/luatex/standalone-mkiv-new/tex/texmf-cache/luatex-cache/generic/fon
ts/otf/lmroman5-regular.luc)(load luc:
/opt/luatex/standalone-mkiv-new/tex/texmf
-cache/luatex-cache/generic/fonts/otf/lmmono10-regular.luc)(load luc:
/opt/luate
x/standalone-mkiv-new/tex/texmf-cache/luatex-cache/generic/fonts/otf/lmromanslan
t10-regular.luc)(load luc:
/opt/luatex/standalone-mkiv-new/tex/texmf-cache/luate
x-cache/generic/fonts/otf/lmroman10-italic.luc)(load luc:
/opt/luatex/standalone
-mkiv-new/tex/texmf-cache/luatex-cache/generic/fonts/otf/lmroman10-bold.luc)(loa
d luc:
/opt/luatex/standalone-mkiv-new/tex/texmf-cache/luatex-cache/generic/font
s/otf/lmroman10-bolditalic.luc)(load luc:
/opt/luatex/standalone-mkiv-new/tex/te
xmf-cache/luatex-cache/generic/fonts/otf/latinmodern-math.luc))
(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l
uatex-languages.tex)
(/opt/luatex/standalone-mkiv-new/tex/texmf-context/tex/generic/context/luatex/l
uatex-mplib.tex)(load luc:
/opt/luatex/standalone-mkiv-new/tex/texmf-cache/luate
x-cache/generic/fonts/otf/lmroman12-regular..luc)data at tex end
table={
  ["bot_accent"]=0,
  ["depth"]=0,
  ["expansion_factor"]=4000,
  ["height"]=191103,
  ["index"]=64,
  ["italic"]=0,
  ["left_protruding"]=2000,
  ["right_protruding"]=2000,
  ["top_accent"]=0,
  ["used"]=false,
  ["width"]=256377,
}
original passed data
table={
  ["height"]=191102.976,
  ["index"]=64,
  ["width"]=256376.832,
}
  [1{/opt/luatex/standalone-mkiv-
new/tex/texmf/fonts/map/pdftex/plain/pdftex.map}])</opt/luatex/standalone-mkiv-n
ew/tex/texmf/fonts/opentype/public/lm/lmroman10-regular.otf></opt/luatex/standal
one-mkiv-new/tex/texmf/fonts/opentype/public/lm/lmroman12-regular.otf>
Output written on test-hans-1.pdf (1 page, 5021 bytes).
Transcript written on test-hans-1.log.



--
luigi


--

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
    tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                             | www.pragma-pod.nl
-----------------------------------------------------------------

Reply via email to