1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- from fontTools.otlLib.builder import buildStatTable, _addName
- from fontTools.ttLib import TTFont
- import sys
- AXES = [
- dict(
- tag="wdth",
- name="Width",
- ordering=0,
- values=[
- dict(value=75, name="Condensed"),
- dict(value=100, name="Normal", flags=0x2),
- ],
- ),
- dict(
- tag="wght",
- name="Weight",
- ordering=1,
- values=[
- dict(value=100, name="Thin"),
- dict(value=200, name="ExtraLight"),
- dict(value=300, name="Light"),
- dict(value=400, name="Regular", flags=0x2, linkedValue=700),
- dict(value=500, name="Medium"),
- dict(value=600, name="SemiBold"),
- dict(value=700, name="Bold"),
- dict(value=800, name="ExtraBold"),
- dict(value=900, name="Black"),
- ],
- ),
- dict(
- tag="ital",
- name="Italic",
- ordering=2,
- values=[
- dict(value=0, name="Roman", flags=0x2),
- dict(value=1, name="Italic"),
- ],
- ),
- ]
- def update_fvar(ttfont):
- fvar = ttfont['fvar']
- nametable = ttfont['name']
- family_name = nametable.getName(16, 3, 1, 1033) or nametable.getName(1, 3, 1, 1033)
- family_name = family_name.toUnicode().replace(" ", "")
- nametable.setName(family_name, 25, 3, 1, 1033)
- for instance in fvar.instances:
- instance_style = nametable.getName(instance.subfamilyNameID, 3, 1, 1033).toUnicode()
- ps_name = f"{family_name}-{instance_style.replace(' ', '')}"
- instance.postscriptNameID = _addName(nametable, ps_name, 256)
- def main():
- filepath = sys.argv[1]
- tt = TTFont(filepath)
- buildStatTable(tt, AXES)
- update_fvar(tt)
- tt.save(filepath)
- print(f"Added STAT table to {filepath}")
- if __name__ == "__main__":
- main()
|