【发布时间】:2015-09-29 17:06:48
【问题描述】:
我正在尝试使用以下示例:http://www.faqstackoverflow.com/answered/using-a-bmp-image-as-font-in-monogame
这个概念似乎是合理的。我正在使用建议的工具生成的 .fnt。根据类中使用的 [Serialization],它看起来格式正确且有意义。
但是,每次我运行代码时都会收到此错误:“System.Xml.dll 中发生了 'System.InvalidOperationException' 类型的未处理异常
附加信息:XML 文档 (1, 1) 中存在错误。"
我在 StackExchange 和 google 周围狂热地寻找,并在来到这里发布我的问题之前尝试了很多东西。在我正在修改的 FontLoader 类中下面发布的 cmets 中,这些尝试留下的许多杂乱的结果仍然存在,我正在修改以尝试解决问题。无论如何切片,都会出现同样的错误,甚至更糟。
public class FontLoader
{
public static FontFile Load(String filename)
{
/* XmlSerializer deserializer = new XmlSerializer(typeof(FontFile));
TextReader textReader = new StreamReader(Encoding.UTF8.GetBytes(filename).ToString());
FontFile file = (FontFile)deserializer.Deserialize(textReader);
textReader.Close();
return file;*/
byte[] bytes = Encoding.UTF8.GetBytes(System.IO.File.ReadAllText(filename));
FontFile myInstance = null;
using (MemoryStream memStream = new MemoryStream(bytes))
{
XmlSerializer tokenSerializer = new XmlSerializer(typeof(FontFile));
myInstance = (FontFile)tokenSerializer.Deserialize(memStream);
Console.WriteLine(myInstance);
return myInstance;
}
/*
XmlSerializer deserializer = new XmlSerializer(typeof(FontFile));
TextReader textReader = new StreamReader(filename);
FontFile file = (FontFile)deserializer.Deserialize(textReader);
textReader.Close();
return file;*/
/* var xml = System.IO.File.ReadAllText(filename);
using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
{
XmlSerializer serializer = new XmlSerializer(typeof(FontFile));
FontFile file = (FontFile)serializer.Deserialize(stream);
return file;
}*/
/* var writer = new StringWriter();
var serializer = new XmlSerializer((filename.GetType()));
serializer.Serialize(writer, filename);
string xml = writer.ToString();
return xml;*/
}
}
我使用的字体是Arial,作为测试,所以应该可以使用。它从以下几行开始:
info face="Arial" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 outline=0
common lineHeight=32 base=26 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0
page id=0 file="arial_0.png"
chars count=191
char id=32 x=155 y=75 width=3 height=1 xoffset=-1 yoffset=31 xadvance=8 page=0 chnl=15
接着是许多具有相同结构的“char”行,然后是字距调整行,然后是一堆结构相同的“字距调整”行,如下所示:
kernings count=91
kerning first=32 second=65 amount=-2
如果序列化最终出现问题,我很抱歉冒充,但我没有看到它。请让我知道是否有人有解决方案。谢谢。
【问题讨论】:
标签: c# xml fonts bitmap monogame