In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

FontLoaderを使ってMinimalCompsで日本語表示

Get Adobe Flash player
by Fake 16 Nov 2010
  • Related works: 4
  • Talk

    bkzen at 17 Nov 2010 13:35
    FontLoader で ロードしてきたものを使うのであれば Style.embedFonts = true では?
    Fake at 17 Nov 2010 16:25
    デフォルトの埋めこまれている(embededな)フォントを使わない、ってことでfalseに設定したんですが、解釈が間違ってるんでしょうか? MinimalCompsもFontLoaderも、昨日初めて使ったので、まだ全然分かってないです。 forkされたものを見ると、どちらでも動作しているようなので、更によく分からなくなってきましたが…。
    bkzen at 17 Nov 2010 17:20
    自分の解釈では embedFonts を false にした場合は デバイスフォント(PCに入っているフォントのみ)を使用すると言う意味で、true にした場合は 埋め込みフォントを使用すると言う意味だと解釈していました。 ロードしたフォントは Font.registerFont を使用することでグローバルフォントリストに登録し、embedした場合と同じように埋め込みフォントとして扱われます。よって true にするのが正解だと思います。 fork したものがあまりよくありませんでした・・・すみません。 ですが、どちらでも動作しているというのは間違いです。 MinimalComps の Style.fontName や Style.embedFonts は今後作られるコンポーネントに対して有効なもので、デフォルトはそれぞれ、PF Ronda Seven、 true です。
    bkzen at 17 Nov 2010 17:25
    http://wonderfl.net/c/6d37 こちらを見ると embedFonts が true の場合と false の場合がわかると思います。 true の時に作られた Text はフォントが適用されていますが false にされた以降に作られたPushButtonはデバイスフォントが使用されているのがわかると思います。 あと上で書き忘れましたが、FontLoader は、フォントを読み込んだ後 Font.registerFont で読み込んだフォントを登録してくれています。
    bkzen at 17 Nov 2010 19:13
    あ・・・自分の解釈が間違っている気がしてきました・・・。すみません。
    Fake at 18 Nov 2010 11:44
    MinimalCompsのソースを読みました。 bkzenさんが最初に書いていた > MinimalComps の Style.fontName や Style.embedFonts は今後作られるコンポーネントに対して有効なもので、 で合ってますね。 コメントが長いと投稿出来ないみたいなので、分割します。
    Fake at 18 Nov 2010 11:44
    既知かもしれませんが、今回自分が知った情報を一応簡単にまとめておきます。 ・Style.embedFontsパラメータは、InputText, Label, Textで使用される。 ・Style.embedFontsパラメータは、上記コンポーネントをnewした際に、コンポーネント内部で使用しているTextFieldのembedFontsプロパティに、(その時の値が)そのまま設定される。 ・Style.fontNameパラメータは、上記TextFieldのdefaultTextFormatプロパティに(TextFormatオブジェクトとして)(その時の値が)設定される。 ・PushButtonの文字は、内部的にはLabelコンポーネントを使用している。(恐らく他のコンポーネントも、文字表示はLabelを使っていると思われる)
    Fake at 18 Nov 2010 11:44
    既に作成済みのコンポーネントのフォント変更には、内部のLabel(の内部のTextField)のフォントを直接変更すればOKですね。(今回のコードでは意識せず無理矢理やってしまってましたw) ボタンが上手くいってるように見えてますが、IPAGPにならずにFlashのデフォルトのフォントになってしまってるだけですね… 上記を踏まえた上で作り直しました。 http://wonderfl.net/c/lWFQ
    Fake at 18 Nov 2010 11:58
    また、FontLoaderの動作に関しても(まだ全部は分かってませんが)概ね理解出来たと思います。 bkzenさんの2つ目のコメントで、FontLoader, MinimalComps両方共にFAだと思います。 元のコードが無理矢理実装だったのが、混乱の原因だったと思います…。すみません。

    Tags

    Embed
/**
 * Copyright Fake ( http://wonderfl.net/user/Fake )
 * GNU General Public License, v3 ( http://www.gnu.org/licenses/quick-guide-gplv3.html )
 * Downloaded from: http://wonderfl.net/c/yE5U
 */

package {
    import flash.text.TextFormat;
    import flash.events.Event;
    import flash.display.Sprite;
    import com.bit101.components.Text;
    import net.wonderfl.utils.FontLoader;
    import com.bit101.components.Style;
    import com.bit101.components.PushButton;

    public class FlashTest extends Sprite {
        private var fontname:String = "IPAGP";
        private var debugout:Text;

        public function FlashTest() {
            // write as3 code here..
            debugout = new Text(this, 50, 50, "Now loading...");
            var floader:FontLoader = new FontLoader();
            floader.addEventListener(Event.COMPLETE, function (e:Event):void {
                debugout.textField.defaultTextFormat = new TextFormat(fontname, 12);
                debugout.text = "こんなやり方で大丈夫か?\n";
                Style.embedFonts = false;
                Style.fontName = fontname
                Style.fontSize = 12;
                var btn:PushButton = new PushButton(parent, 50, 180, "大丈夫だ、問題ない");
                btn.setSize(150, 20);
                var btn2:PushButton = new PushButton(parent, 50, 220, "一番いいフォントを頼む");
                btn2.setSize(150, 20);
            });
            floader.load(fontname);
        }
    }
}