• チュートリアル
  • 機能解説
  • リファレンス
  • 初代Altseedはコチラ

    • 機能解説
    • エンジン
    • ノード
    • 画像
    • 文字
    • マテリアル
    • カメラ
    • ポストエフェクト
    • サウンド
    • ログ
    • プロファイラ
    • ファイル
    • ファイルパッケージ
    • ジョイスティック
    • キーボード
    • マウス
    • カーソル
    • シリアライズ
    • 衝突判定
    • 図形ノード
    • トランジション
    • メディアプレイヤー
    • Altseed2.Tools (.NETツール)

    文字

    文字を描画するには、

    • フォントデータを格納するFont
    • Fontを使って文字列を描画するTextNode を使用します。

    Font

    フォント情報を格納するクラスです。 実行時にフォント情報を作成する動的フォントと、事前にフォント情報を作成する静的フォントの二種類があります。

    • 動的フォント

      • メリット
        • 事前に使用する文字を指定せず、必要に応じて文字情報をフォントファイルから読み込んで追加できる。
      • デメリット
        • 新しい文字を読み込む際に負荷が発生する。
        • フォントの規約によってはゲームに直接フォントファイルを同梱できない場合が多い。
    • 静的フォント

      • メリット
        • 文字を読み込む負荷が発生しない。
        • フォントファイルを事前に画像に変換するため、フォントファイルを直接同梱する必要がない。
      • デメリット
        • 事前に使用したい文字を指定して静的フォントファイルを生成する必要がある。

    フォントのサイズ

    Altseed2 では、フォントの描画に MSDF を利用しています。

    Altseed 初代では利用したいフォントサイズごとに Font クラスのインスタンスを作成する必要がありましたが、Altseed2 では読み込み時のサンプリングサイズをある程度大きく指定すれば、好きなサイズでの文字列の描画に利用することができます。

    サンプリングサイズとしては、通常は 64 程度、複雑な形状の文字を利用する場合にはそれ以上の値を指定すると良さそうです。

    対応フォーマット

    Freetypeが対応している以下のフォーマットを利用することができます。

    • TrueType fonts (TTF) and TrueType collections (TTC)
    • CFF fonts
    • WOFF fonts
    • OpenType fonts (OTF, both TrueType and CFF variants) and OpenType collections (OTC)
    • Type 1 fonts (PFA and PFB)
    • CID-keyed Type 1 fonts
    • SFNT-based bitmap fonts, including color Emoji
    • X11 PCF fonts
    • Windows FNT fonts
    • BDF fonts (including anti-aliased ones)
    • PFR fonts
    • Type 42 fonts (limited support)

    https://www.freetype.org/freetype2/docs/index.html

    動的フォント

    LoadDynamicFont 静的メソッドを用いてフォントファイルを読み込みFontインスタンスを作成します。

    // 動的フォントを読み込む (デフォルトのサンプリングサイズは64)
    var font = Font.LoadDynamicFont("path/to/dynamicfont.ttf");
    
    // サンプリングサイズを指定してフォントファイルを読み込む
    var fontWithSamplingSize = Font.LoadDynamicFont("path/to/dynamicfont.otf", 96);
    

    静的フォント

    静的フォントを使用する場合は、事前にa2fファイルを作成する必要があります。

    ツールを利用して生成する(推奨)

    Altseed2.Tools (.NETツール)を利用して、CLIコマンドまたはGUIを用いて静的フォントを作成することができます。

    ソースコード上から生成する

    Altseed2 から直接呼び出したい場合は、 GenerateFontFile 静的メソッドを利用して、a2fファイルを生成することができます。

    その後、 LoadStaticFont 静的メソッドを用いてa2fファイルを読み込みFontインスタンスを作成します。

    // 事前に生成したa2fファイルから静的フォントを読み込む
    var font = Font.LoadStaticFont("path/to/staticfont.a2f");
    
    // コード上から静的フォントを生成したい場合
    Font.GenerateFontFile("font.ttf", "font.a2f", "使いたい文字を指定");
    
    
    // コード上から静的フォントを生成したい場合(サンプリングサイズの指定)
    Font.GenerateFontFile("font.ttf", "font96.a2f", "使いたい文字を指定", 96);
    

    a2fファイル

    font.a2fを出力先として指定した場合、以下のようなファイルとフォルダが生成されます。

    font.a2f
    font/
    ├── Texture0.png
    ├── Texture1.png
    ├── ...
    └── TextureN.png
    

    このa2fファイルを使いたい場合は、この相対位置を保ってfont.a2fファイルとfontフォルダを同じフォルダに配置する必要があります。

    TextNode

    描画する文字列やそれに適用するオプションなどを設定可能にしたノードです。 描画する文字列、文字列の大きさなどを設定することができます。

    サンプル

    文字の描画

    using System;
    
    using Altseed2;
    
    namespace Sample
    {
        public class TextSample
        {
            [STAThread]
            static void Main(string[] args)
            {
                // Altseed2 を初期化します。
                if (!Engine.Initialize("TextNode", 640, 480)) return;
    
                // フォントファイルを読み込みます。
                var font = Font.LoadDynamicFont(@"TestData/Font/mplus-1m-regular.ttf", 64);
    
                // テキストを描画するノードを作成します。
                var node = new TextNode();
    
                // フォントを設定します。
                node.Font = font;
    
                // フォントサイズ
                node.FontSize = 48;
    
                // 描画する文字列を設定します。
                node.Text = "Hello World!";
    
                // ノードを登録します。
                Engine.AddNode(node);
    
                // メインループ。
                // Altseed のウインドウが閉じられると終了します。
                while (Engine.DoEvents())
                {
                    // Altseed を更新します。
                    Engine.Update();
                }
    
                // Altseed の終了処理をします。
                Engine.Terminate();
            }
        }
    }
    
    Copyright © 2020 Altseed .