axis locations. First, collect all STAT AxisValues that match the new default axis locations (excluding "elided" ones); concatenate the strings in design axis order, while giving priority to "synthetic" values (Format 4), to form the typographic subfamily name associated with the new default instance. Finally, update all related records in the name table, making sure that legacy family/sub-family names conform to the the R/I/B/BI (Regular, Italic, Bold, Bold Italic) naming model. Example: Updating a partial variable font: | >>> ttFont = TTFont("OpenSans[wdth,wght].ttf") | >>> updateNameTable(ttFont, {"wght": AxisRange(400, 900), "wdth": 75}) The name table records will be updated in the following manner: NameID 1 familyName: "Open Sans" --> "Open Sans Condensed" NameID 2 subFamilyName: "Regular" --> "Regular" NameID 3 Unique font identifier: "3.000;GOOG;OpenSans-Regular" --> "3.000;GOOG;OpenSans-Condensed" NameID 4 Full font name: "Open Sans Regular" --> "Open Sans Condensed" NameID 6 PostScript name: "OpenSans-Regular" --> "OpenSans-Condensed" NameID 16 Typographic Family name: None --> "Open Sans" NameID 17 Typographic Subfamily name: None --> "Condensed" References: https://docs.microsoft.com/en-us/typography/opentype/spec/stat https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids r