static Glyph[] ImportFont(FontDescription options, out float lineSpacing) { // Which importer knows how to read this source font? IFontImporter importer; string fileExtension = Path.GetExtension(options.FontName).ToLowerInvariant(); var BitmapFileExtensions = new List <string> { ".bmp", ".png", ".gif" }; if (BitmapFileExtensions.Contains(fileExtension)) { importer = new BitmapImporter(); } else { importer = new TrueTypeImporter(); } // Import the source font data. importer.Import(options); lineSpacing = importer.LineSpacing; // Get all glyphs var glyphs = new List <Glyph>(importer.Glyphs); // Validate. if (glyphs.Count == 0) { throw new FontException("Font does not contain any glyphs."); } // Sort the glyphs glyphs.Sort((left, right) => left.Character.CompareTo(right.Character)); // Check that the default character is part of the glyphs if (options.DefaultCharacter != 0) { bool defaultCharacterFound = false; foreach (var glyph in glyphs) { if (glyph.Character == options.DefaultCharacter) { defaultCharacterFound = true; break; } } if (!defaultCharacterFound) { throw new FontException("The specified DefaultCharacter is not part of this font."); } } return(glyphs.ToArray()); }
static Glyph[] ImportFont(FontDescription options, out float lineSpacing) { // Which importer knows how to read this source font? IFontImporter importer; string fileExtension = Path.GetExtension(options.FontName).ToLowerInvariant(); var BitmapFileExtensions = new List<string> { ".bmp", ".png", ".gif" }; if (BitmapFileExtensions.Contains(fileExtension)) { importer = new BitmapImporter(); } else { importer = new TrueTypeImporter(); } // Import the source font data. importer.Import(options); lineSpacing = importer.LineSpacing; // Get all glyphs var glyphs = new List<Glyph>(importer.Glyphs); // Validate. if (glyphs.Count == 0) { throw new FontException("Font does not contain any glyphs."); } // Sort the glyphs glyphs.Sort((left, right) => left.Character.CompareTo(right.Character)); // Check that the default character is part of the glyphs if (options.DefaultCharacter != 0) { bool defaultCharacterFound = false; foreach (var glyph in glyphs) { if (glyph.Character == options.DefaultCharacter) { defaultCharacterFound = true; break; } } if (!defaultCharacterFound) { throw new FontException("The specified DefaultCharacter is not part of this font."); } } return glyphs.ToArray(); }
static Glyph[] ImportFont(CommandLineOptions options, out float lineSpacing) { // Which importer knows how to read this source font? IFontImporter importer; string fileExtension = Path.GetExtension(options.SourceFont).ToLowerInvariant(); string[] BitmapFileExtensions = { ".bmp", ".png", ".gif" }; if (BitmapFileExtensions.Contains(fileExtension)) { importer = new BitmapImporter(); } else { importer = new TrueTypeImporter(); } // Import the source font data. importer.Import(options); lineSpacing = importer.LineSpacing; var glyphs = importer.Glyphs .OrderBy(glyph => glyph.Character) .ToArray(); // Validate. if (glyphs.Length == 0) { throw new Exception("Font does not contain any glyphs."); } if ((options.DefaultCharacter != 0) && !glyphs.Any(glyph => glyph.Character == options.DefaultCharacter)) { throw new Exception("The specified DefaultCharacter is not part of this font."); } return glyphs; }