必要なグリフだけを残してフォントの容量を削減
日本語フォントは容量が大きいので、スマートフォンアプリやウェブアプリではあまり気軽に使用することができません。
そこで、一部の文字だけを抽出したフォントを作成して、容量を削減します。
FontForge
FontForgeはGUIでフォントを編集できるクロスプラットフォームのツールです。
当然、選択した文字(グリフ)を削除する機能もあります。しかし、さすがに手作業でやるのは面倒くさい。
そこで、FontForgeのスクリプト機能を使用します。
http://fontforge.org/ja/scripting.html
なんと!日本語化されたドキュメントがあります!
使用する文字の準備
まず、使用する文字を列挙したファイルを作成します。今回はused_letters.txt
というファイル名でUTF-8にして保存しました。
さっそくFontForgeスクリプトを実行したいところですが、FontForgeスクリプトの機能は貧弱です。UTF-8のデコードができません。
そこで、簡単なスクリプトを書いてFontForgeスクリプト自身を生成します。
#conding: utf-8
$stdout = File.open("./select_used.pe", "w")
print "codepoints = "
p File.read("used_letters.txt", encoding:"utf-8").codepoints
print <<EOM
i = 0
len = SizeOf(codepoints)
while (i < len)
SelectMore(codepoints[i], codepoints[i])
++i
endloop
EOM
以下のようなスクリプトが生成されます。
codepoints = [10, 9, 34, 75, 111, 114, 101, 97, 110, 3]
i = 0
len = SizeOf(codepoints)
while (i < len)
SelectMore(codepoints[i], codepoints[i]) // グリフを追加選択
++i
endloop
SelectInvert() // 選択範囲を反転
Clear() // 選択中のグリフを削除
結果
私のプロジェクトでは、20MBあったフォントを120KB程度まで削減することができました。
Author And Source
この問題について(必要なグリフだけを残してフォントの容量を削減), 我々は、より多くの情報をここで見つけました https://qiita.com/YosukeM/items/086f902c1f3748fca083著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .