From 9deb7fdf2296191efffd3324bb4d77e3d2bb224f Mon Sep 17 00:00:00 2001
From: Philipp Gesang <phg@phi-gamma.net>
Date: Mon, 2 May 2016 18:39:42 +0200
Subject: [fontloader] sync with Context as of 2016-05-02

---
 src/fontloader/misc/fontloader-font-afm.lua     | 16 +++++++++----
 src/fontloader/misc/fontloader-font-dsp.lua     |  4 ++--
 src/fontloader/misc/fontloader-font-otj.lua     |  8 ++++---
 src/fontloader/misc/fontloader-font-otl.lua     |  2 +-
 src/fontloader/misc/fontloader-font-ots.lua     |  2 +-
 src/fontloader/misc/fontloader-l-file.lua       |  2 +-
 src/fontloader/runtime/fontloader-reference.lua | 30 ++++++++++++++++---------
 7 files changed, 41 insertions(+), 23 deletions(-)

(limited to 'src')

diff --git a/src/fontloader/misc/fontloader-font-afm.lua b/src/fontloader/misc/fontloader-font-afm.lua
index 99b8577..0d6b7cb 100644
--- a/src/fontloader/misc/fontloader-font-afm.lua
+++ b/src/fontloader/misc/fontloader-font-afm.lua
@@ -228,7 +228,8 @@ do
 
     -- old font loader
 
-    local fontloader = fontloader
+    local fontloader      = fontloader
+    local get_indexes_old = false
 
     if fontloader then
 
@@ -236,7 +237,7 @@ do
         local open_font     = fontloader.open
         local close_font    = fontloader.close
 
-        local function get_indexes_old(data,pfbname)
+        get_indexes_old = function(data,pfbname)
             local pfbblob = open_font(pfbname)
             if pfbblob then
                 local characters = data.characters
@@ -394,7 +395,7 @@ do
         end
     end
 
-    if fontloader then
+    if get_indexes_old then
 
         afm.use_new_indexer = true
         get_indexes_new     = get_indexes
@@ -598,7 +599,15 @@ unify = function(data, filename)
     resources.private = private
 end
 
+local everywhere = { ["*"] = { ["*"] = true } } -- or: { ["*"] = { "*" } }
+local noflags    = { false, false, false, false }
+
+afm.experimental_normalize = false
+
 normalize = function(data)
+    if type(afm.experimental_normalize) == "function" then
+        afm.experimental_normalize(data)
+    end
 end
 
 fixnames = function(data)
@@ -616,7 +625,6 @@ fixnames = function(data)
     end
 end
 
-
 --[[ldx--
 <p>These helpers extend the basic table with extra ligatures, texligatures
 and extra kerns. This saves quite some lookups later.</p>
diff --git a/src/fontloader/misc/fontloader-font-dsp.lua b/src/fontloader/misc/fontloader-font-dsp.lua
index 85a80bd..330a940 100644
--- a/src/fontloader/misc/fontloader-font-dsp.lua
+++ b/src/fontloader/misc/fontloader-font-dsp.lua
@@ -1144,8 +1144,8 @@ local function handlemark(f,fontdata,lookupid,lookupoffset,offset,glyphs,nofglyp
             end
             for i=1,nofbaserecords do
                 local components = baserecords[i]
-                local b = basecoverage[i]
                 if components then
+                    local b = basecoverage[i]
                     for c=1,#components do
                         local classes = components[c]
                         if classes then
@@ -1160,7 +1160,7 @@ local function handlemark(f,fontdata,lookupid,lookupoffset,offset,glyphs,nofglyp
                                 end
                             end
                         end
-                        components[i] = classes
+--                         components[i] = classes
                     end
                 end
             end
diff --git a/src/fontloader/misc/fontloader-font-otj.lua b/src/fontloader/misc/fontloader-font-otj.lua
index ebda723..6ff80d8 100644
--- a/src/fontloader/misc/fontloader-font-otj.lua
+++ b/src/fontloader/misc/fontloader-font-otj.lua
@@ -1202,9 +1202,11 @@ local function inject_everything(head,where)
                             else
                              -- local i = rawget(p,"emptyinjections")
                                 local i = p.emptyinjections
-                                local leftkern = i.leftkern
-                                if leftkern and leftkern ~= 0 then
-                                    setfield(prev,"replace",newkern(leftkern)) -- maybe also leftkern
+                                if i then
+                                    local leftkern = i.leftkern
+                                    if leftkern and leftkern ~= 0 then
+                                        setfield(prev,"replace",newkern(leftkern)) -- maybe also leftkern
+                                    end
                                 end
                             end
                             if done then
diff --git a/src/fontloader/misc/fontloader-font-otl.lua b/src/fontloader/misc/fontloader-font-otl.lua
index bcea275..f7b6eb5 100644
--- a/src/fontloader/misc/fontloader-font-otl.lua
+++ b/src/fontloader/misc/fontloader-font-otl.lua
@@ -53,7 +53,7 @@ local report_otf         = logs.reporter("fonts","otf loading")
 local fonts              = fonts
 local otf                = fonts.handlers.otf
 
-otf.version              = 3.018 -- beware: also sync font-mis.lua and in mtx-fonts
+otf.version              = 3.019 -- beware: also sync font-mis.lua and in mtx-fonts
 otf.cache                = containers.define("fonts", "otl", otf.version, true)
 
 local otfreaders         = otf.readers
diff --git a/src/fontloader/misc/fontloader-font-ots.lua b/src/fontloader/misc/fontloader-font-ots.lua
index 90fcde2..21225c2 100644
--- a/src/fontloader/misc/fontloader-font-ots.lua
+++ b/src/fontloader/misc/fontloader-font-ots.lua
@@ -3347,7 +3347,7 @@ local function txtdirstate(start,stack,top,rlparmode)
         new = rlparmode
     end
     if trace_directions then
-        report_process("directions after txtdir %a: parmode %a, txtmode %a, level %a",dir,mref(rlparmode),mref(new),topstack)
+        report_process("directions after txtdir %a: parmode %a, txtmode %a, level %a",dir,mref(rlparmode),mref(new),top)
     end
     return getnext(start), top, new
 end
diff --git a/src/fontloader/misc/fontloader-l-file.lua b/src/fontloader/misc/fontloader-l-file.lua
index 7ed6370..b6822e9 100644
--- a/src/fontloader/misc/fontloader-l-file.lua
+++ b/src/fontloader/misc/fontloader-l-file.lua
@@ -436,7 +436,7 @@ local deslasher = lpeg.replacer(S("\\/")^1,"/")
 
 function file.join(one, two, three, ...)
     if not two then
-        return one == "" and one or lpegmatch(stripper,one)
+        return one == "" and one or lpegmatch(reslasher,one)
     end
     if one == "" then
         return lpegmatch(stripper,three and concat({ two, three, ... },"/") or two)
diff --git a/src/fontloader/runtime/fontloader-reference.lua b/src/fontloader/runtime/fontloader-reference.lua
index 5be6493..5f35ded 100644
--- a/src/fontloader/runtime/fontloader-reference.lua
+++ b/src/fontloader/runtime/fontloader-reference.lua
@@ -1,6 +1,6 @@
 -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
 -- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date  : 04/27/16 10:18:10
+-- merge date  : 05/01/16 09:52:32
 
 do -- begin closure to overcome local limits and interference
 
@@ -2545,7 +2545,7 @@ local reslasher=lpeg.replacer(S("\\/"),"/")
 local deslasher=lpeg.replacer(S("\\/")^1,"/")
 function file.join(one,two,three,...)
   if not two then
-    return one=="" and one or lpegmatch(stripper,one)
+    return one=="" and one or lpegmatch(reslasher,one)
   end
   if one=="" then
     return lpegmatch(stripper,three and concat({ two,three,... },"/") or two)
@@ -7114,11 +7114,12 @@ end
 local get_indexes
 do
   local fontloader=fontloader
+  local get_indexes_old=false
   if fontloader then
     local font_to_table=fontloader.to_table
     local open_font=fontloader.open
     local close_font=fontloader.close
-    local function get_indexes_old(data,pfbname)
+    get_indexes_old=function(data,pfbname)
       local pfbblob=open_font(pfbname)
       if pfbblob then
         local characters=data.characters
@@ -7235,7 +7236,7 @@ do
       end
     end
   end
-  if fontloader then
+  if get_indexes_old then
     afm.use_new_indexer=true
     get_indexes_new=get_indexes
     get_indexes=function(data,pfbname)
@@ -7415,7 +7416,13 @@ unify=function(data,filename)
   resources.marks={}
   resources.private=private
 end
+local everywhere={ ["*"]={ ["*"]=true } } 
+local noflags={ false,false,false,false }
+afm.experimental_normalize=false
 normalize=function(data)
+  if type(afm.experimental_normalize)=="function" then
+    afm.experimental_normalize(data)
+  end
 end
 fixnames=function(data)
   for k,v in next,data.descriptions do
@@ -12678,8 +12685,8 @@ local function handlemark(f,fontdata,lookupid,lookupoffset,offset,glyphs,nofglyp
       end
       for i=1,nofbaserecords do
         local components=baserecords[i]
-        local b=basecoverage[i]
         if components then
+          local b=basecoverage[i]
           for c=1,#components do
             local classes=components[c]
             if classes then
@@ -12694,7 +12701,6 @@ local function handlemark(f,fontdata,lookupid,lookupoffset,offset,glyphs,nofglyp
                 end
               end
             end
-            components[i]=classes
           end
         end
       end
@@ -15639,7 +15645,7 @@ local trace_defining=false registertracker("fonts.defining",function(v) trace_de
 local report_otf=logs.reporter("fonts","otf loading")
 local fonts=fonts
 local otf=fonts.handlers.otf
-otf.version=3.018 
+otf.version=3.019 
 otf.cache=containers.define("fonts","otl",otf.version,true)
 local otfreaders=otf.readers
 local hashes=fonts.hashes
@@ -17657,9 +17663,11 @@ local function inject_everything(head,where)
                 end
               else
                 local i=p.emptyinjections
-                local leftkern=i.leftkern
-                if leftkern and leftkern~=0 then
-                  setfield(prev,"replace",newkern(leftkern)) 
+                if i then
+                  local leftkern=i.leftkern
+                  if leftkern and leftkern~=0 then
+                    setfield(prev,"replace",newkern(leftkern)) 
+                  end
                 end
               end
               if done then
@@ -21029,7 +21037,7 @@ local function txtdirstate(start,stack,top,rlparmode)
     new=rlparmode
   end
   if trace_directions then
-    report_process("directions after txtdir %a: parmode %a, txtmode %a, level %a",dir,mref(rlparmode),mref(new),topstack)
+    report_process("directions after txtdir %a: parmode %a, txtmode %a, level %a",dir,mref(rlparmode),mref(new),top)
   end
   return getnext(start),top,new
 end
-- 
cgit v1.2.3