diff options
Diffstat (limited to 'tex/generic/context/luatex-fonts-merged.lua')
| -rw-r--r-- | tex/generic/context/luatex-fonts-merged.lua | 69 | 
1 files changed, 38 insertions, 31 deletions
diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua index 4cbf701b7..f35c65e9f 100644 --- a/tex/generic/context/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex-fonts-merged.lua @@ -1,6 +1,6 @@  -- merged file : c:/data/develop/context/texmf/tex/generic/context/luatex-fonts-merged.lua  -- parent file : c:/data/develop/context/texmf/tex/generic/context/luatex-fonts.lua --- merge date  : 12/24/09 18:00:24 +-- merge date  : 12/26/09 22:27:58  do -- begin closure to overcome local limits and interference @@ -12,7 +12,9 @@ if not modules then modules = { } end modules ['l-string'] = {      license   = "see context related readme files"  } -local sub, gsub, find, match, gmatch, format, char, byte, rep = string.sub, string.gsub, string.find, string.match, string.gmatch, string.format, string.char, string.byte, string.rep +local sub, gsub, find, match, gmatch, format, char, byte, rep, lower = string.sub, string.gsub, string.find, string.match, string.gmatch, string.format, string.char, string.byte, string.rep, string.lower + +-- some functions may disappear as they are not used anywhere  if not string.split then @@ -54,14 +56,14 @@ end  --~ function string:unquote()  --~     if find(self,"^[\'\"]") then ---~         return self:sub(2,-2) +--~         return sub(self,2,-2)  --~     else  --~         return self  --~     end  --~ end  function string:quote() -- we could use format("%q") -    return '"' .. self:unquote() .. '"' +    return format("%q",self)  end  function string:count(pattern) -- variant 3 @@ -81,8 +83,9 @@ function string:limit(n,sentinel)      end  end -function string:strip() -    return (gsub(self,"^%s*(.-)%s*$", "%1")) +function string:strip() -- the .- is quite efficient +--  return match(self,"^%s*(.-)%s*$") or "" +    return match(self,'^%s*(.*%S)') or '' -- posted on lua list  end  function string:is_empty() @@ -120,14 +123,14 @@ if not string.characters then      local function nextchar(str, index)          index = index + 1 -        return (index <= #str) and index or nil, str:sub(index,index) +        return (index <= #str) and index or nil, sub(str,index,index)      end      function string:characters()          return nextchar, self, 0      end      local function nextbyte(str, index)          index = index + 1 -        return (index <= #str) and index or nil, byte(str:sub(index,index)) +        return (index <= #str) and index or nil, byte(sub(str,index,index))      end      function string:bytes()          return nextbyte, self, 0 @@ -140,7 +143,7 @@ end  function string:rpadd(n,chr)      local m = n-#self      if m > 0 then -        return self .. self.rep(chr or " ",m) +        return self .. rep(chr or " ",m)      else          return self      end @@ -149,7 +152,7 @@ end  function string:lpadd(n,chr)      local m = n-#self      if m > 0 then -        return self.rep(chr or " ",m) .. self +        return rep(chr or " ",m) .. self      else          return self      end @@ -238,7 +241,7 @@ function string.tabtospace(str,tab)          local s = find(str,"\t")          if s then              if not tab then tab = 7 end -- only when found -            local d = tab-(s-1)%tab +            local d = tab-(s-1) % tab              if d > 0 then                  str = gsub(str,"\t",rep(" ",d),1)              else @@ -265,7 +268,7 @@ end  function string:topattern(lowercase,strict)      if lowercase then -        self = self:lower() +        self = lower(self)      end      self = gsub(self,".",simple_escapes)      if self == "" then @@ -3551,14 +3554,18 @@ function tfm.do_scale(tfmtable, scaledpoints)              t[k] = v          end      end -    local stretch = tfmtable.stretch or 0 -    if stretch ~= 0 and stretch ~= 1 then -        hdelta = hdelta * stretch -        t.extend = stretch * 1000 +    local extend_factor = tfmtable.extend_factor or 0 +    if extend_factor ~= 0 and extend_factor ~= 1 then +        hdelta = hdelta * extend_factor +        t.extend = extend_factor * 1000 +    else +        t.extend = 1000      end -    local slant = tfmtable.slant or 0 -    if slant ~= 0 then -        t.slant = t.slant * 1000 +    local slant_factor = tfmtable.slant_factor or 0 +    if slant_factor ~= 0 then +        t.slant = slant_factor * 1000 +    else +        t.slant = 0      end      -- status      local isvirtual = tfmtable.type == "virtual" or tfmtable.virtualized @@ -6799,8 +6806,6 @@ function otf.copy_to_tfm(data,cache_id) -- we can save a copy when we reorder th          tfm.cidinfo            = data.cidinfo          tfm.cidinfo.registry   = tfm.cidinfo.registry or ""          tfm.type               = "real" -        tfm.stretch            = 0 -- stretch -        tfm.slant              = 0 -- data.slant          tfm.direction          = 0          tfm.boundarychar_label = 0          tfm.boundarychar       = 65536 @@ -7790,6 +7795,7 @@ local function toligature(kind,lookupname,start,stop,char,markflag,discfound) --                  next.prev = lignode              end              lignode.next, lignode.prev = next, prev +            start = lignode           -- print("start->end",nodes.tosequence(start))          else -- start is the ligature              local deletemarks = markflag ~= "mark" @@ -7919,7 +7925,8 @@ end  function handlers.gsub_ligature(start,kind,lookupname,ligature,sequence) --or maybe pass lookup ref      local s, stop, discfound = start.next, nil, false -    if marks[start.char] then +    local startchar = start.char +    if marks[startchar] then          while s do              local id = s.id              if id == glyph and s.subtype<256 then @@ -7942,7 +7949,7 @@ function handlers.gsub_ligature(start,kind,lookupname,ligature,sequence) --or ma          end          if stop and ligature[2] then              if trace_ligatures then -                local startchar, stopchar = start.char, stop.char +                local stopchar = stop.char                  start = markstoligature(kind,lookupname,start,stop,ligature[2])                  logprocess("%s: replacing %s upto %s by ligature %s",pref(kind,lookupname),gref(startchar),gref(stopchar),gref(start.char))              else @@ -7981,7 +7988,7 @@ function handlers.gsub_ligature(start,kind,lookupname,ligature,sequence) --or ma          end          if stop and ligature[2] then              if trace_ligatures then -                local startchar, stopchar = start.char, stop.char +                local stopchar = stop.char                  start = toligature(kind,lookupname,start,stop,ligature[2],skipmark,discfound)                  logprocess("%s: replacing %s upto %s by ligature %s",pref(kind,lookupname),gref(startchar),gref(stopchar),gref(start.char))              else @@ -11445,7 +11452,7 @@ function fonts.map.line.pdfmapline(tag,str)      return "\\loadmapline[" .. tag .. "][" .. str .. "]"  end -function fonts.map.line.pdftex(e) -- so far no combination of slant and stretch +function fonts.map.line.pdftex(e) -- so far no combination of slant and extend      if e.name and e.fontfile then          local fullname = e.fullname or ""          if e.slant and e.slant ~= 0 then @@ -11454,11 +11461,11 @@ function fonts.map.line.pdftex(e) -- so far no combination of slant and stretch              else                  return fonts.map.line.pdfmapline("=",format('%s %s "%g SlantFont" <%s',e.name,fullname,e.slant,e.fontfile))              end -        elseif e.stretch and e.stretch ~= 1 and e.stretch ~= 0 then +        elseif e.extend and e.extend ~= 1 and e.extend ~= 0 then              if e.encoding then -                return fonts.map.line.pdfmapline("=",format('%s %s "%g ExtendFont" <%s <%s',e.name,fullname,e.stretch,e.encoding,e.fontfile)) +                return fonts.map.line.pdfmapline("=",format('%s %s "%g ExtendFont" <%s <%s',e.name,fullname,e.extend,e.encoding,e.fontfile))              else -                return fonts.map.line.pdfmapline("=",format('%s %s "%g ExtendFont" <%s',e.name,fullname,e.stretch,e.fontfile)) +                return fonts.map.line.pdfmapline("=",format('%s %s "%g ExtendFont" <%s',e.name,fullname,e.extend,e.fontfile))              end          else              if e.encoding then @@ -11501,9 +11508,9 @@ function fonts.map.load_file(filename, entries, encodings)                  if find(line,"^[%#%%%s]") then                      -- print(line)                  else -                    local stretch, slant, name, fullname, fontfile, encoding +                    local extend, slant, name, fullname, fontfile, encoding                      line = line:gsub('"(.+)"', function(s) -                        stretch = find(s,'"([^"]+) ExtendFont"') +                        extend = find(s,'"([^"]+) ExtendFont"')                          slant = find(s,'"([^"]+) SlantFont"')                          return ""                      end) @@ -11527,7 +11534,7 @@ function fonts.map.load_file(filename, entries, encodings)                              encoding = encoding,                              fontfile = fontfile,                              slant    = tonumber(slant), -                            stretch  = tonumber(stretch) +                            extend   = tonumber(extend)                          }                          encodings[name] = encoding                      elseif line ~= "" then  | 
