3 using System.Collections.Generic;
5 using SiliconStudio.Core;
6 using SiliconStudio.Core.Mathematics;
7 using SiliconStudio.Core.Serialization.Contents;
8 using SiliconStudio.Core.Serialization.Converters;
12 [ContentSerializer(typeof(DataContentConverterSerializer<StaticSpriteFont>))]
13 internal class StaticSpriteFont : SpriteFont
15 private readonly Dictionary<char, Glyph> characterToGlyph;
19 public StaticSpriteFont(FontSystem fontSystem, StaticSpriteFontData spriteFontData)
20 : base(fontSystem, spriteFontData,
false)
22 characterToGlyph =
new Dictionary<char, Glyph>(spriteFontData.Glyphs.Length);
25 foreach (var glyph
in spriteFontData.Glyphs)
27 var character = (char)glyph.Character;
28 characterToGlyph[character] = glyph;
32 var kernings = spriteFontData.Kernings;
35 for (
int i = 0; i < kernings.Length; i++)
37 int key = (kernings[i].First << 16) | kernings[i].Second;
38 KerningMap.Add(key, kernings[i].Offset);
43 StaticTextures =
new Texture2D[spriteFontData.Bitmaps.Length];
44 for (
int i = 0; i < StaticTextures.Length; i++)
46 if (spriteFontData.Bitmaps[i].Value != null)
47 StaticTextures[i] = Texture2D.New(fontSystem.GraphicsDevice, spriteFontData.Bitmaps[i].Value).DisposeBy(
this);
49 Textures = StaticTextures;
51 BaseOffsetY = spriteFontData.BaseOffset;
52 DefaultLineSpacing = spriteFontData.FontDefaultLineSpacing;
55 public override float GetExtraSpacing(
float fontSize)
60 public override float GetExtraLineSpacing(
float fontSize)
62 return ExtraLineSpacing;
65 public override float GetFontDefaultLineSpacing(
float fontSize)
67 return DefaultLineSpacing;
70 protected override float GetBaseOffsetY(
float fontSize)
75 public override bool IsCharPresent(
char c)
77 return characterToGlyph.ContainsKey(c);
80 protected override Glyph GetGlyph(
char character, ref
Vector2 fontSize,
bool dumb)
84 if (!characterToGlyph.ContainsKey(character))
85 Logger.Warning(
"Character '{0}' is not available in the static font character map", character);
87 glyph = characterToGlyph[character];
Represents a two dimensional mathematical vector.
SharpDX.DirectWrite.Font Font
The texture dimension is 2D.