public static BitmapFontInfo ReadText(IReadOnlyList <string> lineSegments) { var bitmapFontInfo = new BitmapFontInfo(); bitmapFontInfo.Face = TextFormatUtility.ReadString("face", lineSegments, string.Empty); bitmapFontInfo.Size = TextFormatUtility.ReadInt("size", lineSegments); bitmapFontInfo.Bold = TextFormatUtility.ReadBool("bold", lineSegments); bitmapFontInfo.Italic = TextFormatUtility.ReadBool("italic", lineSegments); bitmapFontInfo.Charset = TextFormatUtility.ReadString("charset", lineSegments, string.Empty); bitmapFontInfo.Unicode = TextFormatUtility.ReadBool("unicode", lineSegments); bitmapFontInfo.StretchHeight = TextFormatUtility.ReadInt("stretchH", lineSegments); bitmapFontInfo.Smooth = TextFormatUtility.ReadBool("smooth", lineSegments); bitmapFontInfo.SuperSamplingLevel = TextFormatUtility.ReadInt("aa", lineSegments); var padding = TextFormatUtility.ReadValue("padding", lineSegments)?.Split(','); if (padding != null) { bitmapFontInfo.PaddingLeft = padding.Length > 3 ? int.Parse(padding[3]) : 0; bitmapFontInfo.PaddingDown = padding.Length > 2 ? int.Parse(padding[2]) : 0; bitmapFontInfo.PaddingRight = padding.Length > 1 ? int.Parse(padding[1]) : 0; bitmapFontInfo.PaddingUp = padding.Length > 0 ? int.Parse(padding[0]) : 0; } var spacing = TextFormatUtility.ReadValue("spacing", lineSegments)?.Split(','); if (spacing != null) { bitmapFontInfo.SpacingVertical = spacing.Length > 1 ? int.Parse(spacing[1]) : 0; bitmapFontInfo.SpacingHorizontal = spacing.Length > 0 ? int.Parse(spacing[0]) : 0; } bitmapFontInfo.Outline = TextFormatUtility.ReadInt("outline", lineSegments); return(bitmapFontInfo); }
public static BitmapFont ReadText(TextReader textReader) { var bitmapFont = new BitmapFont(); while (textReader.Peek() != -1) { var lineSegments = TextFormatUtility.GetSegments(textReader.ReadLine()); switch (lineSegments[0]) { case "info": { bitmapFont.Info = BitmapFontInfo.ReadText(lineSegments); break; } case "common": { bitmapFont.Common = BitmapFontCommon.ReadText(lineSegments, out var pageCount); bitmapFont.Pages = new Dictionary <int, string>(pageCount); break; } case "page": { bitmapFont.Pages = bitmapFont.Pages ?? new Dictionary <int, string>(); var id = TextFormatUtility.ReadInt("id", lineSegments); var file = TextFormatUtility.ReadString("file", lineSegments); bitmapFont.Pages[id] = file; break; } case "chars": { var count = TextFormatUtility.ReadInt("count", lineSegments); bitmapFont.Characters = new Dictionary <int, Character>(count); for (var i = 0; i < count; i++) { var characterLineSegments = TextFormatUtility.GetSegments(textReader.ReadLine()); var character = Character.ReadText(characterLineSegments, out var id); bitmapFont.Characters[id] = character; } break; } case "kernings": { var count = TextFormatUtility.ReadInt("count", lineSegments); bitmapFont.KerningPairs = new Dictionary <KerningPair, int>(count); for (var i = 0; i < count; i++) { var kerningLineSegments = TextFormatUtility.GetSegments(textReader.ReadLine()); var kerningPair = KerningPair.ReadText(kerningLineSegments, out var amount); if (bitmapFont.KerningPairs.ContainsKey(kerningPair)) { continue; } bitmapFont.KerningPairs[kerningPair] = amount; } break; } } } return(bitmapFont); }