Skip to content

Commit 5dc2ce7

Browse files
committed
Fix renaming legacy name records 1 and 2.
1 parent 36bffcb commit 5dc2ce7

File tree

2 files changed

+14
-19
lines changed

2 files changed

+14
-19
lines changed

fontbro/font.py

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -931,24 +931,19 @@ def rename(self, family_name="", style_name="", style_flags=True):
931931
wws_family_name = family_name
932932
wws_subfamily_name = style_name
933933

934-
# family name, subfamily name and full name
935-
family_name_parts = [family_name]
936-
style_name_parts = style_name.split()
937-
subfamily_name_parts = style_name.lower().split()
934+
# family name, subfamily name and full name - fix legacy name records 1 and 2
938935
subfamily_names = ["regular", "italic", "bold", "bold italic"]
939-
subfamily_name_default = subfamily_names[0]
940-
for name_part in style_name_parts:
941-
if name_part.lower() not in subfamily_names:
942-
family_name_parts.append(name_part)
943-
subfamily_name_parts.remove(name_part.lower())
944-
if subfamily_name_default in subfamily_name_parts:
945-
if len(subfamily_name_parts) > 1:
946-
subfamily_name_parts.remove(subfamily_name_default)
947-
subfamily_name_parts = subfamily_name_parts or [subfamily_name_default]
948-
family_name = " ".join(family_name_parts)
949-
subfamily_name = " ".join(subfamily_name_parts).lower()
950-
if subfamily_name not in subfamily_names:
951-
subfamily_name = subfamily_name_default
936+
subfamily_name = style_name
937+
style_name_lower = style_name.lower()
938+
if style_name_lower not in subfamily_names:
939+
subfamily_name = (
940+
"Italic" if style_name_lower.endswith(" italic") else "Regular"
941+
)
942+
family_name_suffix = re.sub(
943+
r"\ italic$", "", subfamily_name, flags=re.IGNORECASE
944+
)
945+
assert family_name_suffix
946+
family_name = f"{typographic_family_name} {family_name_suffix}"
952947

953948
subfamily_name = subfamily_name.title()
954949

tests/test_rename.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def test_rename_with_family_name_only_issue_0062(self):
6161
self.assertEqual(
6262
font.get_names(),
6363
{
64-
"family_name": "Hugo Test Thin",
64+
"family_name": "Hugo Test Regular",
6565
"full_name": "Hugo Test Thin",
6666
"postscript_name": "HugoTest-Thin",
6767
"subfamily_name": "Regular",
@@ -112,7 +112,7 @@ def test_rename_with_style_name_containing_characters_not_allowed_in_postscript_
112112
font = self._get_font("/Tourney/Tourney-VariableFont_wdth,wght.ttf")
113113
font.rename(" Tourney Custom ", " [wdth-wght] ")
114114
names = font.get_names()
115-
self.assertEqual(names[Font.NAME_FAMILY_NAME], "Tourney Custom [wdth-wght]")
115+
self.assertEqual(names[Font.NAME_FAMILY_NAME], "Tourney Custom Regular")
116116
self.assertEqual(names[Font.NAME_SUBFAMILY_NAME], "Regular")
117117
self.assertEqual(names[Font.NAME_FULL_NAME], "Tourney Custom [wdth-wght]")
118118
self.assertEqual(names[Font.NAME_POSTSCRIPT_NAME], "TourneyCustom-wdth-wght")

0 commit comments

Comments
 (0)