Mai multe despre stilurile de font

Pagina actualizată :
Data creării paginii :

rezumat

Descrie detaliile fișierului de font sprite și caracterele care sunt afișate.

フォントスタイルの詳細

Mediul de operare

Cerințe preliminare

Versiuni XNA acceptate
  • 4.0
Platforme acceptate
  • Windows (XP SP2 sau o versiune ulterioară, Vista, 7)
  • Xbox 360
  • Windows Phone 7
Versiunea Vertex Shader necesară pentru Windows 2.0
Versiunea Pixel Shader necesară pentru Windows 2.0

Mediul de operare

peron
  • Windows 7
  • Xbox 360
  • Windows Phone 7 Emulator

substanță

Într-un fișier de font sprite, pot fi specificate următoarele șapte elemente.

  • Numele fontului
  • Dimensiunea fontului
  • Lățimea dintre caractere
  • Cu sau fără kerning
  • Stil font
  • Caractere implicite
  • Codificarea caracterelor care urmează să fie creată

Aici, următorul font este folosit ca font implicit. (Există, de asemenea, dimensiunea literelor, așa că m-am jucat puțin cu ea de când a fost creat fontul sprite.)

デフォルトのフォント

Numele fontului Segoe UI Mono
mărime 24
spațiu 0
Kerning adevărat
stil Regulat

Numele fontului

<FontName>MS 明朝</FontName>

Puteți specifica un nume de font. Fonturile care pot fi specificate sunt fonturile care sunt instalate în mediul de dezvoltare. Deoarece imaginea fontului este generată în timpul construcției, poate fi utilizată fără probleme chiar și într-un mediu în care fontul creat nu este instalat. Textul de mai jos este afișat ca "MS Mincho".

フォント名変更

Numele fontului MS Mincho
mărime 24
spațiu 0
Kerning adevărat
stil Regulat

mărime

<Size>36</Size>

Dimensiunea textului. Va fi dimensiunea de pe ecran și puteți specifica, de asemenea, o zecimală. (Pentru a fi precis, va fi dimensiunea de pe tamponul din spate)

サイズ変更

Numele fontului Segoe UI Mono
mărime 36
spațiu 0
Kerning adevărat
stil Regulat

Spațierea între caractere

<Spacing>12</Spacing>

Puteți specifica lățimea dintre fiecare caracter. Numărul va fi dimensiunea de pe ecran. (Pentru a fi precis, va fi dimensiunea de pe tamponul din spate)

文字間スペース変更

Numele fontului Segoe UI Mono
mărime 24
spațiu 12
Kerning adevărat
stil Regulat

Kerning

<UseKerning>false</UseKerning>

Echilibrați spațierea literelor. Pentru mai multe informații, vă rugăm să consultați linkul de mai jos.

În mod implicit, acest lucru este adevărat, ceea ce înseamnă că spațiul dintre caractere este ajustat automat pentru a facilita vizualizarea spațiului dintre caractere. Dacă este setat la fals, spațiul dintre caractere nu va fi ajustat și va apărea blocat.

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

Numele fontului Segoe UI Mono
mărime 24
spațiu 0
Kerning fals
stil Regulat

stil

<Style>Bold</Style>

Puteți face literele aldine sau cursive. Parametrii care pot fi specificați sunt "Regular", "Bold" și "Italic". Dacă doriți să specificați mai multe, separați-le cu o virgulă (,).

太字 イタリック

Numele fontului Segoe UI Mono
mărime 24
spațiu 0
Kerning adevărat
stil Aldin și cursiv

Caractere implicite

<DefaultCharacter></DefaultCharacter>

În fonturile sprite, puteți specifica codificarea caracterelor care poate fi utilizată în "CharacterRegions", dar dacă încercați să afișați alte caractere, apare o excepție la rulare în XNA Framework (până la 3.1).

Cu toate acestea, dacă specificați acest "DefaultCharacter", îl puteți afișa ca caracter alternativ chiar dacă este introdus un caracter neașteptat. Cred că va fi deosebit de eficient pentru textul introdus de utilizatori.

În exemplul de afișare de mai jos, programul încearcă să afișeze "Caracterul implicit", dar din moment ce acest font sprite permite doar simboluri alfanumerice, este înlocuit cu "◆" specificat în DefaultCharacter.

Apropo, aici poate fi specificat un singur caracter Unicode și pot fi specificate și caractere care nu sunt specificate în CharacterRegions.

Codificarea caracterelor

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

Specifică caracterele care pot fi afișate într-un cod definit în Unicode. Pot fi utilizate caractere între codurile specificate de "Start" și "End".

Dacă specificați un număr mare, puteți utiliza caractere precum japoneza, dar aveți grijă, deoarece durează mult timp pentru a construi și dimensiunea fișierului imaginii fontului finit devine destul de mare.

Deoarece pot fi definite mai multe noduri de "CharacterRegion", acesta poate fi utilizat atunci când doriți să specificați codul de caracter prin omitere.

Tabele Unicode (32~127)

(Numerele din rândurile ×16 + numere în coloane) va fi codul.

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 Eu 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 eu j k l m n o
7 p q r s t u v w x y z { } ~ 

Toate codurile

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);
        }
    }
}