En savoir plus sur les styles de police
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 |
|
Plates-formes prises en charge |
|
Version du Vertex Shader requise par Windows | 2.0 |
Version du Pixel Shader requise par Windows | 2.0 |
Environnement d’exploitation
plateforme |
|
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> </Start>
<End>~</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);
}
}
}