Index: /packages/feaTools/trunk/Lib/feaTools/writers/glyphRenameWriter.py =================================================================== --- /packages/feaTools/trunk/Lib/feaTools/writers/glyphRenameWriter.py (revision 58) +++ /packages/feaTools/trunk/Lib/feaTools/writers/glyphRenameWriter.py (revision 172) @@ -58,2 +58,5 @@ target = self._rename(target) super(GlyphRenameFeatureWriter, self).gposType2(target, value) + + def subtableBreak(self): + pass Index: /packages/feaTools/trunk/Lib/feaTools/writers/printWriter.py =================================================================== --- /packages/feaTools/trunk/Lib/feaTools/writers/printWriter.py (revision 58) +++ /packages/feaTools/trunk/Lib/feaTools/writers/printWriter.py (revision 172) @@ -49,2 +49,4 @@ print ("include", (path)) + def subtableBreak(self): + print "subtable break" Index: /packages/feaTools/trunk/Lib/feaTools/writers/baseWriter.py =================================================================== --- /packages/feaTools/trunk/Lib/feaTools/writers/baseWriter.py (revision 58) +++ /packages/feaTools/trunk/Lib/feaTools/writers/baseWriter.py (revision 172) @@ -40,2 +40,4 @@ raise NotImplementedError + def subtableBreak(self): + raise NotImplementedError Index: /packages/feaTools/trunk/Lib/feaTools/parser.py =================================================================== --- /packages/feaTools/trunk/Lib/feaTools/parser.py (revision 110) +++ /packages/feaTools/trunk/Lib/feaTools/parser.py (revision 172) @@ -185,4 +185,11 @@ "\s*;{0,1}" # ; which will occur zero or one times (ugh!) ) + +# used for finding subtable breaks +subtableRE = re.compile( + "([\s;\{\}]|^)" # whitepace, ; {, } or start of line + "subtable\s*" # subtable + "\s*;" # ; +) def _parseUnknown(writer, text): @@ -283,4 +290,9 @@ text = _executeSimpleSlice(precedingMark, text, includeRE, writer) writer.include(path) + # subtable + subtables = subtableRE.findall(text) + for precedingMark in subtables: + text = _executeSimpleSlice(precedingMark, text, subtableRE, writer) + writer.subtableBreak() text = text.strip() if text: