Más información sobre los estilos de fuente
resumen
Describe los detalles del archivo de fuente sprite y los caracteres que se muestran.
Entorno operativo
Prerrequisitos
Versiones de XNA compatibles |
|
Plataformas compatibles |
|
Versión requerida del sombreador de vértices de Windows | 2.0 |
Versión de Pixel Shader requerida para Windows | 2.0 |
Entorno operativo
plataforma |
|
sustancia
En un archivo de fuente sprite, se pueden especificar los siete elementos siguientes.
- Nombre de la fuente
- Tamaño de fuente
- Anchura entre caracteres
- Con o sin interletraje
- Estilo de fuente
- Caracteres predeterminados
- Codificación de caracteres que se va a crear
Aquí, se utiliza la siguiente fuente como fuente predeterminada. (También está el tamaño de las letras, así que he estado jugando un poco con él desde que se creó la fuente sprite).
Nombre de la fuente | Segoe UI Mono |
tamaño | 24 |
espacio | 0 |
interletraje | verdadero |
estilo | Regular |
Nombre de la fuente
<FontName>MS 明朝</FontName>
Puede especificar un nombre de fuente. Las fuentes que se pueden especificar son las fuentes que se instalan en el entorno de desarrollo. Dado que la imagen de la fuente se genera en tiempo de compilación, se puede utilizar sin problemas incluso en un entorno en el que la fuente creada no está instalada. El texto a continuación se muestra como "MS Mincho".
Nombre de la fuente | MS Mincho |
tamaño | 24 |
espacio | 0 |
interletraje | verdadero |
estilo | Regular |
tamaño
<Size>36</Size>
El tamaño del texto. Será el tamaño en la pantalla, y también puede especificar un decimal. (Para ser precisos, será el tamaño en el búfer de respaldo)
Nombre de la fuente | Segoe UI Mono |
tamaño | 36 |
espacio | 0 |
interletraje | verdadero |
estilo | Regular |
Espaciado entre caracteres
<Spacing>12</Spacing>
Puede especificar el ancho entre cada carácter. El número será el tamaño que aparece en la pantalla. (Para ser precisos, será el tamaño en el búfer de respaldo)
Nombre de la fuente | Segoe UI Mono |
tamaño | 24 |
espacio | 12 |
interletraje | verdadero |
estilo | Regular |
interletraje
<UseKerning>false</UseKerning>
Equilibra el espaciado de las letras. Para obtener más información, consulte el siguiente enlace.
De forma predeterminada, esto es true, lo que significa que el espacio entre caracteres se ajusta automáticamente para que sea más fácil ver el espacio entre caracteres. Si se establece en false, el espacio entre los caracteres no se ajustará y aparecerá atascado.
Nombre de la fuente | Segoe UI Mono |
tamaño | 24 |
espacio | 0 |
interletraje | falso |
estilo | Regular |
estilo
<Style>Bold</Style>
Puede poner las letras en negrita o cursiva. Los parámetros que se pueden especificar son "Regular", "Negrita" y "Cursiva". Si desea especificar más de uno, sepárelos con una coma (,).
Nombre de la fuente | Segoe UI Mono |
tamaño | 24 |
espacio | 0 |
interletraje | verdadero |
estilo | Negrita y cursiva |
Caracteres predeterminados
<DefaultCharacter>◆</DefaultCharacter>
En las fuentes de sprites, puede especificar la codificación de caracteres que se puede usar en "CharacterRegions", pero si intenta mostrar otros caracteres, se produce una excepción en tiempo de ejecución en XNA Framework (hasta 3.1).
Sin embargo, si especifica este "DefaultCharacter", puede mostrarlo como un carácter alternativo incluso si se introduce un carácter inesperado. Creo que será especialmente efectivo para el texto ingresado por el usuario.
En el ejemplo de visualización a continuación, el programa está tratando de mostrar "Default Character", pero dado que esta fuente de sprite solo permite símbolos alfanuméricos, se reemplaza con "◆" especificado en DefaultCharacter.
Por cierto, aquí solo se puede especificar un carácter Unicode, y también se pueden especificar los caracteres que no se especifican en CharacterRegions.
Codificación de caracteres
<CharacterRegions>
<CharacterRegion>
<Start> </Start>
<End>~</End>
</CharacterRegion>
</CharacterRegions>
Especifica los caracteres que se pueden mostrar en un código definido en Unicode. Se pueden utilizar caracteres entre los códigos especificados por "Inicio" y "Fin".
Si especifica un número grande, puede usar caracteres como japonés, pero tenga cuidado porque lleva mucho tiempo construirse y el tamaño del archivo de la imagen de fuente terminada se vuelve bastante grande.
Dado que se pueden definir varios nodos de "CharacterRegion", se puede usar cuando se desea especificar el código de carácter omitiendo.
Tablas Unicode (32~127)
(Los números en las filas ×16 + los números en las columnas) serán el código.
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 | Yo | 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 | Yo | j | k | l | m | n | o | |
7 | p | q | r | s | t | u | v | w | x | y | z | { | } | ~ | |
Todos los códigos
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);
}
}
}