フォントの動的変更(swf10)

swf10限定の動作サンプルです。swf9だと一部のフォントがうまく反映されませんでした。swf10でも完璧じゃないですけど。。。。。ちなみにActionscript使ってます。

サンプルは、PC上のフォントリストを取得、その中から選んだフォントに動的に変更します。左がフォントリスト、右がフォントを適用した画面上の<text>コンポーネント。フォントリストでもサンプル的に表示できるようにしています。

フォントを埋め込んでるのじゃないので、PCによってフォントリストの中身は変わってきます。

この内容を表示するためには Adobe Flash Plugin が必要です。
(OpenLaszlo4.6.1/swf10)

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee" fontsize="25">
<!-- swf10限定 -->
<dataset name="font_ds"/>
<passthrough>
  import flash.text.Font;
  import flash.display.Sprite;
  import flash.text.*;
</passthrough>
<handler name="oninit"><![CDATA[
  var allFonts = flash.text.Font.enumerateFonts(true);
  allFonts.sortOn("fontName", Array.CASEINSENSITIVE);
  var dp = font_ds.getPointer();
  for(var i=0;i<allFonts.length;i++){
    var fn = allFonts[i].fontName;
    dp.addNode('fn',fn,"");
  }
]]></handler>
<attribute name="FONT" type="string" value=""/>
<class name="ftext" font="${canvas.FONT}" extends="text"/> 
<simplelayout axis="x" spacing="30"/>
<view width="300" height="300" clip="true" bgcolor="white">
  <vbox datapath="font_ds:/">
    <text datapath="fn/text()" font="${this.text}" width="${parent.parent.width}" resize="false">
      <handler name="onmouseover">
        this.setAttribute('bgcolor',0xdddddd);
        canvas.setAttribute('FONT',this.text);
      </handler>
      <handler name="onmouseout">
        this.setAttribute('bgcolor',0xffffff);
      </handler>
    </text>
  </vbox>
  <scrollbar visible="${this.scrollable}">
    <handler name="onmousewheeldelta" reference="lz.Keys" args="d">
          this.step(-d);
    </handler>
  </scrollbar>
</view>
<view height="300" clip="true" bgcolor="white">
  <vbox spacing="5">
    <ftext>あいうえお</ftext>
    <ftext>日本語漢字</ftext>
    <ftext>アイウエオ</ftext>
    <ftext>ABCDEF123456</ftext>
  </vbox>
  <scrollbar visible="${this.scrollable}"/>
</view>
 
</canvas>