godot/misc/scripts/make_bmfhdr.py

68 lines
1.4 KiB
Python

import sys
if (len(sys.argv) != 2):
print("Pass me a .fnt argument!")
f = open(sys.argv[1], "rb")
name = sys.argv[1].lower().replace(".fnt", "")
l = f.readline()
font_height = 0
font_ascent = 0
font_charcount = 0
font_chars = []
font_cc = 0
while(l != ""):
fs = l.strip().find(" ")
if (fs == -1):
l = f.readline()
continue
t = l[0:fs]
dv = l[fs + 1:].split(" ")
d = {}
for x in dv:
if (x.find("=") == -1):
continue
s = x.split("=")
d[s[0]] = s[1]
if (t == "common"):
font_height = d["lineHeight"]
font_ascent = d["base"]
if (t == "char"):
font_chars.append(d["id"])
font_chars.append(d["x"])
font_chars.append(d["y"])
font_chars.append(d["width"])
font_chars.append(d["height"])
font_chars.append(d["xoffset"])
font_chars.append(d["yoffset"])
font_chars.append(d["xadvance"])
font_cc += 1
l = f.readline()
print("static const int _bi_font_" + name + "_height=" + str(font_height) + ";")
print("static const int _bi_font_" + name + "_ascent=" + str(font_ascent) + ";")
print("static const int _bi_font_" + name + "_charcount=" + str(font_cc) + ";")
cstr = "static const int _bi_font_" + name + "_characters={"
for i in range(len(font_chars)):
c = font_chars[i]
if (i > 0):
cstr += ", "
cstr += c
cstr += ("};")
print(cstr)