-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathff_generate.py
49 lines (39 loc) · 1.48 KB
/
ff_generate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# -*- coding: utf-8 -*-
u"""
ff_generate.py フォント生成スクリプト
使い方: fontforge -script ff_generate.py source output
"""
from __future__ import print_function
import sys
import datetime
import codecs
import fontforge
def font_version(date):
# type: (date) -> str
u"与えられた日付に生成されるフォントのバージョンを返す"
year = date.year - 2000
day_of_year = (date - datetime.date(date.year, 1, 1)).days
return '%s.%s' % (year, day_of_year)
def generate_font(source_path, dest_path):
# type: (str, str) -> None
u"フォントを生成する"
font = fontforge.open(source_path)
version = font_version(datetime.date.today())
font.version = version
font.sfnt_names += (('Japanese', 'Version', 'Version ' + version),)
for (language, license_file) in [('English (US)', 'LICENSE'), ('Japanese', 'LICENSE.ja'), ]:
try:
license_text = codecs.open(
license_file, 'r', 'utf-8').read().encode('utf-8')
font.sfnt_names += ((language, 'License', license_text),)
except IOError:
print('cannot open %s' % license_file)
font.hasvmetrics = True
font.generate(dest_path, '', ('short-post', 'opentype'))
if __name__ == '__main__':
if len(sys.argv) != 3:
print("Usage: fontforge -script ff_generate.py SOURCE_FILE OUTPUT_FILE")
quit()
SOURCE_PATH = sys.argv[1]
DEST_PATH = sys.argv[2]
generate_font(SOURCE_PATH, DEST_PATH)