summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Andersson <rasmus@notion.se>2023-11-19 03:28:00 +0300
committerRasmus Andersson <rasmus@notion.se>2023-11-19 03:28:00 +0300
commit59063ec875598233020bca5a8fb2e4f1c20d4735 (patch)
tree2fe74b56419b9733d91fb1b70962fbd280e8d991
parent70faa70bf24749ee905fe9611a9ed74e87594351 (diff)
downloadinter-59063ec875598233020bca5a8fb2e4f1c20d4735.tar.xz
change "Display" opsz value to 32 (was 28)
-rw-r--r--misc/tools/bake-vf.py130
-rw-r--r--misc/tools/gen-var-designspace.py13
-rw-r--r--src/Inter-Italic.glyphspackage/fontinfo.plist51
-rw-r--r--src/Inter-Roman.glyphspackage/fontinfo.plist51
4 files changed, 132 insertions, 113 deletions
diff --git a/misc/tools/bake-vf.py b/misc/tools/bake-vf.py
index 5907f8a50..4549a0fa2 100644
--- a/misc/tools/bake-vf.py
+++ b/misc/tools/bake-vf.py
@@ -27,14 +27,19 @@ from fontTools.otlLib.builder import buildStatTable
FLAG_DEFAULT = 0x2 # elidable value, effectively marks a location as default
+OPSZ_MIN = 0 # set at runtime to fvar.axes['opsz'].minValue
+OPSZ_MAX = 0 # set at runtime to fvar.axes['opsz'].maxValue
+
# stat_axes_format_2 is used for making a STAT table with format 1 & 2 records
def stat_axes_format_2(is_italic):
+ OPSZ_MID = OPSZ_MIN + int(round((OPSZ_MAX - OPSZ_MIN) / 2))
return [
dict(name="Optical Size", tag="opsz", ordering=0, values=[
- dict(nominalValue=14, rangeMinValue=14, rangeMaxValue=21, name="Text",
- flags=FLAG_DEFAULT, linkedValue=28),
- dict(nominalValue=28, rangeMinValue=21, rangeMaxValue=28, name="Display"),
+ dict(nominalValue=OPSZ_MIN, rangeMinValue=OPSZ_MIN, rangeMaxValue=OPSZ_MID,
+ name="Text", flags=FLAG_DEFAULT, linkedValue=OPSZ_MAX),
+ dict(nominalValue=OPSZ_MAX, rangeMinValue=OPSZ_MID, rangeMaxValue=OPSZ_MAX,
+ name="Display"),
]),
dict(name="Weight", tag="wght", ordering=1, values=[
dict(nominalValue=100, rangeMinValue=100, rangeMaxValue=150, name="Thin"),
@@ -55,53 +60,53 @@ def stat_axes_format_2(is_italic):
]
-# stat_axes_format_3 is used for making a STAT table with format 1 & 3 records
-def stat_axes_format_3(is_italic):
- # see https://learn.microsoft.com/en-us/typography/opentype/spec/
- # stat#axis-value-table-format-3
- suffix = " Italic" if is_italic else ""
- return [
- { "name": "Optical Size", "tag": "opsz" },
- { "name": "Weight", "tag": "wght", "values": [
- { "name": "Thin"+suffix, "value": 100, "linkedValue": 400 },
- { "name": "ExtraLight"+suffix, "value": 200, "linkedValue": 500 },
- { "name": "Light"+suffix, "value": 300, "linkedValue": 600 },
- { "name": "Regular"+suffix, "value": 400, "linkedValue": 700,
- "flags":FLAG_DEFAULT },
- { "name": "Medium"+suffix, "value": 500, "linkedValue": 800 },
- { "name": "SemiBold"+suffix, "value": 600, "linkedValue": 900 },
- { "name": "Bold"+suffix, "value": 700 },
- { "name": "ExtraBold"+suffix, "value": 800 },
- { "name": "Black"+suffix, "value": 900 },
- ]},
- ]
-
-
-# STAT_AXES is used for making a STAT table with format 4 records
-STAT_AXES = [
- { "name": "Optical Size", "tag": "opsz" },
- { "name": "Weight", "tag": "wght" },
- { "name": "Italic", "tag": "ital" }
-]
-
-# stat_locations is used for making a STAT table with format 4 records
-def stat_locations(is_italic):
- # see https://learn.microsoft.com/en-us/typography/opentype/spec/
- # stat#axis-value-table-format-4
- ital = 1 if is_italic else 0
- suffix = " Italic" if is_italic else ""
- return [
- { "name": "Thin"+suffix, "location":{"wght":100, "ital":ital} },
- { "name": "ExtraLight"+suffix, "location":{"wght":200, "ital":ital} },
- { "name": "Light"+suffix, "location":{"wght":300, "ital":ital} },
- { "name": "Regular"+suffix, "location":{"wght":400, "ital":ital},
- "flags":FLAG_DEFAULT },
- { "name": "Medium"+suffix, "location":{"wght":500, "ital":ital} },
- { "name": "SemiBold"+suffix, "location":{"wght":600, "ital":ital} },
- { "name": "Bold"+suffix, "location":{"wght":700, "ital":ital} },
- { "name": "ExtraBold"+suffix, "location":{"wght":800, "ital":ital} },
- { "name": "Black"+suffix, "location":{"wght":900, "ital":ital} },
- ]
+# # stat_axes_format_3 is used for making a STAT table with format 1 & 3 records
+# def stat_axes_format_3(is_italic):
+# # see https://learn.microsoft.com/en-us/typography/opentype/spec/
+# # stat#axis-value-table-format-3
+# suffix = " Italic" if is_italic else ""
+# return [
+# { "name": "Optical Size", "tag": "opsz" },
+# { "name": "Weight", "tag": "wght", "values": [
+# { "name": "Thin"+suffix, "value": 100, "linkedValue": 400 },
+# { "name": "ExtraLight"+suffix, "value": 200, "linkedValue": 500 },
+# { "name": "Light"+suffix, "value": 300, "linkedValue": 600 },
+# { "name": "Regular"+suffix, "value": 400, "linkedValue": 700,
+# "flags":FLAG_DEFAULT },
+# { "name": "Medium"+suffix, "value": 500, "linkedValue": 800 },
+# { "name": "SemiBold"+suffix, "value": 600, "linkedValue": 900 },
+# { "name": "Bold"+suffix, "value": 700 },
+# { "name": "ExtraBold"+suffix, "value": 800 },
+# { "name": "Black"+suffix, "value": 900 },
+# ]},
+# ]
+
+
+# # STAT_AXES is used for making a STAT table with format 4 records
+# STAT_AXES = [
+# { "name": "Optical Size", "tag": "opsz" },
+# { "name": "Weight", "tag": "wght" },
+# { "name": "Italic", "tag": "ital" }
+# ]
+
+# # stat_locations is used for making a STAT table with format 4 records
+# def stat_locations(is_italic):
+# # see https://learn.microsoft.com/en-us/typography/opentype/spec/
+# # stat#axis-value-table-format-4
+# ital = 1 if is_italic else 0
+# suffix = " Italic" if is_italic else ""
+# return [
+# { "name": "Thin"+suffix, "location":{"wght":100, "ital":ital} },
+# { "name": "ExtraLight"+suffix, "location":{"wght":200, "ital":ital} },
+# { "name": "Light"+suffix, "location":{"wght":300, "ital":ital} },
+# { "name": "Regular"+suffix, "location":{"wght":400, "ital":ital},
+# "flags":FLAG_DEFAULT },
+# { "name": "Medium"+suffix, "location":{"wght":500, "ital":ital} },
+# { "name": "SemiBold"+suffix, "location":{"wght":600, "ital":ital} },
+# { "name": "Bold"+suffix, "location":{"wght":700, "ital":ital} },
+# { "name": "ExtraBold"+suffix, "location":{"wght":800, "ital":ital} },
+# { "name": "Black"+suffix, "location":{"wght":900, "ital":ital} },
+# ]
WINDOWS_ENGLISH_IDS = 3, 1, 0x409
@@ -348,31 +353,40 @@ def main():
args = argparser.parse_args()
# load font
- font = TTFont(args.input, recalcBBoxes=False, recalcTimestamp=False)
+ ttfont = TTFont(args.input, recalcBBoxes=False, recalcTimestamp=False)
+
+ # infer axis extremes
+ global OPSZ_MIN
+ global OPSZ_MAX
+ for a in ttfont["fvar"].axes:
+ if a.axisTag == "opsz":
+ OPSZ_MIN = int(a.minValue)
+ OPSZ_MAX = int(a.maxValue)
+ break
# set family name
if not args.family:
args.family = "Inter Variable"
- setFamilyName(font, args.family)
+ setFamilyName(ttfont, args.family)
# set style name
- stylename = remove_substring(getStyleName(font), "Display")
+ stylename = remove_substring(getStyleName(ttfont), "Display")
if stylename == '':
stylename = 'Regular'
- setStyleName(font, stylename)
+ setStyleName(ttfont, stylename)
# build STAT table
- gen_stat(font)
+ gen_stat(ttfont)
# fixup fvar table
- fixup_fvar(font)
+ fixup_fvar(ttfont)
# # fixup OS/2 table (set usWeightClass)
- # fixup_os2(font)
+ # fixup_os2(ttfont)
# save font
outfile = args.output or args.input
- font.save(outfile)
+ ttfont.save(outfile)
if __name__ == '__main__':
diff --git a/misc/tools/gen-var-designspace.py b/misc/tools/gen-var-designspace.py
index f75c04788..e1e8ae1d3 100644
--- a/misc/tools/gen-var-designspace.py
+++ b/misc/tools/gen-var-designspace.py
@@ -50,14 +50,21 @@ def fixup_instance(designspace, instance):
def fixup_instances(designspace):
+ USE_DISPLAY_AS_DEFAULT = False
i = len(designspace.instances)
while i > 0:
i -= 1
instance = designspace.instances[i]
- if instance.name.find('Inter Display') != -1:
- fixup_instance(designspace, instance)
+ if USE_DISPLAY_AS_DEFAULT:
+ if instance.name.find('Inter Display') != -1:
+ fixup_instance(designspace, instance)
+ else:
+ del designspace.instances[i]
else:
- del designspace.instances[i]
+ if instance.name.find('Inter Display') == -1:
+ fixup_instance(designspace, instance)
+ else:
+ del designspace.instances[i]
# def fixup_axes_defaults(designspace):
diff --git a/src/Inter-Italic.glyphspackage/fontinfo.plist b/src/Inter-Italic.glyphspackage/fontinfo.plist
index 8aea648c9..2ed1f56ef 100644
--- a/src/Inter-Italic.glyphspackage/fontinfo.plist
+++ b/src/Inter-Italic.glyphspackage/fontinfo.plist
@@ -2535,8 +2535,7 @@ name = "Axis Mappings";
value = {
opsz = {
14 = 14;
-22 = 25;
-28 = 28;
+32 = 32;
};
wght = {
100 = 100;
@@ -3674,7 +3673,7 @@ GSOffsetVertical = 10;
},
{
axesValues = (
-28,
+32,
100
);
customParameters = (
@@ -3734,12 +3733,12 @@ size = "-16";
name = "Axis Location";
value = (
{
-Axis = Weight;
-Location = 100;
+Axis = "Optical size";
+Location = 32;
},
{
-Axis = "Optical size";
-Location = 28;
+Axis = Weight;
+Location = 100;
}
);
},
@@ -3969,7 +3968,7 @@ GSOffsetVertical = 72;
},
{
axesValues = (
-28,
+32,
400
);
customParameters = (
@@ -4029,12 +4028,12 @@ size = "-16";
name = "Axis Location";
value = (
{
-Axis = Weight;
-Location = 400;
+Axis = "Optical size";
+Location = 32;
},
{
-Axis = "Optical size";
-Location = 28;
+Axis = Weight;
+Location = 400;
}
);
}
@@ -4266,7 +4265,7 @@ GSOffsetVertical = 150;
},
{
axesValues = (
-28,
+32,
900
);
customParameters = (
@@ -4326,12 +4325,12 @@ size = "-16";
name = "Axis Location";
value = (
{
-Axis = Weight;
-Location = 900;
+Axis = "Optical size";
+Location = 32;
},
{
-Axis = "Optical size";
-Location = 28;
+Axis = Weight;
+Location = 900;
}
);
},
@@ -4802,7 +4801,7 @@ weightClass = 900;
},
{
axesValues = (
-28,
+32,
100
);
customParameters = (
@@ -4858,7 +4857,7 @@ value = "Inter Display";
},
{
axesValues = (
-28,
+32,
200
);
customParameters = (
@@ -4916,7 +4915,7 @@ weightClass = 200;
},
{
axesValues = (
-28,
+32,
300
);
customParameters = (
@@ -4974,7 +4973,7 @@ weightClass = 300;
},
{
axesValues = (
-28,
+32,
400
);
customParameters = (
@@ -5029,7 +5028,7 @@ value = Italic;
},
{
axesValues = (
-28,
+32,
500
);
customParameters = (
@@ -5087,7 +5086,7 @@ weightClass = 500;
},
{
axesValues = (
-28,
+32,
600
);
customParameters = (
@@ -5145,7 +5144,7 @@ weightClass = 600;
},
{
axesValues = (
-28,
+32,
700
);
customParameters = (
@@ -5204,7 +5203,7 @@ weightClass = 700;
},
{
axesValues = (
-28,
+32,
800
);
customParameters = (
@@ -5262,7 +5261,7 @@ weightClass = 800;
},
{
axesValues = (
-28,
+32,
900
);
customParameters = (
diff --git a/src/Inter-Roman.glyphspackage/fontinfo.plist b/src/Inter-Roman.glyphspackage/fontinfo.plist
index b56312562..f166292c8 100644
--- a/src/Inter-Roman.glyphspackage/fontinfo.plist
+++ b/src/Inter-Roman.glyphspackage/fontinfo.plist
@@ -2535,8 +2535,7 @@ name = "Axis Mappings";
value = {
opsz = {
14 = 14;
-22 = 25;
-28 = 28;
+32 = 32;
};
wght = {
100 = 100;
@@ -3685,7 +3684,7 @@ GSOffsetVertical = 64;
},
{
axesValues = (
-28,
+32,
100
);
customParameters = (
@@ -3745,12 +3744,12 @@ size = "-16";
name = "Axis Location";
value = (
{
-Axis = Weight;
-Location = 100;
+Axis = "Optical size";
+Location = 32;
},
{
-Axis = "Optical size";
-Location = 28;
+Axis = Weight;
+Location = 100;
}
);
},
@@ -3975,7 +3974,7 @@ GSOffsetVertical = 100;
},
{
axesValues = (
-28,
+32,
400
);
customParameters = (
@@ -4035,12 +4034,12 @@ size = "-16";
name = "Axis Location";
value = (
{
-Axis = Weight;
-Location = 400;
+Axis = "Optical size";
+Location = 32;
},
{
-Axis = "Optical size";
-Location = 28;
+Axis = Weight;
+Location = 400;
}
);
}
@@ -4266,7 +4265,7 @@ GSOffsetVertical = 200;
},
{
axesValues = (
-28,
+32,
900
);
customParameters = (
@@ -4326,12 +4325,12 @@ size = "-16";
name = "Axis Location";
value = (
{
-Axis = Weight;
-Location = 900;
+Axis = "Optical size";
+Location = 32;
},
{
-Axis = "Optical size";
-Location = 28;
+Axis = Weight;
+Location = 900;
}
);
},
@@ -4749,7 +4748,7 @@ weightClass = 900;
},
{
axesValues = (
-28,
+32,
100
);
customParameters = (
@@ -4800,7 +4799,7 @@ weightClass = 100;
},
{
axesValues = (
-28,
+32,
200
);
customParameters = (
@@ -4852,7 +4851,7 @@ weightClass = 200;
},
{
axesValues = (
-28,
+32,
300
);
customParameters = (
@@ -4904,7 +4903,7 @@ weightClass = 300;
},
{
axesValues = (
-28,
+32,
400
);
customParameters = (
@@ -4954,7 +4953,7 @@ value = Regular;
},
{
axesValues = (
-28,
+32,
500
);
customParameters = (
@@ -5006,7 +5005,7 @@ weightClass = 500;
},
{
axesValues = (
-28,
+32,
600
);
customParameters = (
@@ -5058,7 +5057,7 @@ weightClass = 600;
},
{
axesValues = (
-28,
+32,
660
);
customParameters = (
@@ -5112,7 +5111,7 @@ weightClass = 700;
},
{
axesValues = (
-28,
+32,
800
);
customParameters = (
@@ -5164,7 +5163,7 @@ weightClass = 800;
},
{
axesValues = (
-28,
+32,
900
);
customParameters = (