From b8635fee62f4c95bb58da069d12ccc89befda3c5 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 21 Nov 2024 14:21:20 -0700 Subject: [PATCH] [cffLib.transforms] Handle an attribute error Fixes https://github.com/fonttools/fonttools/issues/3695 --- Lib/fontTools/cffLib/transforms.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Lib/fontTools/cffLib/transforms.py b/Lib/fontTools/cffLib/transforms.py index 5b474a7cd..82c70f81f 100644 --- a/Lib/fontTools/cffLib/transforms.py +++ b/Lib/fontTools/cffLib/transforms.py @@ -457,7 +457,12 @@ def remove_unused_subroutines(cff): if subrs == font.GlobalSubrs: if not hasattr(font, "FDArray") and hasattr(font.Private, "Subrs"): local_subrs = font.Private.Subrs - elif hasattr(font, "FDArray") and len(font.FDArray) == 1: + elif ( + hasattr(font, "FDArray") + and len(font.FDArray) == 1 + and hasattr(font.FDArray[0].Private, "Subrs") + ): + # Technically we shouldn't do this. But I've run into fonts that do it. local_subrs = font.FDArray[0].Private.Subrs else: local_subrs = None