From 46b03399a84b981464e53278a42192ead7dd52a9 Mon Sep 17 00:00:00 2001 From: Rob McKaughan Date: Thu, 18 Apr 2024 11:21:03 -0700 Subject: [PATCH 1/5] Set is_bold correctly for Italic Bold as well as Bold --- Lib/glyphsLib/builder/names.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/glyphsLib/builder/names.py b/Lib/glyphsLib/builder/names.py index aed5c0379..67b57dc44 100644 --- a/Lib/glyphsLib/builder/names.py +++ b/Lib/glyphsLib/builder/names.py @@ -36,7 +36,7 @@ def to_ufo_names(self, ufo, master, family_name): styleMapFamilyName, styleMapStyleName = build_stylemap_names( family_name=family_name, style_name=styleName, - is_bold=(styleName == "Bold"), + is_bold=("Bold" in styleName), is_italic=is_italic, ) ufo.info.styleMapFamilyName = styleMapFamilyName From f61738bac020ff0b237f5697577eb0e5ea5d8437 Mon Sep 17 00:00:00 2001 From: Rob McKaughan Date: Thu, 18 Apr 2024 11:21:30 -0700 Subject: [PATCH 2/5] Support fonts named Oblique instead of Italic --- Lib/glyphsLib/builder/names.py | 2 +- Lib/glyphsLib/classes.py | 8 ++++---- tests/classes_test.py | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Lib/glyphsLib/builder/names.py b/Lib/glyphsLib/builder/names.py index 67b57dc44..de4587878 100644 --- a/Lib/glyphsLib/builder/names.py +++ b/Lib/glyphsLib/builder/names.py @@ -99,7 +99,7 @@ def _get_linked_style(style_name, is_bold, is_italic): is_regular = False elif part == "Bold" and is_bold: is_bold = False - elif part == "Italic" and is_italic: + elif (part == "Italic" or part == "Oblique") and is_italic: is_italic = False else: linked_style.appendleft(part) diff --git a/Lib/glyphsLib/classes.py b/Lib/glyphsLib/classes.py index ef4a2bd84..3e9d2c5a4 100755 --- a/Lib/glyphsLib/classes.py +++ b/Lib/glyphsLib/classes.py @@ -1706,7 +1706,7 @@ def _joinName(self): if self.italicAngle: if names == ["Regular"]: return "Italic" - if "Italic" not in self.customName: + if "Italic" not in self.customName and "Oblique" not in self.customName: names.append("Italic") return " ".join(names) @@ -3311,7 +3311,7 @@ def windowsFamily(self): value = self.customParameters["styleMapFamilyName"] if value: return value - if self.name not in ("Regular", "Bold", "Italic", "Bold Italic"): + if self.name not in ("Regular", "Bold", "Italic", "Oblique", "Bold Italic", "Bold Oblique"): return self.familyName + " " + self.name else: return self.familyName @@ -3322,7 +3322,7 @@ def windowsFamily(self, value): @property def windowsStyle(self): - if self.name in ("Regular", "Bold", "Italic", "Bold Italic"): + if self.name in ("Regular", "Bold", "Italic", "Oblique", "Bold Italic", "Bold Oblique"): return self.name else: return "Regular" @@ -3331,7 +3331,7 @@ def windowsStyle(self): def windowsLinkedToStyle(self): value = self.linkStyle return value - if self.name in ("Regular", "Bold", "Italic", "Bold Italic"): + if self.name in ("Regular", "Bold", "Italic", "Oblique", "Bold Italic", "Bold Oblique"): return self.name else: return "Regular" diff --git a/tests/classes_test.py b/tests/classes_test.py index 22b9492f6..2a2316f2c 100755 --- a/tests/classes_test.py +++ b/tests/classes_test.py @@ -671,6 +671,13 @@ def test_name(self): master.italicAngle = 10.0 self.assertEqual("Italic", master.name) + # Test that bold italic gets properly named. + master = GSFontMaster() + master.weight = "Bold" + master.width = "Regular" + master.italicAngle = 10.0 + self.assertEqual("Bold Italic", master.name) + # Test that we don't get an extra "Italic" in the name of masters # whose customName already contain the string "Italic" master = GSFontMaster() @@ -680,6 +687,15 @@ def test_name(self): master.italicAngle = 10.0 self.assertEqual("Italic", master.name) + # Test that we don't get an extra "Italic" in the name of masters + # whose customName contains the string "Oblique" + master = GSFontMaster() + master.weight = "Regular" + master.width = "Regular" + master.customName = "Oblique" + master.italicAngle = 10.0 + self.assertEqual("Oblique", master.name) + def test_name_assignment(self): test_data = [ # , , , From 139e9fa5a4a880ed0f510501aa7ed1839e84f696 Mon Sep 17 00:00:00 2001 From: Rob McKaughan Date: Thu, 18 Apr 2024 11:50:22 -0700 Subject: [PATCH 3/5] Blackified --- Lib/glyphsLib/classes.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Lib/glyphsLib/classes.py b/Lib/glyphsLib/classes.py index 3e9d2c5a4..5cd002841 100755 --- a/Lib/glyphsLib/classes.py +++ b/Lib/glyphsLib/classes.py @@ -3311,7 +3311,14 @@ def windowsFamily(self): value = self.customParameters["styleMapFamilyName"] if value: return value - if self.name not in ("Regular", "Bold", "Italic", "Oblique", "Bold Italic", "Bold Oblique"): + if self.name not in ( + "Regular", + "Bold", + "Italic", + "Oblique", + "Bold Italic", + "Bold Oblique", + ): return self.familyName + " " + self.name else: return self.familyName @@ -3322,7 +3329,14 @@ def windowsFamily(self, value): @property def windowsStyle(self): - if self.name in ("Regular", "Bold", "Italic", "Oblique", "Bold Italic", "Bold Oblique"): + if self.name in ( + "Regular", + "Bold", + "Italic", + "Oblique", + "Bold Italic", + "Bold Oblique", + ): return self.name else: return "Regular" @@ -3331,7 +3345,14 @@ def windowsStyle(self): def windowsLinkedToStyle(self): value = self.linkStyle return value - if self.name in ("Regular", "Bold", "Italic", "Oblique", "Bold Italic", "Bold Oblique"): + if self.name in ( + "Regular", + "Bold", + "Italic", + "Oblique", + "Bold Italic", + "Bold Oblique", + ): return self.name else: return "Regular" From 6d1fa18274d6f9df8737e084e94523c115df79e8 Mon Sep 17 00:00:00 2001 From: Rob McKaughan Date: Wed, 22 May 2024 15:24:04 -0700 Subject: [PATCH 4/5] only test for 'Bold', 'Bold Italic', 'Bold Oblique' --- Lib/glyphsLib/builder/names.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/glyphsLib/builder/names.py b/Lib/glyphsLib/builder/names.py index de4587878..5fe8239bb 100644 --- a/Lib/glyphsLib/builder/names.py +++ b/Lib/glyphsLib/builder/names.py @@ -36,7 +36,7 @@ def to_ufo_names(self, ufo, master, family_name): styleMapFamilyName, styleMapStyleName = build_stylemap_names( family_name=family_name, style_name=styleName, - is_bold=("Bold" in styleName), + is_bold=(styleName == "Bold" or styleName == "Bold Italic"), is_italic=is_italic, ) ufo.info.styleMapFamilyName = styleMapFamilyName From 01bb390de75aa1ee53a51004889508a48f964c65 Mon Sep 17 00:00:00 2001 From: Rob McKaughan Date: Wed, 22 May 2024 15:25:13 -0700 Subject: [PATCH 5/5] only test for 'Bold', 'Bold Italic', 'Bold Oblique' --- Lib/glyphsLib/builder/names.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/glyphsLib/builder/names.py b/Lib/glyphsLib/builder/names.py index 5fe8239bb..93d2b6bac 100644 --- a/Lib/glyphsLib/builder/names.py +++ b/Lib/glyphsLib/builder/names.py @@ -36,7 +36,7 @@ def to_ufo_names(self, ufo, master, family_name): styleMapFamilyName, styleMapStyleName = build_stylemap_names( family_name=family_name, style_name=styleName, - is_bold=(styleName == "Bold" or styleName == "Bold Italic"), + is_bold=(styleName in ("Bold", "Bold Italic", "Bold Oblique")), is_italic=is_italic, ) ufo.info.styleMapFamilyName = styleMapFamilyName