<title>비트맵 폰트 제작</title>

Bitmap Font Generator

Bitmap Font Generator : 비트맵 폰트과 튜토리얼

// ---- AngelCode BmFont XML serializer ----------------------
// ---- By DeadlyDan @ deadlydan@gmail.com -------------------
// ---- There's no license restrictions, use as you will. ----
// ---- Credits to http://www.angelcode.com/ -----------------
 
using System;
using System.IO;
using System.Xml.Serialization;
 
namespace BmFont
{
  [Serializable]
  [XmlRoot("font")]
  public class FontFile
  {
    [XmlElement("info")]
    public FontInfo Info
    {
      get;
      set;
    }
 
    [XmlElement("common")]
    public FontCommon Common
    {
      get;
      set;
    }
 
    [XmlArray("pages")]
    [XmlArrayItem("page")]
    public List<FontPage> Pages
    {
      get;
      set;
    }
 
    [XmlArray("chars")]
    [XmlArrayItem("char")]
    public List<FontChar> Chars
    {
      get;
      set;
    }
 
    [XmlArray("kernings")]
    [XmlArrayItem("kerning")]
    public List<FontKerning> Kernings
    {
      get;
      set;
    }
  }
 
  [Serializable]
  public class FontInfo
  {
    [XmlAttribute("face")]
    public String Face
    {
      get;
      set;
    }
 
    [XmlAttribute("size")]
    public Int32 Size
    {
      get;
      set;
    }
 
    [XmlAttribute("bold")]
    public Int32 Bold
    {
      get;
      set;
    }
 
    [XmlAttribute("italic")]
    public Int32 Italic
    {
      get;
      set;
    }
 
    [XmlAttribute("charset")]
    public String CharSet
    {
      get;
      set;
    }
 
    [XmlAttribute("unicode")]
    public Int32 Unicode
    {
      get;
      set;
    }
 
    [XmlAttribute("stretchH")]
    public Int32 StretchHeight
    {
      get;
      set;
    }
 
    [XmlAttribute("smooth")]
    public Int32 Smooth
    {
      get;
      set;
    }
 
    [XmlAttribute("aa")]
    public Int32 SuperSampling
    {
      get;
      set;
    }
 
    private Rectangle _Padding;
    [XmlAttribute("padding")]
    public String Padding
    {
      get
      {
        return _Padding.X + "," + _Padding.Y + "," + _Padding.Width + "," + _Padding.Height;
      }
      set
      {
        String[] padding = value.Split(',');
        _Padding = new Rectangle(Convert.ToInt32(padding[0]), Convert.ToInt32(padding[1]), Convert.ToInt32(padding[2]), Convert.ToInt32(padding[3]));
      }
    }
 
    private Point _Spacing;
    [XmlAttribute("spacing")]
    public String Spacing
    {
      get
      {
        return _Spacing.X + "," + _Spacing.Y;
      }
      set
      {
        String[] spacing = value.Split(',');
        _Spacing = new Point(Convert.ToInt32(spacing[0]), Convert.ToInt32(spacing[1]));
      }
    }
 
    [XmlAttribute("outline")]
    public Int32 OutLine
    {
      get;
      set;
    }
  }
 
  [Serializable]
  public class FontCommon
  {
    [XmlAttribute("lineHeight")]
    public Int32 LineHeight
    {
      get;
      set;
    }
 
    [XmlAttribute("base")]
    public Int32 Base
    {
      get;
      set;
    }
 
    [XmlAttribute("scaleW")]
    public Int32 ScaleW
    {
      get;
      set;
    }
 
    [XmlAttribute("scaleH")]
    public Int32 ScaleH
    {
      get;
      set;
    }
 
    [XmlAttribute("pages")]
    public Int32 Pages
    {
      get;
      set;
    }
 
    [XmlAttribute("packed")]
    public Int32 Packed
    {
      get;
      set;
    }
 
    [XmlAttribute("alphaChnl")]
    public Int32 AlphaChannel
    {
      get;
      set;
    }
 
    [XmlAttribute("redChnl")]
    public Int32 RedChannel
    {
      get;
      set;
    }
 
    [XmlAttribute("greenChnl")]
    public Int32 GreenChannel
    {
      get;
      set;
    }
 
    [XmlAttribute("blueChnl")]
    public Int32 BlueChannel
    {
      get;
      set;
    }
  }
 
  [Serializable]
  public class FontPage
  {
    [XmlAttribute("id")]
    public Int32 ID
    {
      get;
      set;
    }
 
    [XmlAttribute("file")]
    public String File
    {
      get;
      set;
    }
  }
 
  [Serializable]
  public class FontChar
  {
    [XmlAttribute("id")]
    public Int32 ID
    {
      get;
      set;
    }
 
    [XmlAttribute("x")]
    public Int32 X
    {
      get;
      set;
    }
 
    [XmlAttribute("y")]
    public Int32 Y
    {
      get;
      set;
    }
 
    [XmlAttribute("width")]
    public Int32 Width
    {
      get;
      set;
    }
 
    [XmlAttribute("height")]
    public Int32 Height
    {
      get;
      set;
    }
 
    [XmlAttribute("xoffset")]
    public Int32 XOffset
    {
      get;
      set;
    }
 
    [XmlAttribute("yoffset")]
    public Int32 YOffset
    {
      get;
      set;
    }
 
    [XmlAttribute("xadvance")]
    public Int32 XAdvance
    {
      get;
      set;
    }
 
    [XmlAttribute("page")]
    public Int32 Page
    {
      get;
      set;
    }
 
    [XmlAttribute("chnl")]
    public Int32 Channel
    {
      get;
      set;
    }
  }
 
  [Serializable]
  public class FontKerning
  {
    [XmlAttribute("first")]
    public Int32 First
    {
      get;
      set;
    }
 
    [XmlAttribute("second")]
    public Int32 Second
    {
      get;
      set;
    }
 
    [XmlAttribute("amount")]
    public Int32 Amount
    {
      get;
      set;
    }
  }
 
  public class FontLoader
  {
    public static FontFile Load(String filename)
    {
      XmlSerializer deserializer = new XmlSerializer(typeof(FontFile));
      TextReader textReader = new StreamReader(filename);
      FontFile file = (FontFile)deserializer.Deserialize(textReader);
      textReader.Close();
      return file;
    }
  }
}