def test__groupScriptsByTagAndDirection(self, FontClass): font = FontClass() font.features.text = dedent(""" languagesystem DFLT dflt; languagesystem latn dflt; languagesystem latn TRK; languagesystem arab dflt; languagesystem arab URD; languagesystem deva dflt; languagesystem dev2 dflt; """) feaFile = parseLayoutFeatures(font) scripts = ast.getScriptLanguageSystems(feaFile) scriptGroups = KernFeatureWriter._groupScriptsByTagAndDirection( scripts) assert "kern" in scriptGroups assert list(scriptGroups["kern"]["LTR"]) == [("latn", ["dflt", "TRK "])] assert list(scriptGroups["kern"]["RTL"]) == [("arab", ["dflt", "URD "])] assert "dist" in scriptGroups assert list(scriptGroups["dist"]["LTR"]) == [ ("deva", ["dflt"]), ("dev2", ["dflt"]), ]
def setContext(self, font, feaFile, compiler=None): ctx = super().setContext(font, feaFile, compiler=compiler) ctx.gdefClasses = self.getGDEFGlyphClasses() ctx.kerning = self.getKerningData(font, feaFile, self.getOrderedGlyphSet()) feaScripts = ast.getScriptLanguageSystems(feaFile) ctx.scriptGroups = self._groupScriptsByTagAndDirection(feaScripts) return ctx
def setContext(self, font, feaFile, compiler=None): ctx = super(KernFeatureWriter, self).setContext(font, feaFile, compiler=compiler) ctx.kerning = self.getKerningData(font, feaFile) feaScripts = ast.getScriptLanguageSystems(feaFile) ctx.scriptGroups = self._groupScriptsByTagAndDirection(feaScripts) return ctx