Skip to content

Instantly share code, notes, and snippets.

@lasconic
Created July 13, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lasconic/712f15ff9fddbd5edb7b to your computer and use it in GitHub Desktop.
Save lasconic/712f15ff9fddbd5edb7b to your computer and use it in GitHub Desktop.
reorder musescore font
import fontforge #Load the module
import json
import shutil
import os
source = "mscore"
#source = "MScoreText"
fontFile = source + ".sfd"
tmpFile = source + "tmp.sfd"
outFile = "out/" + source + ".ttf"
with open('mscore.json') as data_file:
mscoreData = json.load(data_file)
with open('bravura.json') as data_file:
smuflData = json.load(data_file)
print "open font"
shutil.copy2(fontFile, tmpFile)
# open font file
amb=fontforge.open(fontFile)
# open tmp file
ambTmp=fontforge.open(tmpFile)
pastedCodePoint = []
pastedDict = {}
for mscoreGlyph in mscoreData.keys():
mscoreCodePointStr = mscoreData[mscoreGlyph]["codepoint"].upper()
mscoreCodePoint = int(mscoreCodePointStr.replace("U+", ""), 16)
if mscoreGlyph in smuflData:
smuflCodePointStr = smuflData[mscoreGlyph]["codepoint"].upper()
smuflCodePoint = int(smuflCodePointStr.replace("U+", ""), 16)
# delete from tmp file if not already pasted
if not mscoreCodePoint in pastedCodePoint:
ambTmp.selection.select(mscoreCodePoint)
ambTmp.cut()
# copy in original
amb.selection.select(mscoreCodePoint)
amb.copy()
# paste in new font
ambTmp.selection.select(smuflCodePoint)
ambTmp.paste()
pastedCodePoint.append(smuflCodePoint)
pastedDict[mscoreGlyph] = smuflData[mscoreGlyph]
else:
print "%s not found in SMuFL" % mscoreGlyph
ambTmp.generate(outFile)
ambTmp.generate("out/" + source + ".otf")
ambTmp.save("out/" + source + ".sfd")
ambTmp.close()
amb.close()
os.remove(tmpFile)
if (source == "mscore"):
jsonGlyphs = json.dumps(pastedDict, sort_keys=True, indent=4)
f = open("out/glyphnames.json","w") #opens file with name of "test.txt"
f.write(jsonGlyphs)
f.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment