diff options
Diffstat (limited to 'tex/generic')
| -rw-r--r-- | tex/generic/context/luatex-fonts-merged.lua | 99 | 
1 files changed, 72 insertions, 27 deletions
| diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua index f9234d8fd..455d8ba41 100644 --- a/tex/generic/context/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex-fonts-merged.lua @@ -1,6 +1,6 @@  -- merged file : luatex-fonts-merged.lua  -- parent file : luatex-fonts.lua --- merge date  : 06/19/11 14:17:51 +-- merge date  : 06/23/11 19:25:18  do -- begin closure to overcome local limits and interference @@ -1100,6 +1100,44 @@ if not modules then modules = { } end modules ['l-lpeg'] = {  local lpeg = require("lpeg") +-- tracing (only used when we encounter a problem in integration of lpeg in luatex) + +local report = texio and texio.write_nl or print + +--~ local lpmatch = lpeg.match +--~ local lpprint = lpeg.print +--~ local lpp     = lpeg.P +--~ local lpr     = lpeg.R +--~ local lps     = lpeg.S +--~ local lpc     = lpeg.C +--~ local lpb     = lpeg.B +--~ local lpv     = lpeg.V +--~ local lpcf    = lpeg.Cf +--~ local lpcb    = lpeg.Cb +--~ local lpcg    = lpeg.Cg +--~ local lpct    = lpeg.Ct +--~ local lpcs    = lpeg.Cs +--~ local lpcc    = lpeg.Cc +--~ local lpcmt   = lpeg.Cmt +--~ local lpcarg  = lpeg.Carg + +--~ function lpeg.match(l,...) report("LPEG MATCH") lpprint(l) return lpmatch(l,...) end + +--~ function lpeg.P    (l) local p = lpp   (l) report("LPEG P =")    lpprint(l) return p end +--~ function lpeg.R    (l) local p = lpr   (l) report("LPEG R =")    lpprint(l) return p end +--~ function lpeg.S    (l) local p = lps   (l) report("LPEG S =")    lpprint(l) return p end +--~ function lpeg.C    (l) local p = lpc   (l) report("LPEG C =")    lpprint(l) return p end +--~ function lpeg.B    (l) local p = lpb   (l) report("LPEG B =")    lpprint(l) return p end +--~ function lpeg.V    (l) local p = lpv   (l) report("LPEG V =")    lpprint(l) return p end +--~ function lpeg.Cf   (l) local p = lpcf  (l) report("LPEG Cf =")   lpprint(l) return p end +--~ function lpeg.Cb   (l) local p = lpcb  (l) report("LPEG Cb =")   lpprint(l) return p end +--~ function lpeg.Cg   (l) local p = lpcg  (l) report("LPEG Cg =")   lpprint(l) return p end +--~ function lpeg.Ct   (l) local p = lpct  (l) report("LPEG Ct =")   lpprint(l) return p end +--~ function lpeg.Cs   (l) local p = lpcs  (l) report("LPEG Cs =")   lpprint(l) return p end +--~ function lpeg.Cc   (l) local p = lpcc  (l) report("LPEG Cc =")   lpprint(l) return p end +--~ function lpeg.Cmt  (l) local p = lpcmt (l) report("LPEG Cmt =")  lpprint(l) return p end +--~ function lpeg.Carg (l) local p = lpcarg(l) report("LPEG Carg =") lpprint(l) return p end +  local type = type  local byte, char = string.byte, string.char @@ -1208,17 +1246,17 @@ patterns.unspacer      = ((patterns.spacer^1)/"")^0  patterns.somecontent   = (anything - newline - space)^1 -- (utf8char - newline - space)^1  patterns.beginline     = #(1-newline) -local unquoted = Cs(patterns.unquoted * endofstring) -- not C - -function string.unquoted(str) -    return match(unquoted,str) or str -end - --- more efficient: +-- local unquoted = Cs(patterns.unquoted * endofstring) -- not C +-- +-- function string.unquoted(str) +--     return match(unquoted,str) or str +-- end +-- +-- more efficient on long strings:  local unquoted = ( -    squote * Cs(1 - P(-2)) * squote -  + dquote * Cs(1 - P(-2)) * dquote +    squote * Cs((1 - P(-2))^0) * squote +  + dquote * Cs((1 - P(-2))^0) * dquote  )  function string.unquoted(str) @@ -1227,10 +1265,12 @@ end  patterns.unquoted = unquoted ---~ print(string.unquoted("test")) ---~ print(string.unquoted([["t\"est"]])) ---~ print(string.unquoted([["t\"est"x]])) ---~ print(string.unquoted("\'test\'")) +-- print(string.unquoted("test")) +-- print(string.unquoted([["t\"est"]])) +-- print(string.unquoted([["t\"est"x]])) +-- print(string.unquoted("\'test\'")) +-- print(string.unquoted('"test"')) +-- print(string.unquoted('"test"'))  function lpeg.anywhere(pattern) --slightly adapted from website      return P { P(pattern) + 1 * V(1) } -- why so complex? @@ -1696,6 +1736,12 @@ end  --~ Cf(Ct("") * (Cg(C(...) * "=" * Cs(...)))^0, rawset) +--~ for k, v in next, patterns do +--~     if type(v) ~= "table" then +--~         lpeg.print(v) +--~     end +--~ end +  end -- closure  do -- begin closure to overcome local limits and interference @@ -3178,14 +3224,16 @@ function constructors.calculatescale(tfmdata,scaledpoints)      return scaledpoints, scaledpoints / (parameters.units or 1000) -- delta  end -function constructors.assignmathparameters(target,tfmdata) +function constructors.assignmathparameters(target,original) -- dumb version, not used in context      -- when a tfm file is loaded, it has already been scaled -    -- and it never enters the scaled so this is otf only +    -- and it never enters the scaled so this is otf only and +    -- even then we do some extra in the context math plugins      local mathparameters = original.mathparameters      if mathparameters and next(mathparameters) then          local targetparameters     = target.parameters +        local targetproperties     = target.properties          local targetmathparameters = { } -        local factor               = targetparameters.factor +        local factor               = targetproperties.math_is_scaled and 1 or targetparameters.factor          for name, value in next, mathparameters do              if name == "RadicalDegreeBottomRaisePercent" then                  targetmathparameters[name] = value @@ -3193,15 +3241,12 @@ function constructors.assignmathparameters(target,tfmdata)                  targetmathparameters[name] = value * factor              end          end -        if not targetmathparameters.AccentBaseHeight then -            targetmathparameters.AccentBaseHeight = nil -- safeguard, still needed? -        end -        if not targetmathparameters.FractionDelimiterSize then -            targetmathparameters.FractionDelimiterSize = 0 -        end -        if not mathparameters.FractionDelimiterDisplayStyleSize then -            targetmathparameters.FractionDelimiterDisplayStyleSize = 0 -        end +     -- if not targetmathparameters.FractionDelimiterSize then +     --     targetmathparameters.FractionDelimiterSize = 0 +     -- end +     -- if not mathparameters.FractionDelimiterDisplayStyleSize then +     --     targetmathparameters.FractionDelimiterDisplayStyleSize = 0 +     -- end          target.mathparameters = targetmathparameters      end  end @@ -3210,7 +3255,7 @@ function constructors.scale(tfmdata,specification)      local target         = { } -- the new table      --      if tonumber(specification) then -        specification = { size = specification } +        specification    = { size = specification }      end      --      local scaledpoints   = specification.size | 
