From 42d11cfd3ef7d4456b225768bd9ca3c55b2bd368 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Mon, 27 Nov 2017 19:37:19 +0000 Subject: [PATCH] [subset] delete empty SubrsIndex after subsetting Fixes https://github.com/fonttools/fonttools/issues/994 --- Lib/fontTools/subset/__init__.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Lib/fontTools/subset/__init__.py b/Lib/fontTools/subset/__init__.py index 14af6797b..656a038fe 100644 --- a/Lib/fontTools/subset/__init__.py +++ b/Lib/fontTools/subset/__init__.py @@ -2407,12 +2407,27 @@ def prune_post_subset(self, options): for subr in subrs.items: subr.subset_subroutines (local_subrs, font.GlobalSubrs) + # Delete local SubrsIndex if empty + if hasattr(font, 'FDSelect'): + for fd in font.FDArray: + _delete_empty_subrs(fd) + else: + _delete_empty_subrs(font) + # Cleanup for subrs in all_subrs: del subrs._used, subrs._old_bias, subrs._new_bias return True + +def _delete_empty_subrs(font): + if hasattr(font.Private, 'Subrs') and not font.Private.Subrs: + if 'Subrs' in font.Private.rawDict: + del font.Private.rawDict['Subrs'] + delattr(font.Private, 'Subrs') + + @_add_method(ttLib.getTableClass('cmap')) def closure_glyphs(self, s): tables = [t for t in self.tables if t.isUnicode()]