En savoir plus sur les styles de police

Page mise à jour :
Date de création de la page :

résumé

Il décrit les détails du fichier de police sprite et les caractères affichés.

フォントスタイルの詳細

Environnement d’exploitation

Conditions préalables

Versions XNA prises en charge
  • 4.0
Plates-formes prises en charge
  • Windows (XP SP2 ou version ultérieure, Vista, 7)
  • Xbox 360
  • Windows Phone 7
Version du Vertex Shader requise par Windows 2.0
Version du Pixel Shader requise par Windows 2.0

Environnement d’exploitation

plateforme
  • Windows 7
  • Xbox 360
  • Émulateur Windows Phone 7

substance

Dans un fichier de police sprite, les sept éléments suivants peuvent être spécifiés.

  • Nom de la police
  • Taille de la police
  • Largeur entre les caractères
  • Avec ou sans crénage
  • Style de police
  • Caractères par défaut
  • Encodage de caractères à créer

Ici, la police suivante est utilisée comme police par défaut. (Il y a aussi la taille des lettres, donc je l’ai un peu bricolée depuis que la police sprite a été créée.)

デフォルトのフォント

Nom de la police Segoe UI Mono
taille 24
espace 0
crénage vrai
style Régulier

Nom de la police

<FontName>MS 明朝</FontName>

Vous pouvez spécifier un nom de police. Les polices qui peuvent être spécifiées sont celles qui sont installées dans l’environnement de développement. Étant donné que l’image de la police est générée au moment de la construction, elle peut être utilisée sans problème, même dans un environnement où la police créée n’est pas installée. Le texte ci-dessous est affiché sous la forme « MS Mincho ».

フォント名変更

Nom de la police MME Mincho
taille 24
espace 0
crénage vrai
style Régulier

taille

<Size>36</Size>

La taille du texte. Il s’agira de la taille affichée à l’écran, et vous pouvez également spécifier une décimale. (Pour être précis, il s’agira de la taille sur le tampon arrière)

サイズ変更

Nom de la police Segoe UI Mono
taille 36
espace 0
crénage vrai
style Régulier

Espacement entre les caractères

<Spacing>12</Spacing>

Vous pouvez spécifier la largeur entre chaque caractère. Le nombre sera la taille affichée à l’écran. (Pour être précis, il s’agira de la taille sur le tampon arrière)

文字間スペース変更

Nom de la police Segoe UI Mono
taille 24
espace 12
crénage vrai
style Régulier

crénage

<UseKerning>false</UseKerning>

Équilibrez l’espacement des lettres. Pour plus d’informations, veuillez vous référer au lien ci-dessous.

Par défaut, c’est vrai, ce qui signifie que l’espace entre les caractères est automatiquement ajusté pour faciliter la visualisation de l’espace entre les caractères. Si la valeur est false, l’espace entre les caractères ne sera pas ajusté et apparaîtra bloqué.

カーニングを無効にしています。

Nom de la police Segoe UI Mono
taille 24
espace 0
crénage faux
style Régulier

style

<Style>Bold</Style>

Vous pouvez mettre les lettres en gras ou en italique. Les paramètres qui peuvent être spécifiés sont « Régulier », « Gras » et « Italique ». Si vous souhaitez en spécifier plusieurs, séparez-les par une virgule (,).

太字 イタリック

Nom de la police Segoe UI Mono
taille 24
espace 0
crénage vrai
style Gras et italique

Caractères par défaut

<DefaultCharacter></DefaultCharacter>

Dans les polices sprite, vous pouvez spécifier l’encodage des caractères qui peut être utilisé dans « CharacterRegions », mais si vous essayez d’afficher d’autres caractères, une exception se produit au moment de l’exécution dans XNA Framework (jusqu’à 3.1).

Toutefois, si vous spécifiez ce « DefaultCharacter », vous pouvez l’afficher en tant que caractère alternatif même si un caractère inattendu est entré. Je pense que ce sera particulièrement efficace pour le texte saisi par l’utilisateur.

Dans l’exemple d’affichage ci-dessous, le programme essaie d’afficher « "Default Character », mais comme cette police sprite n’autorise que les symboles alphanumériques, elle est remplacée par « ◆ » spécifié dans DefaultCharacter.

D’ailleurs, un seul caractère Unicode peut être spécifié ici, et les caractères qui ne sont pas spécifiés dans CharacterRegions peuvent également être spécifiés.

Encodage de caractères

<CharacterRegions>
  <CharacterRegion>
    <Start>&#32;</Start>
    <End>&#126;</End>
  </CharacterRegion>
</CharacterRegions>

Spécifie les caractères qui peuvent être affichés dans un code défini en Unicode. Il est possible d’utiliser des caractères entre les codes spécifiés par « Start » et « End ».

Si vous spécifiez un grand nombre, vous pouvez utiliser des caractères tels que le japonais, mais soyez prudent car la construction prend beaucoup de temps et la taille du fichier de l’image de police finale devient assez importante.

Étant donné que plusieurs nœuds de « CharacterRegion » peuvent être définis, il peut être utilisé lorsque vous souhaitez spécifier le code de caractère en sautant.

Tables Unicode (32~127)

(Les nombres dans les rangées ×16 + nombres dans les colonnes) seront le code.

0 1 2 3 4 5 6 7 8 9 Un B C D E F
2 ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ Un B C D E F G H Je J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` un b c d e f g h Je j k l m n o
7 p q r s t u v w x y z { } ~ 

Tous les codes

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
#if WINDOWS_PHONE
using Microsoft.Xna.Framework.Input.Touch;
#endif

namespace FontStyle
{
    /// <summary>
    /// ゲームメインクラス
    /// </summary>
    public class GameMain : Microsoft.Xna.Framework.Game
    {
        /// <summary>
        /// グラフィックデバイス管理クラス
        /// </summary>
        private GraphicsDeviceManager graphics = null;

        /// <summary>
        /// スプライトのバッチ化クラス
        /// </summary>
        private SpriteBatch spriteBatch = null;

        /// <summary>
        /// デフォルトフォント
        /// </summary>
        private SpriteFont defaultFont = null;

        /// <summary>
        /// フォント名変更フォント
        /// </summary>
        private SpriteFont fontNameFont = null;

        /// <summary>
        /// サイズ変更フォント
        /// </summary>
        private SpriteFont sizeFont = null;

        /// <summary>
        /// 文字間変更フォント
        /// </summary>
        private SpriteFont spacingFont = null;

        /// <summary>
        /// 太字フォント
        /// </summary>
        private SpriteFont boldFont = null;

        /// <summary>
        /// イタリックフォント
        /// </summary>
        private SpriteFont italicFont = null;

        /// <summary>
        /// カーニングOFFフォント
        /// </summary>
        private SpriteFont kerningOffFont = null;

        /// <summary>
        /// デフォルト文字フォント
        /// </summary>
        private SpriteFont defaultCharacterFont = null;


        /// <summary>
        /// GameMain コンストラクタ
        /// </summary>
        public GameMain()
        {
            // グラフィックデバイス管理クラスの作成
            this.graphics = new GraphicsDeviceManager(this);

            // ゲームコンテンツのルートディレクトリを設定
            this.Content.RootDirectory = "Content";

#if WINDOWS_PHONE
            // Windows Phone のデフォルトのフレームレートは 30 FPS
            this.TargetElapsedTime = TimeSpan.FromTicks(333333);

            // バックバッファサイズの設定
            this.graphics.PreferredBackBufferWidth = 480;
            this.graphics.PreferredBackBufferHeight = 800;

            // フルスクリーン表示
            this.graphics.IsFullScreen = true;
#endif
        }

        /// <summary>
        /// ゲームが始まる前の初期化処理を行うメソッド
        /// グラフィック以外のデータの読み込み、コンポーネントの初期化を行う
        /// </summary>
        protected override void Initialize()
        {
            // TODO: ここに初期化ロジックを書いてください

            // コンポーネントの初期化などを行います
            base.Initialize();
        }

        /// <summary>
        /// ゲームが始まるときに一回だけ呼ばれ
        /// すべてのゲームコンテンツを読み込みます
        /// </summary>
        protected override void LoadContent()
        {
            // テクスチャーを描画するためのスプライトバッチクラスを作成します
            this.spriteBatch = new SpriteBatch(this.GraphicsDevice);

            // フォントをコンテンツパイプラインから読み込む
            this.defaultFont = this.Content.Load<SpriteFont>("Default");
            this.fontNameFont = this.Content.Load<SpriteFont>("FontName");
            this.sizeFont = this.Content.Load<SpriteFont>("Size");
            this.spacingFont = this.Content.Load<SpriteFont>("Spacing");
            this.boldFont = this.Content.Load<SpriteFont>("Bold");
            this.italicFont = this.Content.Load<SpriteFont>("Italic");
            this.kerningOffFont = this.Content.Load<SpriteFont>("KerningOff");
            this.defaultCharacterFont = this.Content.Load<SpriteFont>("DefaultCharacter");
        }

        /// <summary>
        /// ゲームが終了するときに一回だけ呼ばれ
        /// すべてのゲームコンテンツをアンロードします
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: ContentManager で管理されていないコンテンツを
            //       ここでアンロードしてください
        }

        /// <summary>
        /// 描画以外のデータ更新等の処理を行うメソッド
        /// 主に入力処理、衝突判定などの物理計算、オーディオの再生など
        /// </summary>
        /// <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
        protected override void Update(GameTime gameTime)
        {
            // Xbox 360 コントローラ、Windows Phone の BACK ボタンを押したときに
            // ゲームを終了させます
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                this.Exit();
            }

            // TODO: ここに更新処理を記述してください

            // 登録された GameComponent を更新する
            base.Update(gameTime);
        }

        /// <summary>
        /// 描画処理を行うメソッド
        /// </summary>
        /// <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
        protected override void Draw(GameTime gameTime)
        {
            // 画面を指定した色でクリアします
            this.GraphicsDevice.Clear(Color.CornflowerBlue);

            // スプライトの描画準備
            this.spriteBatch.Begin();

            // デフォルト
            this.spriteBatch.DrawString(this.defaultFont, "Sample Text -Default-",
                new Vector2(20.0f, 20.0f), Color.White);

            // カーニング OFF
            this.spriteBatch.DrawString(this.kerningOffFont, "Sample Text -Kerning OFF-",
                new Vector2(20.0f, 70.0f), Color.White);

            // フォント名
            this.spriteBatch.DrawString(this.fontNameFont, "Sample Text -FontName-",
                new Vector2(20.0f, 120.0f), Color.White);

            // フォントサイズ
            this.spriteBatch.DrawString(this.sizeFont, "Sample Text -Size-",
                new Vector2(20.0f, 170.0f), Color.White);

            // 文字間
            this.spriteBatch.DrawString(this.spacingFont, "Sample Text -Spacing-",
                new Vector2(20.0f, 220.0f), Color.White);

            // 太字
            this.spriteBatch.DrawString(this.boldFont, "Sample Text -Bold-",
                new Vector2(20.0f, 270.0f), Color.White);

            // イタリック
            this.spriteBatch.DrawString(this.italicFont, "Sample Text -Italic-",
                new Vector2(20.0f, 320.0f), Color.White);

            // デフォルト文字
            this.spriteBatch.DrawString(this.defaultCharacterFont, "Sample Text -デフォルト文字-",
                new Vector2(20.0f, 370.0f), Color.White);

            // スプライトの一括描画
            this.spriteBatch.End();

            // 登録された DrawableGameComponent を描画する
            base.Draw(gameTime);
        }
    }
}