Περισσότερες πληροφορίες σχετικά με τα στυλ γραμματοσειρών

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

περίληψη

Περιγράφει τις λεπτομέρειες του αρχείου γραμματοσειράς sprite και τους χαρακτήρες που εμφανίζονται.

フォントスタイルの詳細

Περιβάλλον λειτουργίας

Προϋποθέσεις

Υποστηριζόμενες εκδόσεις XNA
  • 4.0
Υποστηριζόμενες πλατφόρμες
  • Windows (XP SP2 ή νεότερη έκδοση, Vista, 7)
  • Κονσόλα Xbox 360
  • Windows Phone 7
Windows Απαιτούμενη έκδοση σκίασης Vertex 2.0
Απαιτούμενη έκδοση Pixel Shader των Windows 2.0

Περιβάλλον λειτουργίας

πλατφόρμα
  • Τα Windows 7
  • Κονσόλα Xbox 360
  • Εξομοιωτής Windows Phone 7

ουσία

Σε ένα αρχείο γραμματοσειράς sprite, μπορούν να καθοριστούν τα ακόλουθα επτά στοιχεία.

  • Όνομα γραμματοσειράς
  • Μέγεθος γραμματοσειράς
  • Πλάτος μεταξύ χαρακτήρων
  • Με ή χωρίς πύκνωση ζεύγους
  • Στυλ γραμματοσειράς
  • Προεπιλεγμένοι χαρακτήρες
  • Κωδικοποίηση χαρακτήρων που θα δημιουργηθεί

Εδώ, η ακόλουθη γραμματοσειρά χρησιμοποιείται ως προεπιλεγμένη γραμματοσειρά. (Υπάρχει επίσης το μέγεθος των γραμμάτων, οπότε ασχολούμαι λίγο με αυτό από τότε που δημιουργήθηκε η γραμματοσειρά sprite.)

デフォルトのフォント

Όνομα γραμματοσειράς Segoe UI Mono
μέγεθος 24
χώρος 0
διαγραμμάτωση πιστός
ύφος Τακτικός

Όνομα γραμματοσειράς

<FontName>MS 明朝</FontName>

Μπορείτε να καθορίσετε ένα όνομα γραμματοσειράς. Οι γραμματοσειρές που μπορούν να καθοριστούν είναι οι γραμματοσειρές που είναι εγκατεστημένες στο περιβάλλον ανάπτυξης. Δεδομένου ότι η εικόνα γραμματοσειράς δημιουργείται κατά το χρόνο κατασκευής, μπορεί να χρησιμοποιηθεί χωρίς προβλήματα ακόμη και σε περιβάλλον όπου η δημιουργημένη γραμματοσειρά δεν είναι εγκατεστημένη. Το παρακάτω κείμενο εμφανίζεται ως "MS Mincho".

フォント名変更

Όνομα γραμματοσειράς MS Mincho
μέγεθος 24
χώρος 0
διαγραμμάτωση πιστός
ύφος Τακτικός

μέγεθος

<Size>36</Size>

Το μέγεθος του κειμένου. Θα είναι το μέγεθος στην οθόνη και μπορείτε επίσης να καθορίσετε ένα δεκαδικό ψηφίο. (Για να είμαστε ακριβείς, θα είναι το μέγεθος στο πίσω buffer)

サイズ変更

Όνομα γραμματοσειράς Segoe UI Mono
μέγεθος 36
χώρος 0
διαγραμμάτωση πιστός
ύφος Τακτικός

Απόσταση μεταξύ χαρακτήρων

<Spacing>12</Spacing>

Μπορείτε να καθορίσετε το πλάτος μεταξύ κάθε χαρακτήρα. Ο αριθμός θα είναι το μέγεθος στην οθόνη. (Για να είμαστε ακριβείς, θα είναι το μέγεθος στο πίσω buffer)

文字間スペース変更

Όνομα γραμματοσειράς Segoe UI Mono
μέγεθος 24
χώρος 12
διαγραμμάτωση πιστός
ύφος Τακτικός

διαγραμμάτωση

<UseKerning>false</UseKerning>

Εξισορροπήστε την απόσταση των γραμμάτων. Για περισσότερες πληροφορίες, ανατρέξτε στον παρακάτω σύνδεσμο.

Από προεπιλογή, αυτό ισχύει, πράγμα που σημαίνει ότι το διάστημα μεταξύ των χαρακτήρων προσαρμόζεται αυτόματα για να είναι ευκολότερο να δείτε το διάστημα μεταξύ των χαρακτήρων. Εάν οριστεί σε false, το διάστημα μεταξύ των χαρακτήρων δεν θα ρυθμιστεί και θα εμφανιστεί μπλοκαρισμένο.

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

Όνομα γραμματοσειράς Segoe UI Mono
μέγεθος 24
χώρος 0
διαγραμμάτωση ψεύτικος
ύφος Τακτικός

ύφος

<Style>Bold</Style>

Μπορείτε να κάνετε τα γράμματα έντονα ή πλάγια. Οι παράμετροι που μπορούν να καθοριστούν είναι "Κανονική", "Έντονη" και "Πλάγια". Εάν θέλετε να καθορίσετε περισσότερα από ένα, διαχωρίστε τα με κόμμα (,).

太字 イタリック

Όνομα γραμματοσειράς Segoe UI Mono
μέγεθος 24
χώρος 0
διαγραμμάτωση πιστός
ύφος έντονη και πλάγια γραφή

Προεπιλεγμένοι χαρακτήρες

<DefaultCharacter></DefaultCharacter>

Στις γραμματοσειρές sprite, μπορείς να καθορίσεις την κωδικοποίηση χαρακτήρων που μπορεί να χρησιμοποιηθεί στο "CharacterRegions", αλλά αν προσπαθήσεις να εμφανίσεις άλλους χαρακτήρες, εμφανίζεται μια εξαίρεση κατά το χρόνο εκτέλεσης στο XNA Framework (έως 3.1).

Ωστόσο, εάν καθορίσετε αυτόν τον "Προεπιλεγμένο χαρακτήρα", μπορείτε να τον εμφανίσετε ως εναλλακτικό χαρακτήρα ακόμα και αν εισαχθεί ένας απροσδόκητος χαρακτήρας. Νομίζω ότι θα είναι ιδιαίτερα αποτελεσματικό για κείμενο εισαγωγής από τον χρήστη.

Στο παρακάτω παράδειγμα εμφάνισης, το πρόγραμμα προσπαθεί να εμφανίσει ""Προεπιλεγμένος χαρακτήρας", αλλά επειδή αυτή η γραμματοσειρά sprite επιτρέπει μόνο αλφαριθμητικά σύμβολα, αντικαθίσταται με "◆" που καθορίζεται στο DefaultCharacter.

Παρεμπιπτόντως, μόνο ένας χαρακτήρας Unicode μπορεί να καθοριστεί εδώ και μπορούν επίσης να καθοριστούν χαρακτήρες που δεν καθορίζονται στο CharacterRegions.

Κωδικοποίηση χαρακτήρων

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

Καθορίζει τους χαρακτήρες που μπορούν να εμφανιστούν σε έναν κώδικα που ορίζεται σε Unicode. Μπορούν να χρησιμοποιηθούν χαρακτήρες μεταξύ των κωδικών που καθορίζονται από "Έναρξη" και "Τέλος".

Εάν καθορίσετε μεγάλο αριθμό, μπορείτε να χρησιμοποιήσετε χαρακτήρες όπως Ιαπωνικά, αλλά προσέξτε γιατί χρειάζεται πολύς χρόνος για να δημιουργηθεί και το μέγεθος αρχείου της τελικής εικόνας γραμματοσειράς γίνεται αρκετά μεγάλο.

Δεδομένου ότι μπορούν να οριστούν πολλοί κόμβοι του "CharacterRegion", μπορεί να χρησιμοποιηθεί όταν θέλετε να καθορίσετε τον κωδικό χαρακτήρα παρακάμπτοντας.

Πίνακες Unicode (32~127)

(Αριθμοί σε σειρές ×16 + αριθμοί σε στήλες) θα είναι ο κωδικός.

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

Όλοι οι κωδικοί

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