public void ReadBinary(BinaryReader reader) { fontName.position = BinaryStreamOperator.ReadPosition(reader); fontFilename.position = BinaryStreamOperator.ReadPosition(reader); fontSize = BinaryStreamOperator.ReadSize(reader); unknown1 = BinaryStreamOperator.ReadBinary(reader, 16); fontSpritePosition = BinaryStreamOperator.ReadPosition(reader); long currentPosition = reader.BaseStream.Position; reader.BaseStream.Position = fontSpritePosition; fontSprite.x = BinaryStreamOperator.ReadInt16(reader); fontSprite.y = BinaryStreamOperator.ReadInt16(reader); fontSprite.w = BinaryStreamOperator.ReadInt16(reader); fontSprite.h = BinaryStreamOperator.ReadInt16(reader); reader.BaseStream.Position += 12; fontSprite.txtrIndex = BinaryStreamOperator.ReadInt16(reader); reader.BaseStream.Position = currentPosition; unknown2 = BinaryStreamOperator.ReadBinary(reader, 8); int glyphCount = BinaryStreamOperator.ReadSize(reader); int[] glyphPosition = new int[glyphCount]; for (int g = 0; g < glyphCount; g++) { glyphPosition[g] = BinaryStreamOperator.ReadPosition(reader); } for (int g = 0; g < glyphCount; g++) { Glyph glyph = new Glyph(); reader.BaseStream.Seek(glyphPosition[g], SeekOrigin.Begin); glyph.ReadBinary(reader); glyphList.Add(glyph); } }