Bitmap Font Generator
* 2012/11/11 : 비트맵 폰트 제작 툴, 간단하고 쓰기 좋다.
* 사이트 : [[http://www.angelcode.com/products/bmfont/|Bitmap Font Generator]]
* 최근 빌드 : {{:tool:install_bmfont_1.13.exe.7z|}}
Bitmap Font Generator : 비트맵 폰트과 튜토리얼
* [[http://www.angelcode.com/dev/bmfonts/|]], {{:tool:examp1-bmfonts.zip|}}
* [[http://www.chadvernon.com/blog/resources/managed-directx-2/bitmap-fonts/|]],
* [[http://www.gamedev.net/topic/330742-quick-tutorial-variable-width-bitmap-fonts/|Quick tutorial: Variable width bitmap fonts]]
* [[http://sourceforge.net/projects/oglbmfont/|BMFont OpenGL implementation]], {{:tool:exam3-oglbmfont-vc6-0.2.0.7z|}}
* [[http://www.wieringsoftware.nl/blitz/|BlitzMax modules by Wiering Software]]
* [[http://pastebin.com/x3Z2mDC6|C# XML serializer for font loading by DeadlyDan]]
// ---- 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 Pages
{
get;
set;
}
[XmlArray("chars")]
[XmlArrayItem("char")]
public List Chars
{
get;
set;
}
[XmlArray("kernings")]
[XmlArrayItem("kerning")]
public List 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;
}
}
}