RE 404

ライフハック


テーマ:

”考える”、”考えてく”と続けてきたけど、とりあえずこれで〆。サブセット化で色々方法を模索したけどまずfontの知識が浅い自分には当分無理そうだと感じました。思った以上に複雑で、膨大な文字のグリフを操作するのは相当めんどクサイです。そんな感じでソースを眺めていると、どうやらfontTools2.5にはsubset.py成るものがある模様。使ってみると素敵な予感。結果も求めている形そのもの。そりゃGoogleさん謹製だもの。

subset.py

元々はコマンドプロンプトで扱う用のクラス。

$ pyftsubset test.ttf --output-file=res.ttf --text=いろはにほへと
>>

のように使う。これで”いろはにほへと”(unicode化してある必要がある)をサブセット化したfontを書き出してくれる仕組み。これを組み込めばグリフの埋め込み周りを改善してくれるに違いない!と早速インポート。

インポートしてpythonで使ってみる

どうやらmain()が初期関数なのでそれを実行するようにする。引数はsysからのargを取得してるので、書き方はコンソールに準拠。

# coding: utf-8
import os.path
import fontTools
from fontTools.subset import *

fontTools.subset.main([ 'test.ttf', '--output-file=res.ttf', '--text=いろはにほへと']);

print os.path.isfile('res.ttf')

これを実行してみると...

$ python test.py
>> true

うまくできたっぽい!fontファイルの方もしっかりサブセットされてます。近くに答えがあったようで...。

ということでclass化してみる。

createWebfont.py

# coding: utf-8
import fontTools
from fontTools.subset import *

class subsetWebfont:

def __init__( self, input, output, txt ):

self.input = input;
self.output = output;
self.text = unicode(txt,'utf-8');

self.setting();
#end

def setting( self ):

# 繰り返し処理、その他の設定などはここで
self.createFont();
#end

def createFont( self ):

fontTools.subset.main([self.input + '', "--output-file=" + self.output, "--text=" + self.text, "--flavor=woff"]);

# 以降呼び出し処理など
#end

subsetWebfont( 'test.ttf', 'subset.woff', 'abcd' );

スッキリしました。速度も1.5~2倍は上がりました。あとはサーバ次第って感じです。

一応終了。

これで私用物としては満足のいくものになりました。(ここまでに作ったものが意味なくなりましたが汗)あと作るべきはweightの拡張だったりフォントの複数使用だったり色々ありますが、とりあえず目的は達成したので割合、ひとまず終了。そのうち比較してみようと思います。べんきょうになりました。ただ、フォント屋さん中の人にはなりたくないです・・・。

AD
いいね!した人  |  コメント(0)

[PR]気になるキーワード