Modest02 freetype2 on fx-3.6 win32

1,535 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,535
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Modest02 freetype2 on fx-3.6 win32

  1. 1. 2010/2/20 Mozilla 勉 強会@大阪 freetype2 on fx-3.6 win32 by ABE Hiroki aka h ATrayflood
  2. 2. 2010/2/20 Mozilla 勉 強会@大阪 フォント描画に freetype2 を使ってみた by ABE Hiroki aka h ATrayflood
  3. 3. 2010/2/20 Mozilla 勉 強会@大阪 試作品配布中↓ http://rayflood.org/mozilla/ パッチもあるよ! by ABE Hiroki aka h ATrayflood
  4. 4. 2010/2/20 Mozilla 勉 強会@大阪 効果がよくわかるページ ・Mozilla Japan 全般 ・ニコニコ動画 ・VLゴシック、梅フォントなど by ABE Hiroki aka h ATrayflood
  5. 5. 2010/2/20 Mozilla 勉 強会@大阪 ビルドする ・configure/make ・Direct X by ABE Hiroki aka h ATrayflood
  6. 6. 2010/2/20 Mozilla 勉 強会@大阪 configure/make ・--enable-tree-freetype ・ソース/Makefileの修正 ・libpixman DLL化 by ABE Hiroki aka h ATrayflood
  7. 7. 2010/2/20 Mozilla 勉 強会@大阪 Direct X ・モジュールの依存関係  thebe→cairo→freetype2+DX  widget→DX(freetype2有効時) by ABE Hiroki aka h ATrayflood
  8. 8. 2010/2/20 Mozilla 勉 強会@大阪 Direct X ・もともとWinCE向け実装  →マクロが非互換(次ページ) ・ddraw.lib(=DX SDK)が必要 by ABE Hiroki aka h ATrayflood
  9. 9. 2010/2/20 Mozilla 勉 強会@大阪 IDirectDrawSurface::Lock DX 9.0 CE 6.0 DX 9.0 CE 6.0 DDLOCK_WAIT DDLOCK_WAITNOTBUSY DDLOCK_DISCARDCONTENTSDDLOCK_DISCARD IDirectDrawSurface::Blt DX 9.0 CE 6.0 DX 9.0 CE 6.0 DDBLT_WAITDDBLT_WAITNOTBUSY 多分合ってるはず… by ABE Hiroki aka h ATrayflood
  10. 10. 2010/2/20 Mozilla 勉 強会@大阪 独自に手を加えた箇所 ・太字処理 ・メイリオ斜体 by ABE Hiroki aka h ATrayflood
  11. 11. 2010/2/20 Mozilla 勉 強会@大阪 太字処理 ・フォントそのものに  boldがないと太字にならない ・斜体も同様だがこっちは  字体を変形させて表示してる by ABE Hiroki aka h ATrayflood
  12. 12. 2010/2/20 Mozilla 勉 強会@大阪 しかし… ・freetype2自体には  太字処理が存在する →フォントにboldがない場合は  freetype2に太字させればいい by ABE Hiroki aka h ATrayflood
  13. 13. 2010/2/20 Mozilla 勉 強会@大阪 ・cairo-types-private.h:117 struct _cairo_font_options { cairo_antialias_t antialias; cairo_font_slant_t font_slant; cairo_font_weight_t font_weight; cairo_subpixel_order_t subpixel_order; cairo_hint_style_t hint_style; cairo_hint_metrics_t hint_metrics; }; by ABE Hiroki aka h ATrayflood
  14. 14. 2010/2/20 Mozilla 勉 強会@大阪 ・gfxFT2Fonts.cpp:866 PRBool needsEmbolden = (!aFontEntry->IsBold() && (aStyle->weight > FONT_WEIGHT_NORMAL)); if (needsEmbolden) { const double width = 1.03125; const double widthByStyle = (aStyle->size + 1.0) / aStyle->size; cairo_matrix_t identityStyle; cairo_matrix_init_scale(&identityStyle , (width > widthByStyle) ? width : widthByStyle, 1.0); cairo_matrix_multiply(&identityMatrix, &identityMatrix , &identityStyle); cairo_font_options_set_font_weight(fontOptions , CAIRO_FONT_WEIGHT_BOLD); } by ABE Hiroki aka h ATrayflood
  15. 15. 2010/2/20 Mozilla 勉 強会@大阪 ・cairo-ft-font.c:1567 // ついでにビットマップフォント禁止 scaled_font->ft_options.load_flags |= FT_LOAD_NO_BITMAP; if (options->font_weight == CAIRO_FONT_WEIGHT_BOLD) { scaled_font->ft_options.extra_flags |= CAIRO_FT_OPTIONS_EMBOLDEN; } by ABE Hiroki aka h ATrayflood
  16. 16. 2010/2/20 Mozilla 勉 強会@大阪 メイリオ斜体 ・メイリオにはitalicが含まれてる ・しかし、実際に斜体になってるのは  英数のみ。日本語は斜体じゃない  →メイリオフォントで斜体を表示 by ABE Hiroki aka h ATrayflood
  17. 17. 2010/2/20 Mozilla 勉 強会@大阪 つまり… ・アプリはitalicのつもりでも  実際には斜体じゃない  ものが描画される by ABE Hiroki aka h ATrayflood
  18. 18. 2010/2/20 Mozilla 勉 強会@大阪 しかし… ・italicが含まれてない場合は  変形させて斜体に見せてくれるので ・メイリオのitalicを読み込まなければ  自動的に斜体に変形してくれる by ABE Hiroki aka h ATrayflood
  19. 19. 2010/2/20 Mozilla 勉 強会@大阪 ・gfxFT2Fonts.cpp:175 if (!strcmp("Meiryo", aFace->family_name) && (aFace->style_flags & FT_STYLE_FLAG_ITALIC)) { FT_Done_Face(aFace); return nsnull; } by ABE Hiroki aka h ATrayflood
  20. 20. 2010/2/20 Mozilla 勉 強会@大阪 性能測定 ・起動速度 ・メモリ消費量 ・描画速度 ・Peacekeeperby ABE Hiroki aka h ATrayflood
  21. 21. 2010/2/20 Mozilla 勉 強会@大阪 マシンスペック ・FMV LOOX R A70N ・Core 2 Duo SL7100 1.2GHz ・メモリ4GB(実質3.25GB) ・Windows XP Professional SP3 by ABE Hiroki aka h ATrayflood
  22. 22. 2010/2/20 Mozilla 勉 強会@大阪 ビルドオプション ・通常 プロファイル最適化(PGO)あり --enable-jemalloc --disable-libxul --enable-optimize=-O2 -arch:SSE2 -GT ・freetype プロファイル最適化(PGO)あり --enable-jemalloc --disable-libxul --enable-optimize=-O2 -arch:SSE2 -GT --enable-tree-freetype by ABE Hiroki aka h ATrayflood
  23. 23. 2010/2/20 Mozilla 勉 強会@大阪 起動速度 試行回数 1 2 3 4 通常 0m9.329s 0m1.924s0m2.048s0m2.001s freetype 0m14.774s0m4.986s0m4.922s0m5.001s フォント読み込みは時間がかかる… 測定方法は次ページ by ABE Hiroki aka h ATrayflood
  24. 24. 2010/2/20 Mozilla 勉 強会@大阪 起動時に以下のスクリプトを実行するアドオンを仕込み cygwinのtimeコマンドのreal値を測定 window.addEventListener("load", function(){ window.removeEventListener("load" , arguments.callee, true); window.setTimeout(goQuitApplication, 1000); }, true) by ABE Hiroki aka h ATrayflood
  25. 25. 2010/2/20 Mozilla 勉 強会@大阪 http://nontroppo.org/timer/を20タブ開く メモリ消費量起動直後表示直後閉じた後 通常 47,880kb 126,840kb65,736kb freetype 90,648kb 152,268kb97,956kb フォント読み込みにも相当メモリを喰う… ページ当たりの消費量は大して変わらない by ABE Hiroki aka h ATrayflood
  26. 26. 2010/2/20 Mozilla 勉 強会@大阪 http://nontroppo.org/timer/のDoc load 試行回数 1 2 3 4 通常 506ms418ms405ms411ms freetype 497ms430ms417ms411ms 描画速度は遅くはない by ABE Hiroki aka h ATrayflood
  27. 27. 2010/2/20 Mozilla 勉 強会@大阪 Peacekeeperの総合スコア 試行回数 1 2 3 4 通常 1835180018211818 freetype 1829180018091808 ブラウザ全体のベンチマークも遅くはない by ABE Hiroki aka h ATrayflood
  28. 28. 2010/2/20 Mozilla 勉 強会@大阪 Peacekeeperの詳細スコア 項目 Rendering Social networking Complex graphics 通常 1696 2028 3114 freetype1704 1949 3196 項目 Data DOM operations Text parsing 通常 3096 1287 1522 freetype3060 1290 1563 詳細で見ても同様。有意な差はない by ABE Hiroki aka h ATrayflood
  29. 29. 2010/2/20 Mozilla 勉 強会@大阪 他ブラウザとの比較 ・描画方法 ・フォント名指定 by ABE Hiroki aka h ATrayflood
  30. 30. 2010/2/20 Mozilla 勉 強会@大阪 描画方法 チェック用ページ IE6 Win fx-3.0 Win? IE7 Win fx-3.5 Win? IE8 Win fx-3.6 Win? Safari4 独自? fx-3.6 +freetype2 freetype2 chrome4Win Opera10 Win Win=Windowsネイティブ Win?=アウトラインを使う場合がある by ABE Hiroki aka h ATrayflood
  31. 31. 2010/2/20 Mozilla 勉 強会@大阪 フォント名指定 チェック用ページ IE6 日/英 fx-3.0 日/英 IE7 日/英 fx-3.5 日/英 IE8 日/英 fx-3.6 日/英 Safari4 日/英 fx-3.6 +freetype2 英のみ chrome4日のみ Opera10 日のみ ※日本語英語両方の名前を持つ フォントが対象 by ABE Hiroki aka h ATrayflood
  32. 32. 2010/2/20 Mozilla 勉 強会@大阪 今後の課題 ・フォント日本語名 ・woffフォント by ABE Hiroki aka h ATrayflood
  33. 33. 2010/2/20 Mozilla 勉 強会@大阪 ・リンク集 IDirectDrawSurface::Lock DirectX 9.0 http://msdn.microsoft.com/ja-jp/library/cc355921.aspx IDirectDrawSurface::Lock Windows Embedded CE 6.0 http://msdn.microsoft.com/en-us/library/ee491248.aspx IDirectDrawSurface::Blt DirectX 9.0 http://msdn.microsoft.com/ja-jp/library/cc355898.aspx IDirectDrawSurface::Blt Windows Embedded CE 6.0 http://msdn.microsoft.com/en-us/library/ee491237.aspx メイリオフォントで斜体を表示 http://laputa.cs.shinshu-u.ac.jp/~nakayama/others/meiryo.htm Peacekeeper The Browser Benchmark http://service.futuremark.com/peacekeeper/index.action 描画方法 チェック用ページ http://rayflood.org/diary-temp/fontrender.html フォント名指定 チェック用ページ http://rayflood.org/diary-temp/aa-pgothic.html by ABE Hiroki aka h ATrayflood

×