Good morning, Hans! Thanks for the quick fix! Best, Philipp ········· > ········· > > > (CC’ing the Context list.) > > > > ········· > > > > > 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 > ___________________________________________________________________________________ > 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 > ___________________________________________________________________________________