···<date: 2014-07-28, Monday>···<from: Philipp Gesang>···

> (CC’ing the Context list.)
> 
> ···<date: 2014-07-28, Monday>···<from: Jura Pintar>···
> 
> > Do you have a prediction about how long it will take before a fix is
> > released?
> 
> No, sorry. What I do have though is the culprit:
> 
>       c70b2e466bbb07e976f8684d56ae4e5398169e7d is the first bad commit

Seems to be related to the feature precedence code. If I revert
the related changes as in the attached patch, the bug vanishes
(and so does te feature ordering …).

diff --git a/src/luaotfload-fontloader.lua b/src/luaotfload-fontloader.lua
index 293a319..719a1f7 100644
--- a/src/luaotfload-fontloader.lua
+++ b/src/luaotfload-fontloader.lua
@@ -9152,34 +9152,26 @@ local function featuresinitializer(tfmdata,value)
       local language=properties.language
       local basesubstitutions=rawdata.resources.features.gsub
       local basepositionings=rawdata.resources.features.gpos
-      if basesubstitutions or basepositionings then
-        local sequences=tfmdata.resources.sequences
-        for s=1,#sequences do
-          local sequence=sequences[s]
-          local sfeatures=sequence.features
-          if sfeatures then
-            local order=sequence.order
-            if order then
-              for i=1,#order do 
-                local feature=order[i]
-                if features[feature] then
-                  local validlookups,lookuplist=collectlookups(rawdata,feature,script,language)
-                  if not validlookups then
-                  elseif basesubstitutions and basesubstitutions[feature] then
-                    if trace_preparing then
-                      report_prepare("filtering base feature %a for %a",feature,fullname)
-                    end
-                    applybasemethod("preparesubstitutions",tfmdata,feature,value,validlookups,lookuplist)
-                    registerbasefeature(feature,value)
-                  elseif basepositionings and basepositionings[feature] then
-                    if trace_preparing then
-                      report_prepare("filtering base feature %a for %a",feature,fullname)
-                    end
-                    applybasemethod("preparepositionings",tfmdata,feature,features[feature],validlookups,lookuplist)
-                    registerbasefeature(feature,value)
-                  end
-                end
-              end
+      if basesubstitutions then
+        for feature,data in next,basesubstitutions do
+          local value=features[feature]
+          if value then
+            local validlookups,lookuplist=collectlookups(rawdata,feature,script,language)
+            if validlookups then
+              applybasemethod("preparesubstitutions",tfmdata,feature,value,validlookups,lookuplist)
+              registerbasefeature(feature,value)
+            end
+          end
+        end
+      end
+      if basepositionings then
+        for feature,data in next,basepositionings do
+          local value=features[feature]
+          if value then
+            local validlookups,lookuplist=collectlookups(rawdata,feature,script,language)
+            if validlookups then
+              applybasemethod("preparepositionings",tfmdata,feature,features[feature],validlookups,lookuplist)
+              registerbasefeature(feature,value)
             end
           end
         end

Attachment: pgpcELknSqgor.pgp
Description: PGP signature

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to