private static void WriteBmConfigFile(FontDeclaration font, HashSet<char> pCharacterList) { using (StreamWriter writer = new StreamWriter(File.Open(font.m_FileName, FileMode.Create))) { writer.WriteLine("# AngelCode Bitmap Font Generator configuration file"); writer.WriteLine("fileVersion=1"); writer.WriteLine(""); writer.WriteLine("# font settings"); writer.WriteLine("fontName=" + font.m_FontName); writer.WriteLine("charSet=0"); writer.WriteLine("fontSize=" + font.m_FontSize); writer.WriteLine("aa=1"); writer.WriteLine("scaleH=100"); writer.WriteLine("useSmoothing=1"); writer.WriteLine("isBold=" + ((font.m_Bold) ? 1 : 0)); writer.WriteLine("isItalic=0"); writer.WriteLine("useUnicode=1"); writer.WriteLine("disableBoxChars=1"); writer.WriteLine("outputInvalidCharGlyph=0"); writer.WriteLine(""); writer.WriteLine("# character alignment"); writer.WriteLine("paddingDown=" + font.m_Outline); writer.WriteLine("paddingUp=" + font.m_Outline); writer.WriteLine("paddingRight=" + font.m_Outline); writer.WriteLine("paddingLeft=" + font.m_Outline); writer.WriteLine("spacingHoriz=" + (1 + font.m_Outline)); writer.WriteLine("spacingVert=" + (1 + font.m_Outline)); writer.WriteLine(""); writer.WriteLine("# output file"); writer.WriteLine("outWidth=" + font.m_TextureWidth); writer.WriteLine("outHeight=" + font.m_TextureWidth); writer.WriteLine("outBitDepth=32"); writer.WriteLine("fontDescFormat=1"); writer.WriteLine("fourChnlPacked=0"); writer.WriteLine("textureFormat=png"); writer.WriteLine("textureCompression=0"); writer.WriteLine("alphaChnl=2"); writer.WriteLine("redChnl=0"); writer.WriteLine("greenChnl=0"); writer.WriteLine("blueChnl=0"); writer.WriteLine("invA=0"); writer.WriteLine("invR=0"); writer.WriteLine("invG=0"); writer.WriteLine("invB=0"); writer.WriteLine(""); writer.WriteLine("# outline"); writer.WriteLine("outlineThickness=" + 0);//a_oFont.m_iOutline); writer.WriteLine(""); writer.WriteLine("# selected chars"); writer.Write("chars="); int iLineCount = 0; foreach (char c in pCharacterList) { //write out a line for each key that creates a # define that can be used in C++ writer.Write((int)c + ","); //once we've written 10 if (iLineCount++ > 10) { //go to the next line writer.Write("\nchars="); iLineCount -= 10; } } //close the binary writer writer.Close(); } }
private static void ReadFontDeclaration() { using (XmlReader reader = XmlReader.Create("Fonts.xml")) { while (reader.Read()) { if (reader.Name == "Font") { FontDeclaration font = new FontDeclaration(); font.m_Language = reader.GetAttribute("Language"); font.m_FileName = reader.GetAttribute("ConfigFileName"); font.m_FontName = reader.GetAttribute("Name"); font.m_Bold = (reader.GetAttribute("Bold") == "True"); font.m_FontSize = int.Parse(reader.GetAttribute("Size")); font.m_Outline = int.Parse(reader.GetAttribute("Outline")); font.m_TextureWidth = int.Parse(reader.GetAttribute("TextureWidth")); m_pFontList.Add(font); } } } }