雑文発散

«前の日記(2015-07-04) 最新 次の日記(2015-07-06)» 編集
過去の日記

2015-07-05 [長年日記]

[Pebble] Pebble 日本語言語パックの自作ができるという記事を見つけて試しているが、まだうまくいかない

Pebble の日本語言語パックといえば、そのままの名前がついたサイトで公開されているものがメジャーで、オレも利用させて貰っている。

新しいバージョンが出てるかな?と思って検索をしたときに、別バージョンというか、自分で言語パックを作っているという記事を見つけた。

これらを見て、Mac 上でちょっと試しているのだけど、フォント生成のところでエラーが出てしまっている。

% python /usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py pfo --extended 21 mplus-TESTFLIGHT-060/mplus-1c-regular.ttf mplus_21.pfo
Traceback (most recent call last):
  File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 367, in <module>
    main()
  File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 363, in main
    process_cmd_line_args()
  File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 355, in process_cmd_line_args
    args.func(args)
  File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 300, in cmd_pfo
    f.convert_to_pfo(args.output_pfo)
  File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 287, in convert_to_pfo
    self.build_tables()
  File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 261, in build_tables
    build_hash_table(hash_bucket_sizes)
  File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 188, in build_hash_table
    self.hash_table[i] = (struct.pack('<BBH', i, bucket_size, acc))
struct.error: ushort format requires 0 <= number <= USHRT_MAX

どうやら build_tables() 内で使っているカウンタが ushort の範囲を超えちゃっているみたいなんだけど、じゃあ、それからどうするってのにまだ辿りつけていない。--filter なり --list なりを使って文字の絞り込みをするしかないのかな。

本日のツッコミ(全2件) [ツッコミを入れる]
あおしま (2015-07-06 15:44)

そうです。私もmplusを使ってみたとき同様のエラーが出ました。おそらくはunicodeの0x10ffff以上に外字のようなコード外の文字があって、そこが例外となってエラーを出しているのだと考えられます。listを作って制限すると、エラーは出なくなります。utf-16の0xffffまでの範囲を格納できるので、とりあえず1から65535までのリストでエラーを回避しておいて、そこから削っていけばいいと思います。(その中で8000文字強ぐらい有効な文字があると思います。)

すずき (2015-07-07 07:27)

情報ありがとうございますー。後ほど試してみます!