private static void WriteBFN(EndianBinaryWriter stream, fontChars characters, byte[] encodedImageData) { stream.Write("FONTbfn1".ToCharArray()); stream.Write((int)0); stream.Write((int)4); for (int i = 0; i < 4; i++) { stream.Write((int)0); } stream.Write("INF1".ToCharArray()); stream.Write((int)0x20); stream.Write((int)0x12); stream.Write((short)6); stream.Write((short)0x15); stream.Write((short)0x18); stream.Write((short)0); for (int j = 0; j < 3; j++) { stream.Write((int)0); } stream.Write("GLY1".ToCharArray()); stream.Write((int)(encodedImageData.Count() + 0x20)); stream.Write((int)characters.count); stream.Write((short)32); stream.Write((short)32); stream.Write((int)0x2000); stream.Write((short)0); stream.Write((short)5); stream.Write((short)20); stream.Write((short)160); stream.Write((short)0x280); stream.Write((short)0); stream.Write(encodedImageData); stream.Write("MAP1".ToCharArray()); stream.Write((int)0x20); stream.Write((short)0); stream.Write((short)characters.@char[0].id); stream.Write((short)characters.@char[characters.count - 1].id); stream.Write((short)0); for (int k = 0; k < 4; k++) { stream.Write((int)0); } stream.Write("WID1".ToCharArray()); stream.Write((int)(0x20 + (characters.count * 2))); stream.Write((int)characters.count); foreach (fontCharsChar chara in characters.@char) { if (chara.xoffset < 0) { stream.Write((byte)-chara.xoffset); stream.Write((byte)chara.xadvance); } else { stream.Write((byte)chara.xoffset); stream.Write((byte)chara.xadvance); } } stream.BaseStream.Position = 8; stream.Write((int)stream.BaseStream.Length); }
private static void WriteBFN(EndianBinaryWriter stream, fontChars characters, byte[] encodedImageData) { stream.Write("FONTbfn1".ToCharArray()); stream.Write((int)0); stream.Write((int)4); for (int i = 0; i < 4; i++) { stream.Write((int)0); } stream.Write("INF1".ToCharArray()); stream.Write((int)0x20); stream.Write((int)0x12); stream.Write((short)6); stream.Write((short)0x15); stream.Write((short)0x18); stream.Write((short)0); for (int j = 0; j < 3; j++) { stream.Write((int)0); } stream.Write("GLY1".ToCharArray()); stream.Write((int)(encodedImageData.Count() + 0x20)); stream.Write((int)characters.count); stream.Write((short)32); stream.Write((short)32); stream.Write((int)0x2000); stream.Write((short)0); stream.Write((short)5); stream.Write((short)20); stream.Write((short)160); stream.Write((short)0x280); stream.Write((short)0); stream.Write(encodedImageData); stream.Write("MAP1".ToCharArray()); stream.Write((int)0x20); stream.Write((short)0); stream.Write((short)characters.@char[0].id); stream.Write((short)characters.@char[characters.count - 1].id); stream.Write((short)0); for (int k = 0; k < 4; k++) { stream.Write((int)0); } stream.Write("WID1".ToCharArray()); stream.Write((int)(0x20 + (characters.count * 2))); stream.Write((int)characters.count); foreach (fontCharsChar chara in characters.@char) { if (chara.xoffset < 0) { stream.Write((byte)-chara.xoffset); stream.Write((byte)chara.xadvance); } else { stream.Write((byte)chara.xoffset); stream.Write((byte)chara.xadvance); } } stream.BaseStream.Position = 8; stream.Write((int)stream.BaseStream.Length); }