フォントに関する項目を追加
/// <summary>
/// 文字テクスチャフォーマット
/// </summary>
[DisplayName("文字テクスチャフォーマット")]
[Description("使用する文字テクスチャフォーマットを指定します。Autoを設定すると、"
+"単色フォントではDXT3、アウトライン文字ではBgra4444、グラデーション文字では"
+"Colorを自動的に使用します。")]
[DefaultValue(WpfTextureFormat.Auto)]
public WpfTextureFormat TextureFormat { get; set; }
/// <summary>
/// フォント名
/// </summary>
[DisplayName("フォント名")]
[Description("フォント名")]
[DefaultValue("メイリオ")]
public string FontName { get; set; }
このコードを追加することで、ContentPipelineに「FontName」の項目が追加されます。
<h1 class="note"><p>フォント指定部分のコードを修正する</p></h1>
「WpfFontDescriptionProcessor.cs」の350行目あたりにある以下コードを探します。
// Typefaceの生成
typeface = new Typeface(new FontFamily(input.FontName),
fontStyle, fontWeight, FontStretches.Normal);
上記コードを以下のように修正します。
「new FontFamily」の部分を「input.FontName」から「this.FontName」に変えるだけです。
// Typefaceの生成
typeface = new Typeface(new FontFamily(this.FontName),
fontStyle, fontWeight, FontStretches.Normal);
この修正をすることで、ContentPipelineのFontNameに入力されたフォント名を参照するようになります。
<h1 class="note"><p>ContentPipelineを確認</p></h1>
おのでらさんの記事の手順でDLLを作成して、ContentPipelineに反映すると、ContentPipeline上で「SpriteFont」を選択すると「Processor」の部分に、以下のようにFontNameが追加されます。
<a href="../blog/files/211/001.png" class="popup"><img src="../blog/files/211/001.png" alt="344" width="" class="content-image"></a>
後は、描画したいフォント名を入力してContentPipeline上でビルドすればOKです。
<h2 class="note">存在しないフォントを指定した場合</h2>
以下のようなエラーが出ます、フォント名が間違っていないか確認してみてください。
<div class="window">error: Processor 'WpfFontDescriptionProcessor' had unexpected failure!
System.InvalidOperationException: フォント"{0}"のGlyphTypeface生成に失敗しました。
</div>
<h1 class="note"><p>追記</p></h1>
ここまで書いておいて、生成されたspritefontファイルをテキストエディタで開くと中に「FontName」があることに気付きました、泣きたい。