日本語表示をちゃんとしたOpenFlashChart2のファイルサイズを小さくする方法
こんにちは、熊谷です。
前回OpenFlashChart2で日本語をちゃんと表示するためのパッチについて書きました。
その時にも触れましたがフォントの文字を全て埋め込むためファイルサイズがそれなりに大きくなるという欠点があります。これをどうにか解決する方法として、すぐ思いつくのは埋め込む文字を限定するという方法です。
埋め込む文字はこれとこれと決まっているのであれば、その文字のUNICODE値を調べてunicodeRangeプロパティで指定すればそれで完了です。しかし、グラフのラベルの文字列が必ずしも固定されているわけではなく、例えばユーザがラベルを選びその結果で動的に変わるという場合は、そうはいきません。
そこで、埋め込む文字をひらがなと第一水準漢字だけに、もしくは日本語全てというぐらいに範囲を指定して埋め込むことにより、ある程度ファイルサイズを小さくすることが可能になります。
ということで、早速やってみましょう。
Flex SDKの中にflash-unicode-table.xmlというXMLファイルがあります。

この中に2バイト文字のそれぞれの文字範囲があらかじめ定義されてあるので、そこから該当する範囲の値をコピーします。
ひらがなと第一水準漢字の漢字だけを埋め込みたい場合は、Japanese KanaとJapanese Kanji - Level 1のrange部分を

面倒なので、日本語全てを埋め込みたい場合はJapanese(All)のrange部分を

使用します。
こんな感じでunicodeRangeプロパティを使用して埋め込む文字を指定します。これでコンパイルするとその埋め込む文字の範囲にもよりますがそれなりに小さくなります。
ちなみに、全て埋め込んだ場合は3MBぐらいだったswfファイルは、ひらがなと第一水準漢字に限定した場合は850KBぐらいになり、日本語全てにした場合は2MBぐらいになりました。
もちろん、ラベルの文字はこれとこれとこれだけと決まっているのであれば、その文字のUNICODE値だけにすればさらにファイルサイズは小さくなります。
ファイルサイズに悩んでいる方がいましたら試してみてください。
前回OpenFlashChart2で日本語をちゃんと表示するためのパッチについて書きました。
その時にも触れましたがフォントの文字を全て埋め込むためファイルサイズがそれなりに大きくなるという欠点があります。これをどうにか解決する方法として、すぐ思いつくのは埋め込む文字を限定するという方法です。
埋め込む文字はこれとこれと決まっているのであれば、その文字のUNICODE値を調べてunicodeRangeプロパティで指定すればそれで完了です。しかし、グラフのラベルの文字列が必ずしも固定されているわけではなく、例えばユーザがラベルを選びその結果で動的に変わるという場合は、そうはいきません。
そこで、埋め込む文字をひらがなと第一水準漢字だけに、もしくは日本語全てというぐらいに範囲を指定して埋め込むことにより、ある程度ファイルサイズを小さくすることが可能になります。
ということで、早速やってみましょう。
Flex SDKの中にflash-unicode-table.xmlというXMLファイルがあります。
この中に2バイト文字のそれぞれの文字範囲があらかじめ定義されてあるので、そこから該当する範囲の値をコピーします。
ひらがなと第一水準漢字の漢字だけを埋め込みたい場合は、Japanese KanaとJapanese Kanji - Level 1のrange部分を
面倒なので、日本語全てを埋め込みたい場合はJapanese(All)のrange部分を
使用します。
- ---
XAxisLabels.as.orig 2010-06-28 17:45:47.000000000 +0900 - +++
XAxisLabels.as 2010-07-22 19:10:57.000000000 +0900 - @@
-2,6 +2,7 @@ import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; - +
import flash.text.Font; import flash.display.DisplayObject; import flash.geom.Rectangle; import elements.axis.AxisLabel; - @@
-22,9 +23,14 @@ // Ugh, ugly code so we can rotate the text: // // [Embed(systemFont='Arial', fontName='spArial', mimeType='application/x-font', unicodeRange='U+0020-U+007E')] - -
[Embed(systemFont = 'Arial', fontName = 'spArial', mimeType = 'application/x-font')] - -
- -
public static var ArialFont__:Class; - +
[Embed(source='../../ipagui.ttf', - +
fontName = 'ipagui', - +
mimeType = 'application/x-font', - +
unicodeRange = 'ここに埋め込みたい文字のUNICODE値を' - +
)] - +
- +
public static var ipagui:Class; - +
Font.registerFont(ipagui); function XAxisLabels( json:Object ) { - @@
-223,7 +229,7 @@ if( label_style.rotate != 0 ) { // so we can rotate the text - -
fmt.font = "spArial"; - +
fmt.font = "ipagui"; title.embedFonts = true; } else
こんな感じでunicodeRangeプロパティを使用して埋め込む文字を指定します。これでコンパイルするとその埋め込む文字の範囲にもよりますがそれなりに小さくなります。
ちなみに、全て埋め込んだ場合は3MBぐらいだったswfファイルは、ひらがなと第一水準漢字に限定した場合は850KBぐらいになり、日本語全てにした場合は2MBぐらいになりました。
もちろん、ラベルの文字はこれとこれとこれだけと決まっているのであれば、その文字のUNICODE値だけにすればさらにファイルサイズは小さくなります。
ファイルサイズに悩んでいる方がいましたら試してみてください。
コメントフォーム
トラックバック
最近の記事
- もうすぐ健康診断があるんだ・・・ [2010年09月02日 : 阿部恵]
- Photoshopで壁紙を作りながら、基本的な使い方を覚える [2010年09月01日 : 鴨田健次]
- はじめての共同作業 Canvas編 (node.js + websocket) [2010年09月01日 : 中川善樹]
- 「PHP×Flex(後編)」PHPテクニカルセミナー(無料)第4弾の募集を開始しました!! [2010年08月26日 : 和田記光]
- 【HTML5】Canvasでお絵かきしてみた(前編) [2010年08月25日 : 橋本章史]
- MacにgroongaのMySQL用ストレージエンジン [2010年08月23日 : 笹亀弘]
- Appleのサイトで見たiPhone4をFireworksで描いてみました-1/2 [2010年08月19日 : 和田記光]
- iPad版の会社紹介を作ってみました [2010年08月19日 : 小林有佳]
- iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (2) [2010年08月19日 : 亀本大地]
- symfonyセミナー動画無料公開! [2010年08月13日 : 岡本雄樹]



最近のコメント