62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
#! /usr/bin/python
|
|
|
|
# usage:
|
|
# python correct-ttf-font-family-name.py filename.ttf
|
|
|
|
import sys
|
|
|
|
from fontTools.ttLib import TTFont
|
|
|
|
|
|
def main():
|
|
filename = sys.argv[1]
|
|
|
|
font = TTFont(filename, recalcBBoxes=False)
|
|
fontName = font["name"]
|
|
|
|
originalFontUniqueID = fontName.getName(3, 1, 0, 0).toUnicode()
|
|
originalFontFullname = fontName.getName(4, 1, 0, 0).toUnicode()
|
|
originalFontPreferredStyle = fontName.getName(17, 1, 0, 0).toUnicode()
|
|
|
|
for entry in fontName.names:
|
|
nameID = entry.nameID
|
|
platformID = entry.platformID
|
|
platEncID = entry.platEncID
|
|
langID = entry.langID
|
|
|
|
if langID in [1028, 1041, 2052, 3076]:
|
|
string = (
|
|
entry.toUnicode()
|
|
.replace(" CL", " CL Nerd Font")
|
|
.replace(" TC", " TC Nerd Font")
|
|
.replace(" J", " J Nerd Font")
|
|
.replace(" SC", " SC Nerd Font")
|
|
.replace(" HC", " HC Nerd Font")
|
|
)
|
|
fontName.setName(string, nameID, platformID, platEncID, langID)
|
|
|
|
elif nameID in [1, 16]:
|
|
string = originalFontUniqueID.replace(
|
|
f" {originalFontPreferredStyle}", " Nerd Font"
|
|
)
|
|
fontName.setName(string, nameID, platformID, platEncID, langID)
|
|
|
|
elif nameID == 3:
|
|
string = originalFontUniqueID.replace(
|
|
f" {originalFontPreferredStyle}",
|
|
f" Nerd Font {originalFontPreferredStyle}",
|
|
)
|
|
fontName.setName(string, nameID, platformID, platEncID, langID)
|
|
|
|
elif nameID == 6:
|
|
fontName.setName(
|
|
originalFontFullname, nameID, platformID, platEncID, langID
|
|
)
|
|
|
|
font.save(filename)
|
|
font.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|