parse static method
Implementation
static UPdfTrueType? parse(Uint8List bytes) {
try {
if (bytes.length < 12) return null;
final UDocCursor cursor = UDocCursor(bytes);
int tableStart = 0;
final int tag = cursor.u32();
if (tag == 0x74746366) {
cursor.skip(4);
final int count = cursor.u32();
if (count == 0) return null;
tableStart = cursor.u32();
cursor.seek(tableStart);
cursor.u32();
} else if (tag != 0x00010000 && tag != 0x4F54544F && tag != 0x74727565) {
return null;
}
final int numTables = cursor.u16();
cursor.skip(6);
final Map<String, List<int>> tables = <String, List<int>>{};
for (int i = 0; i < numTables && i < 512; i++) {
if (cursor.remaining < 16) break;
final String name = cursor.ascii(4);
cursor.skip(4);
final int offset = cursor.u32();
final int length = cursor.u32();
if (offset >= 0 && offset < bytes.length) tables[name] = <int>[offset, length];
}
final UPdfTrueType font = UPdfTrueType._(bytes, tables);
font._readTables();
return font;
} on Object {
return null;
}
}