Jsでクライアントマシンのフォント一覧情報を得るTIP
by kuippa on 2月.10, 2012, under as3, Flex
2012年2月現在、Windowsかなにかのセキュリティパッチのおかげで使えなくなった
dlgHelper [DHTML Editing Control](.net Component+javascrip)
clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b の代わりに、同じような機能をFlex-swfで提供するものを作りました。Javascriptでユーザーのマシンのフォント情報を取得することができます。
当方は帳票-印刷系でフォントを選択させるときなどに使います。
フォント情報を取得できればHTMLでcssなどをユーザーのマシンのフォントにあわせて変更などもできますのでご活用ください。
github.com/kuippa/FlexFontsdlgHelper
上記 Githubから取得できます。ソースコードも公開しています。
Flex SDK4.6でコンパイルしたフラッシュを、Javascriptで呼び出してつかっています。
サンプルは動作させるマシンのセキュリティ次第ではフラッシュのセキュリティでfile:// 呼び出しでは動かないかもしれません。その場合は、localhostやドメイン上に配置して動作をみてください。
サンプルHtmlのparam FlashVarsでviewmode=1にしてやると、Flash上のFontまわりの動作確認をすることもできます。
すべてのデバイスフォントを取得するようにしています。
JsとAs両方で監視しあうタイマーで動くので呼び込みに少し間をもたせています。
すこし読み込みがもっさりしていますが、ユーザートリガーならこんな作りにする必要もありませんし、ユーザー環境がもう少し想定できるのであれば、デバイスに読み込みにいっているのでタイマースパンをながめにとっていますが、これを短くすることもできます。
dlgHelperが使えなくて困ったのでちょっと作っただけなので、再び手を入れることはないかもしれません。
ライセンスはNYSL(煮るなり焼くなり好きにしろライセンス)です。
等間隔割付などのフォントまわりのクラスもつけておきました。
この辺の日本語とフォント挙動はActionScriptものすごく怪しいです。
4.6になって、日本語ホント/マルチデバイスフォントの挙動が4.0の時と比べてもおかしくなったようにおもいます。割り当てをSift-jisにすれば動くかなとかいろいろ試しましたがだめでした。困ったね。
諦めてJavascript+Canvasあたりで日本語フォント系なんとかできないか考えてみます。
2010年ごろに苦悶した
Flexディバイスフォントの記事
iteahelper.com/blog/2010/08/08/flex%e3%83%87%e3%82%a3%e3%83%90%e3%82%a4%e3%82%b9%e3%83%95%e3%82%a9%e3%83%b3%e3%83%88/

