BitmapFontWriter.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Microsoft.Xna.Framework.Content.Pipeline;
  2. using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler;
  3. using MonoGame.Extended.BitmapFonts;
  4. using MonoGame.Extended.Content.ContentReaders;
  5. namespace MonoGame.Extended.Content.Pipeline.BitmapFonts
  6. {
  7. [ContentTypeWriter]
  8. public class BitmapFontWriter : ContentTypeWriter<BitmapFontProcessorResult>
  9. {
  10. protected override void Write(ContentWriter writer, BitmapFontProcessorResult result)
  11. {
  12. writer.Write(result.TextureAssets.Count);
  13. foreach (var textureAsset in result.TextureAssets)
  14. writer.Write(textureAsset);
  15. var fontFile = result.FontFile;
  16. writer.Write(fontFile.FontName);
  17. writer.Write(fontFile.Info.FontSize);
  18. writer.Write(fontFile.Common.LineHeight);
  19. writer.Write(fontFile.Info.SpacingHoriz);
  20. writer.Write(fontFile.Info.SpacingVert);
  21. writer.Write(fontFile.Characters.Count);
  22. foreach (var c in fontFile.Characters)
  23. {
  24. writer.Write(c.ID);
  25. writer.Write(c.Page);
  26. writer.Write(c.X);
  27. writer.Write(c.Y);
  28. writer.Write(c.Width);
  29. writer.Write(c.Height);
  30. writer.Write(c.XOffset);
  31. writer.Write(c.YOffset);
  32. writer.Write(c.XAdvance);
  33. }
  34. writer.Write(fontFile.Kernings.Count);
  35. foreach(var k in fontFile.Kernings)
  36. {
  37. writer.Write(k.First);
  38. writer.Write(k.Second);
  39. writer.Write(k.Amount);
  40. }
  41. }
  42. public override string GetRuntimeType(TargetPlatform targetPlatform)
  43. {
  44. return typeof(BitmapFont).AssemblyQualifiedName;
  45. }
  46. public override string GetRuntimeReader(TargetPlatform targetPlatform)
  47. {
  48. return typeof(BitmapFontContentReader).AssemblyQualifiedName;
  49. }
  50. }
  51. }