非等幅フォントのBMFont出力を等幅に変換するスクリプト
ということらしい。のでコレをpythonで処理。
BMFontで出力した.fntファイルのパスを引数にして実行。
出力は同階層に.fnt.outで出力される。
# -*- coding: utf-8 -*- import sys import re if __name__ == '__main__': font_file = sys.argv[1] print 'target_file : ', font_file font_data = open(font_file, mode='r') output_data = open(font_file + '.out', mode='w') fix_width = 66 for data in font_data.readlines(): if 'xoffset' in data and 'xadvance' in data: ofs, adv = re.findall('xoffset=(.?\d+).*xadvance=(.?\d+)', data)[0] if fix_width > int(adv): data = data.replace('xoffset=' + ofs, 'xoffset=' + str((int(fix_width) - int(adv)) / 2 + int(ofs))) data = data.replace('xadvance=' + adv, 'xadvance=' + str(fix_width)) output_data.writelines(data) font_data.close() output_data.close()
出力されたものを
で使用し、Unityのカスタムフォントとして等幅表示されることを確認。