2 # -*- coding: utf-8 -*-
5 # Author: mshio <mshio@users.osdn.me>
10 このスクリプトは、指定された漢字のうち、フォントファイルに含まれて
11 いない漢字を表示し、最後にその字数を表示するものです。
16 最初の引数には、検査対象のフォントファイル(TTF など)を指定します。
17 次の引数には、検査したい漢字を書き連ねたテキストファイル(便宜上これを
18 漢字ファイルと呼びます)のパスを指定します。
20 漢字ファイルは utf-8 で書かれている必要があります。
21 なお、漢字ファイルには改行を含めることができます。また、`#'から始まる
22 行はコメントとして扱われ、読み飛ばされます。
24 このスクリプトは、渡された漢字ファイルを読み取り、そのリストの中から、
25 フォントファイルに含まれていない漢字を抽出して出力します。
29 このスクリプトを実行するには、FontForge が必要です。
36 from fontparser import filter_glyphs
37 from listprinter import SimpleListPrinter
39 def kanji_list(file_path):
42 s = unicode(line.rstrip('\r\n'), 'utf-8')
44 sys.exit('[ERROR] %s' % line)
48 with open(file_path, 'r') as file:
50 if line.startswith('#'):
52 for c in convert(line):
57 parser = argparse.ArgumentParser()
58 parser.add_argument('font_file', help='path of a font file')
59 parser.add_argument('kanji_file', help='path of a kanji file')
61 return parser.parse_args()
63 if __name__ == '__main__':
65 kanjis = kanji_list(args.kanji_file)
68 code = next(iter(filter(lambda c: char.unicode == c, kanjis)), False)
72 filter_glyphs(args.font_file, remove)
74 p = SimpleListPrinter(delimiter=0x3001)
77 print "%d char(s)" % len(kanjis)