[subset] Fix CFF subsetting of fonts with no FDSelectors
diff --git a/Lib/fontTools/subset.py b/Lib/fontTools/subset.py
index 8f508a8..c7e165c 100644
--- a/Lib/fontTools/subset.py
+++ b/Lib/fontTools/subset.py
@@ -1401,7 +1401,9 @@
# Renumber subroutines to remove unused ones
all_subrs = [font.GlobalSubrs]
- all_subrs.extend(fd.Private.Subrs for fd in font.FDArray if hasattr(fd.Private, 'Subrs'))
+ all_subrs.append(font.Private.Subrs)
+ if hasattr(font, 'FDSelect'):
+ all_subrs.extend(fd.Private.Subrs for fd in font.FDArray if hasattr(fd.Private, 'Subrs'))
# Prepare
for subrs in all_subrs:
if not subrs: continue
@@ -1423,7 +1425,14 @@
if i not in subrs._used: continue
decompiler.reset()
decompiler.execute(subrs[i])
- subrs[i].subset_subroutines (subrs, font.GlobalSubrs)
+ if subrs == font.GlobalSubrs:
+ if not hasattr(font, 'FDSelect'):
+ local_subrs = font.Private.Subrs
+ else:
+ local_subrs = []
+ else:
+ local_subrs = subrs
+ subrs[i].subset_subroutines (local_subrs, font.GlobalSubrs)
# Cleanup
for subrs in all_subrs:
if not subrs: continue