79 using System.Collections.Generic;
84 using SiliconStudio.Paradox.Graphics;
106 Glyph[] glyphs = ImportFont(fontAsset, out lineSpacing, out baseLine);
109 foreach (Glyph glyph
in glyphs)
110 GlyphCropper.Crop(glyph);
112 Bitmap bitmap = GlyphPacker.ArrangeGlyphs(glyphs);
124 if (!fontAsset.NoPremultiply)
128 BitmapUtils.PremultiplyAlphaClearType(bitmap);
132 BitmapUtils.PremultiplyAlpha(bitmap);
136 return SpriteFontWriter.CreateSpriteFontData(fontAsset, glyphs, lineSpacing, baseLine, bitmap);
139 static Glyph[] ImportFont(
SpriteFontAsset options, out
float lineSpacing, out
float baseLine)
142 IFontImporter importer;
144 var sourceExtension = (Path.GetExtension(options.Source) ??
"").ToLowerInvariant();
145 var bitmapFileExtensions =
new List<string> {
".bmp",
".png",
".gif" };
146 var importFromBitmap = bitmapFileExtensions.Contains(sourceExtension);
148 importer = importFromBitmap ? (IFontImporter)
new BitmapImporter() : new TrueTypeImporter();
151 var characters = GetCharactersToImport(options);
154 importer.Import(options, characters);
156 lineSpacing = importer.LineSpacing;
157 baseLine = importer.BaseLine;
160 var glyphs =
new List<Glyph>(importer.Glyphs);
163 if (glyphs.Count == 0)
165 throw new Exception(
"Font does not contain any glyphs.");
169 foreach (var glyph
in importer.Glyphs)
170 BitmapUtils.ConvertGreyToAlpha(glyph.Bitmap, glyph.Subrect);
174 glyphs.Sort((left, right) => left.Character.CompareTo(right.Character));
178 if (options.DefaultCharacter != 0)
180 bool defaultCharacterFound =
false;
181 foreach (var glyph
in glyphs)
183 if (glyph.Character == options.DefaultCharacter)
185 defaultCharacterFound =
true;
189 if (!defaultCharacterFound)
191 throw new InvalidOperationException(
"The specified DefaultCharacter is not part of this font.");
195 return glyphs.ToArray();
207 text = streamReader.ReadToEnd();
208 characters.AddRange(text);
212 characters.AddRange(CharacterRegion.Flatten(asset.CharacterRegions));
215 characters = characters.Distinct().ToList();
static List< char > GetCharactersToImport(SpriteFontAsset asset)
System.Text.Encoding Encoding
SharpDX.DirectWrite.Font Font
SpriteFont to use with SpriteBatch. See SpriteFont to learn how to use it.
FontAntiAliasMode
Available antialias mode.
Main class used to compile a Font file XML file.
Data for a static SpriteFont object that supports kerning.
static StaticSpriteFontData Compile(SpriteFontAsset fontAsset)
Compiles the specified font description into a SpriteFontData object.
UFile CharacterSet
A text file referencing which characters to include when generating the static fonts (eg...