parse static method

UPdfTrueType? parse(
  1. Uint8List bytes
)

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;
  }
}