public void Write(FileWriter writer) { writer.ByteOrder = Syroot.BinaryData.ByteOrder.BigEndian; BlockCounter = 1; writer.WriteSignature("FFNT"); writer.Write(BOM); writer.CheckByteOrderMark(BOM); writer.Write(HeaderSize); writer.Write(Version); long _ofsFileSize = writer.Position; writer.Write(uint.MaxValue); long _ofsBlockNum = writer.Position; writer.Write((ushort)0); //BlockCount writer.Write((ushort)0); writer.SeekBegin(HeaderSize); FontSection.Write(writer, this); //Save Block Count using (writer.TemporarySeek(_ofsBlockNum, SeekOrigin.Begin)) { writer.Write((ushort)(BlockCounter + 1)); } //Save File size using (writer.TemporarySeek(_ofsFileSize, SeekOrigin.Begin)) { writer.Write((uint)(writer.BaseStream.Length)); } }
public void Write(FileWriter writer) { writer.ByteOrder = Syroot.BinaryData.ByteOrder.BigEndian; BlockCounter = 1; writer.WriteSignature(Signature); writer.Write(BOM); writer.CheckByteOrderMark(BOM); if (Signature == "TNFR") { writer.ReverseMagic = true; } long _ofsFileSize; long _ofsBlockNum; if (Platform == PlatformType.Wii) { writer.Write((ushort)Version); _ofsFileSize = writer.Position; writer.Write(uint.MaxValue); writer.Write(HeaderSize); _ofsBlockNum = writer.Position; writer.Write((ushort)0); //BlockCount } else { writer.Write(HeaderSize); writer.Write(Version); _ofsFileSize = writer.Position; writer.Write(uint.MaxValue); _ofsBlockNum = writer.Position; writer.Write((ushort)0); //BlockCount writer.Write((ushort)0); } writer.SeekBegin(HeaderSize); FontSection.Write(writer, this); if (KerningTable != null) { BlockCounter++; KerningTable.Write(writer, this); } //Save Block Count using (writer.TemporarySeek(_ofsBlockNum, SeekOrigin.Begin)) { writer.Write((ushort)(BlockCounter + 1)); } //Save File size using (writer.TemporarySeek(_ofsFileSize, SeekOrigin.Begin)) { writer.Write((uint)(writer.BaseStream.Length)); } }