private static void SaveFont(FfntFile ffntFile, string fileName, string outputPath) { XmlSerializer serializer = new XmlSerializer(typeof(FfntFile), new[] { typeof(GlyphMap), typeof(FontData) }); string outputFilePath = Path.Combine(outputPath, fileName + ".xml"); using (var outputStream = new FileStream(outputFilePath, FileMode.Create)) { serializer.Serialize(outputStream, ffntFile); } }
private static void PackFfnt(string path, string fileName, string outputPath) { string outputFilePath = Path.Combine(outputPath, fileName + ".ffnt"); using (FileStream fontInputStream = new FileStream(path, FileMode.Open)) using (FileStream outputStream = new FileStream(outputFilePath, FileMode.Create)) { XmlSerializer serializer = new XmlSerializer(typeof(FfntFile), new[] { typeof(GlyphMap), typeof(FontData) }); FfntFile ffntFile = serializer.Deserialize(fontInputStream) as FfntFile; if (ffntFile != null) { ffntFile.Entries.OfType <FontData>().Single().Data = ReadFontLayers(Path.GetDirectoryName(path), fileName); ffntFile.Write(outputStream); } } }
private static void UnpackFfnt(string path, string fileName, string outputPath) { using (FileStream inputStream = new FileStream(path, FileMode.Open)) { FfntFile ffntFile = FfntFile.ReadFfntFile(inputStream); if (ffntFile.Entries.Count != 2) { return; } GlyphMap glyphMap = ffntFile.Entries.ElementAt(0) as GlyphMap; FontData fontData = ffntFile.Entries.ElementAt(1) as FontData; if (glyphMap == null || fontData == null) { return; } SaveFont(ffntFile, fileName, outputPath); SaveFontLayers(fontData.Data, fileName, outputPath); } }