2010/07/22
カテゴリ : Tech
日本語表示をちゃんとした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値だけにすればさらにファイルサイズは小さくなります。
ファイルサイズに悩んでいる方がいましたら試してみてください。
トラックバックURI
最近の記事
システム開発エンジニア募集! [2012年02月03日 : 小林有佳]
OpenVPNで細々便利な設定 [2012年01月31日 : 門脇優児]
【iOS】Viewの開発・デバッグに役立つ色々 [2012年01月23日 : 中川善樹]
PHPDocumentorの利用方法まとめ [2012年01月19日 : 笹亀弘]
Google Chart Toolsを使ってサイトマップを描こう! [2011年12月21日 : 志田仁美]
stumpwm設定v2 [2011年12月19日 : 門脇優児]
Mashup Awards 7の授賞式が行われました [2011年12月16日 : 中川善樹]
社員旅行に行きました [2011年12月12日 : 大橋寛子]
iCloud風のアイコンを作成する(Fireworks) [2011年12月07日 : 和田記光]
iScroll4でネイティブに近いスマホ向けHTMLページを作成する [2011年12月02日 : 松田惇]













コメントフォーム