protected function parseTtfTable()
{
$ttfHeader = unpack('nmajorVersion/' . 'nminorVersion/' . 'nnumberOfTables/' . 'nsearchRange/' . 'nentrySelector/' . 'nrangeShift', $this->read(0, 12));
$tableName = $this->read(12, 4);
$ttfTable = unpack('Nchecksum/' . 'Noffset/' . 'Nlength', $this->read(16, 12));
$ttfTable['name'] = $tableName;
$this->ttfHeader = new \ArrayObject($ttfHeader, \ArrayObject::ARRAY_AS_PROPS);
$this->ttfTable = new \ArrayObject($ttfTable, \ArrayObject::ARRAY_AS_PROPS);
$nameByteOffset = 28;
$tableByteOffset = 32;
for ($i = 0; $i < $this->ttfHeader->numberOfTables; $i++) {
$ttfTableName = $this->read($nameByteOffset, 4);
$ttfTable = unpack('Nchecksum/' . 'Noffset/' . 'Nlength', $this->read($tableByteOffset, 12));
$this->tableInfo[trim($ttfTableName)] = new \ArrayObject($ttfTable, \ArrayObject::ARRAY_AS_PROPS);
$nameByteOffset = $tableByteOffset + 12;
$tableByteOffset = $nameByteOffset + 4;
}
}