public override void Open() { Close(); BinaryReader br = IOStream.GetBinaryReader(); int tableOffset = br.ReadInt32(); int dataOffset = br.ReadInt32(); int tableSize = dataOffset - tableOffset; byte[] table = null; if (tableSize != 0) { using (StreamSegment tableSegment = IOStream.GetStreamSegment(tableOffset, tableSize)) using (HalfByteStream tableStream = new HalfByteStream(tableSegment)) { table = new byte[tableSize * 2]; tableStream.EnsureRead(table, 0, table.Length); } } Table = table; if (!IOStream.IsEndOfStream()) { TimReader = new TimFileReader(IOStream.GetStreamSegment(IOStream.Position)); } }
public void WriteFontCharactersWidths(byte[] charactersWidths) { BinaryWriter bw = _output.GetBinaryWriter(); int tableSize = charactersWidths.Length / 2; const int tableOffset = 8; int dataOffset = tableOffset + tableSize; bw.Write(tableOffset); bw.Write(dataOffset); if (tableSize != 0) { using (HalfByteStream tableStream = new HalfByteStream(_output)) tableStream.Write(charactersWidths, 0, charactersWidths.Length); } }