Mai multe despre stilurile de font
rezumat
Descrie detaliile fișierului de font sprite și caracterele care sunt afișate.
Mediul de operare
Cerințe preliminare
Versiuni XNA acceptate |
|
Platforme acceptate |
|
Versiunea Vertex Shader necesară pentru Windows | 2.0 |
Versiunea Pixel Shader necesară pentru Windows | 2.0 |
Mediul de operare
peron |
|
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> </Start>
<End>~</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);
}
}
}