digraph { rankdir=LR; node [shape=plaintext]; subgraph cluster__ttf { label="Ttf"; graph[style=dotted]; ttf__seq [label=<
pos | size | type | id |
0 | 12 | OffsetTable | offset_table |
12 | 16 | DirTableEntry | directory_table |
repeat offset_table.num_tables times |
pos | size | type | id |
0 | 4 | Fixed | format |
4 | 4 | Fixed | italic_angle |
8 | 2 | s2be | underline_position |
10 | 2 | s2be | underline_thichness |
12 | 4 | u4be | is_fixed_pitch |
16 | 4 | u4be | min_mem_type42 |
20 | 4 | u4be | max_mem_type42 |
24 | 4 | u4be | min_mem_type1 |
28 | 4 | u4be | max_mem_type1 |
32 | ... | Format20 | format20 |
pos | size | type | id |
0 | 2 | u2be | number_of_glyphs |
2 | 2 | u2be | glyph_name_index |
repeat number_of_glyphs times | |||
... | ... | PascalString | glyph_names |
repeat until ((_.length == 0) || (_io.eof?)) |
pos | size | type | id |
0 | 1 | u1 | length |
1 | length | str(ascii) | value |
pos | size | type | id |
0 | 2 | u2be | format_selector |
2 | 2 | u2be | num_name_records |
4 | 2 | u2be | ofs_strings |
6 | 12 | NameRecord | name_records |
repeat num_name_records times |
pos | size | type | id |
0 | 2 | u2be→Platforms | platform_id |
2 | 2 | u2be | encoding_id |
4 | 2 | u2be | language_id |
6 | 2 | u2be→Names | name_id |
8 | 2 | u2be | len_str |
10 | 2 | u2be | ofs_str |
pos | size | type | id |
(_parent.ofs_strings + ofs_str) | len_str | str(ascii) | ascii_value |
pos | size | type | id |
(_parent.ofs_strings + ofs_str) | len_str | str(utf-16be) | unicode_value |
pos | size | type | id |
0 | 4 | Fixed | version |
4 | 4 | Fixed | font_revision |
8 | 4 | u4be | checksum_adjustment |
12 | 4 | magic_number | |
16 | 2 | u2be→Flags | flags |
18 | 2 | u2be | units_per_em |
20 | 8 | u8be | created |
28 | 8 | u8be | modified |
36 | 2 | s2be | x_min |
38 | 2 | s2be | y_min |
40 | 2 | s2be | x_max |
42 | 2 | s2be | y_max |
44 | 2 | u2be | mac_style |
46 | 2 | u2be | lowest_rec_ppem |
48 | 2 | s2be→FontDirectionHint | font_direction_hint |
50 | 2 | s2be | index_to_loc_format |
52 | 2 | s2be | glyph_data_format |
pos | size | type | id |
0 | ⇲ | instructions |
pos | size | type | id |
0 | 4 | Fixed | version |
4 | 2 | s2be | ascender |
6 | 2 | s2be | descender |
8 | 2 | s2be | line_gap |
10 | 2 | u2be | advance_width_max |
12 | 2 | s2be | min_left_side_bearing |
14 | 2 | s2be | min_right_side_bearing |
16 | 2 | s2be | x_max_extend |
18 | 2 | s2be | caret_slope_rise |
20 | 2 | s2be | caret_slope_run |
22 | 10 | reserved | |
32 | 2 | s2be | metric_data_format |
34 | 2 | u2be | number_of_hmetrics |
pos | size | type | id |
0 | ⇲ | instructions |
pos | size | type | id |
0 | 2 | u2be | version |
2 | 2 | u2be | subtable_count |
4 | ... | Subtable | subtables |
repeat subtable_count times |
pos | size | type | id |
0 | 2 | u2be | version |
2 | 2 | u2be | length |
4 | 1 | u1 | format |
5 | 4b | b4 | reserved |
5:4 | 1b | BitsType1(BigBitEndian) | is_override |
5:5 | 1b | BitsType1(BigBitEndian) | is_cross_stream |
5:6 | 1b | BitsType1(BigBitEndian) | is_minimum |
5:7 | 1b | BitsType1(BigBitEndian) | is_horizontal |
6 | ... | Format0 | format0 |
pos | size | type | id |
0 | 2 | u2be | pair_count |
2 | 2 | u2be | search_range |
4 | 2 | u2be | entry_selector |
6 | 2 | u2be | range_shift |
8 | 6 | KerningPair | kerning_pairs |
repeat pair_count times |
pos | size | type | id |
0 | 2 | u2be | left |
2 | 2 | u2be | right |
4 | 2 | s2be | value |
pos | size | type | id |
0 | 4 | str(ascii) | tag |
4 | 4 | u4be | checksum |
8 | 4 | u4be | offset |
12 | 4 | u4be | length |
pos | size | type | id |
offset | ... | switch (tag) | value |
case | type |
"head" | Head |
"cvt " | Cvt |
"prep" | Prep |
"kern" | Kern |
"hhea" | Hhea |
"post" | Post |
"OS/2" | Os2 |
"name" | Name |
"maxp" | Maxp |
"glyf" | Glyf |
"fpgm" | Fpgm |
"cmap" | Cmap |
pos | size | type | id |
0 | 2 | u2be | version |
2 | 2 | s2be | x_avg_char_width |
4 | 2 | u2be→WeightClass | weight_class |
6 | 2 | u2be→WidthClass | width_class |
8 | 2 | s2be→FsType | fs_type |
10 | 2 | s2be | y_subscript_x_size |
12 | 2 | s2be | y_subscript_y_size |
14 | 2 | s2be | y_subscript_x_offset |
16 | 2 | s2be | y_subscript_y_offset |
18 | 2 | s2be | y_superscript_x_size |
20 | 2 | s2be | y_superscript_y_size |
22 | 2 | s2be | y_superscript_x_offset |
24 | 2 | s2be | y_superscript_y_offset |
26 | 2 | s2be | y_strikeout_size |
28 | 2 | s2be | y_strikeout_position |
30 | 2 | s2be | s_family_class |
32 | 10 | Panose | panose |
42 | 126b | UnicodeRange | unicode_range |
57:6 | 4 | str(ascii) | ach_vend_id |
61:6 | 2 | u2be→FsSelection | selection |
63:6 | 2 | u2be | first_char_index |
65:6 | 2 | u2be | last_char_index |
67:6 | 2 | s2be | typo_ascender |
69:6 | 2 | s2be | typo_descender |
71:6 | 2 | s2be | typo_line_gap |
73:6 | 2 | u2be | win_ascent |
75:6 | 2 | u2be | win_descent |
77:6 | 8 | CodePageRange | code_page_range |
pos | size | type | id |
0 | 1 | u1→FamilyKind | family_type |
1 | 1 | u1→SerifStyle | serif_style |
2 | 1 | u1→Weight | weight |
3 | 1 | u1→Proportion | proportion |
4 | 1 | u1→Contrast | contrast |
5 | 1 | u1→StrokeVariation | stroke_variation |
6 | 1 | u1→ArmStyle | arm_style |
7 | 1 | u1→LetterForm | letter_form |
8 | 1 | u1→Midline | midline |
9 | 1 | u1→XHeight | x_height |
pos | size | type | id |
0 | 1b | BitsType1(BigBitEndian) | basic_latin |
0:1 | 1b | BitsType1(BigBitEndian) | latin_1_supplement |
0:2 | 1b | BitsType1(BigBitEndian) | latin_extended_a |
0:3 | 1b | BitsType1(BigBitEndian) | latin_extended_b |
0:4 | 1b | BitsType1(BigBitEndian) | ipa_extensions |
0:5 | 1b | BitsType1(BigBitEndian) | spacing_modifier_letters |
0:6 | 1b | BitsType1(BigBitEndian) | combining_diacritical_marks |
0:7 | 1b | BitsType1(BigBitEndian) | basic_greek |
1 | 1b | BitsType1(BigBitEndian) | greek_symbols_and_coptic |
1:1 | 1b | BitsType1(BigBitEndian) | cyrillic |
1:2 | 1b | BitsType1(BigBitEndian) | armenian |
1:3 | 1b | BitsType1(BigBitEndian) | basic_hebrew |
1:4 | 1b | BitsType1(BigBitEndian) | hebrew_extended |
1:5 | 1b | BitsType1(BigBitEndian) | basic_arabic |
1:6 | 1b | BitsType1(BigBitEndian) | arabic_extended |
1:7 | 1b | BitsType1(BigBitEndian) | devanagari |
2 | 1b | BitsType1(BigBitEndian) | bengali |
2:1 | 1b | BitsType1(BigBitEndian) | gurmukhi |
2:2 | 1b | BitsType1(BigBitEndian) | gujarati |
2:3 | 1b | BitsType1(BigBitEndian) | oriya |
2:4 | 1b | BitsType1(BigBitEndian) | tamil |
2:5 | 1b | BitsType1(BigBitEndian) | telugu |
2:6 | 1b | BitsType1(BigBitEndian) | kannada |
2:7 | 1b | BitsType1(BigBitEndian) | malayalam |
3 | 1b | BitsType1(BigBitEndian) | thai |
3:1 | 1b | BitsType1(BigBitEndian) | lao |
3:2 | 1b | BitsType1(BigBitEndian) | basic_georgian |
3:3 | 1b | BitsType1(BigBitEndian) | georgian_extended |
3:4 | 1b | BitsType1(BigBitEndian) | hangul_jamo |
3:5 | 1b | BitsType1(BigBitEndian) | latin_extended_additional |
3:6 | 1b | BitsType1(BigBitEndian) | greek_extended |
3:7 | 1b | BitsType1(BigBitEndian) | general_punctuation |
4 | 1b | BitsType1(BigBitEndian) | superscripts_and_subscripts |
4:1 | 1b | BitsType1(BigBitEndian) | currency_symbols |
4:2 | 1b | BitsType1(BigBitEndian) | combining_diacritical_marks_for_symbols |
4:3 | 1b | BitsType1(BigBitEndian) | letterlike_symbols |
4:4 | 1b | BitsType1(BigBitEndian) | number_forms |
4:5 | 1b | BitsType1(BigBitEndian) | arrows |
4:6 | 1b | BitsType1(BigBitEndian) | mathematical_operators |
4:7 | 1b | BitsType1(BigBitEndian) | miscellaneous_technical |
5 | 1b | BitsType1(BigBitEndian) | control_pictures |
5:1 | 1b | BitsType1(BigBitEndian) | optical_character_recognition |
5:2 | 1b | BitsType1(BigBitEndian) | enclosed_alphanumerics |
5:3 | 1b | BitsType1(BigBitEndian) | box_drawing |
5:4 | 1b | BitsType1(BigBitEndian) | block_elements |
5:5 | 1b | BitsType1(BigBitEndian) | geometric_shapes |
5:6 | 1b | BitsType1(BigBitEndian) | miscellaneous_symbols |
5:7 | 1b | BitsType1(BigBitEndian) | dingbats |
6 | 1b | BitsType1(BigBitEndian) | cjk_symbols_and_punctuation |
6:1 | 1b | BitsType1(BigBitEndian) | hiragana |
6:2 | 1b | BitsType1(BigBitEndian) | katakana |
6:3 | 1b | BitsType1(BigBitEndian) | bopomofo |
6:4 | 1b | BitsType1(BigBitEndian) | hangul_compatibility_jamo |
6:5 | 1b | BitsType1(BigBitEndian) | cjk_miscellaneous |
6:6 | 1b | BitsType1(BigBitEndian) | enclosed_cjk_letters_and_months |
6:7 | 1b | BitsType1(BigBitEndian) | cjk_compatibility |
7 | 1b | BitsType1(BigBitEndian) | hangul |
7:1 | 1b | BitsType1(BigBitEndian) | reserved_for_unicode_subranges1 |
7:2 | 1b | BitsType1(BigBitEndian) | reserved_for_unicode_subranges2 |
7:3 | 1b | BitsType1(BigBitEndian) | cjk_unified_ideographs |
7:4 | 1b | BitsType1(BigBitEndian) | private_use_area |
7:5 | 1b | BitsType1(BigBitEndian) | cjk_compatibility_ideographs |
7:6 | 1b | BitsType1(BigBitEndian) | alphabetic_presentation_forms |
7:7 | 1b | BitsType1(BigBitEndian) | arabic_presentation_forms_a |
8 | 1b | BitsType1(BigBitEndian) | combining_half_marks |
8:1 | 1b | BitsType1(BigBitEndian) | cjk_compatibility_forms |
8:2 | 1b | BitsType1(BigBitEndian) | small_form_variants |
8:3 | 1b | BitsType1(BigBitEndian) | arabic_presentation_forms_b |
8:4 | 1b | BitsType1(BigBitEndian) | halfwidth_and_fullwidth_forms |
8:5 | 1b | BitsType1(BigBitEndian) | specials |
8:6 | 7 | reserved |
pos | size | type | id |
0 | 1b | BitsType1(BigBitEndian) | symbol_character_set |
0:1 | 1b | BitsType1(BigBitEndian) | oem_character_set |
0:2 | 1b | BitsType1(BigBitEndian) | macintosh_character_set |
0:3 | 7b | b7 | reserved_for_alternate_ansi_oem |
1:2 | 1b | BitsType1(BigBitEndian) | cp1361_korean_johab |
1:3 | 1b | BitsType1(BigBitEndian) | cp950_chinese_traditional_chars_taiwan_and_hong_kong |
1:4 | 1b | BitsType1(BigBitEndian) | cp949_korean_wansung |
1:5 | 1b | BitsType1(BigBitEndian) | cp936_chinese_simplified_chars_prc_and_singapore |
1:6 | 1b | BitsType1(BigBitEndian) | cp932_jis_japan |
1:7 | 1b | BitsType1(BigBitEndian) | cp874_thai |
2 | 1 | b8 | reserved_for_alternate_ansi |
3 | 1b | BitsType1(BigBitEndian) | cp1257_windows_baltic |
3:1 | 1b | BitsType1(BigBitEndian) | cp1256_arabic |
3:2 | 1b | BitsType1(BigBitEndian) | cp1255_hebrew |
3:3 | 1b | BitsType1(BigBitEndian) | cp1254_turkish |
3:4 | 1b | BitsType1(BigBitEndian) | cp1253_greek |
3:5 | 1b | BitsType1(BigBitEndian) | cp1251_cyrillic |
3:6 | 1b | BitsType1(BigBitEndian) | cp1250_latin_2_eastern_europe |
3:7 | 1b | BitsType1(BigBitEndian) | cp1252_latin_1 |
4 | 1b | BitsType1(BigBitEndian) | cp437_us |
4:1 | 1b | BitsType1(BigBitEndian) | cp850_we_latin_1 |
4:2 | 1b | BitsType1(BigBitEndian) | cp708_arabic_asmo_708 |
4:3 | 1b | BitsType1(BigBitEndian) | cp737_greek_former_437_g |
4:4 | 1b | BitsType1(BigBitEndian) | cp775_ms_dos_baltic |
4:5 | 1b | BitsType1(BigBitEndian) | cp852_latin_2 |
4:6 | 1b | BitsType1(BigBitEndian) | cp855_ibm_cyrillic_primarily_russian |
4:7 | 1b | BitsType1(BigBitEndian) | cp857_ibm_turkish |
5 | 1b | BitsType1(BigBitEndian) | cp860_ms_dos_portuguese |
5:1 | 1b | BitsType1(BigBitEndian) | cp861_ms_dos_icelandic |
5:2 | 1b | BitsType1(BigBitEndian) | cp862_hebrew |
5:3 | 1b | BitsType1(BigBitEndian) | cp863_ms_dos_canadian_french |
5:4 | 1b | BitsType1(BigBitEndian) | cp864_arabic |
5:5 | 1b | BitsType1(BigBitEndian) | cp865_ms_dos_nordic |
5:6 | 1b | BitsType1(BigBitEndian) | cp866_ms_dos_russian |
5:7 | 1b | BitsType1(BigBitEndian) | cp869_ibm_greek |
6 | 2 | b16 | reserved_for_oem |
pos | size | type | id |
0 | 2 | u2be | major |
2 | 2 | u2be | minor |
pos | size | type | id |
0 | 2 | s2be | number_of_contours |
2 | 2 | s2be | x_min |
4 | 2 | s2be | y_min |
6 | 2 | s2be | x_max |
8 | 2 | s2be | y_max |
10 | ... | SimpleGlyph | value |
pos | size | type | id |
0 | 2 | u2be | end_pts_of_contours |
repeat _parent.number_of_contours times | |||
... | 2 | u2be | instruction_length |
... | instruction_length | instructions | |
... | 2 | Flag | flags |
repeat point_count times |
id | value |
point_count | (end_pts_of_contours.max + 1) |
pos | size | type | id |
0 | 2b | b2 | reserved |
0:2 | 1b | BitsType1(BigBitEndian) | y_is_same |
0:3 | 1b | BitsType1(BigBitEndian) | x_is_same |
0:4 | 1b | BitsType1(BigBitEndian) | repeat |
0:5 | 1b | BitsType1(BigBitEndian) | y_short_vector |
0:6 | 1b | BitsType1(BigBitEndian) | x_short_vector |
0:7 | 1b | BitsType1(BigBitEndian) | on_curve |
1 | 1 | u1 | repeat_value |
pos | size | type | id |
0 | 2 | s2be | fwords |
repeat to end of stream |
pos | size | type | id |
0 | 4 | Fixed | table_version_number |
4 | 2 | u2be | num_glyphs |
6 | 26 | MaxpVersion10Body | version10_body |
id | value |
is_version10 | ((table_version_number.major == 1) && (table_version_number.minor == 0)) |
pos | size | type | id |
0 | 2 | u2be | max_points |
2 | 2 | u2be | max_contours |
4 | 2 | u2be | max_composite_points |
6 | 2 | u2be | max_composite_contours |
8 | 2 | u2be | max_zones |
10 | 2 | u2be | max_twilight_points |
12 | 2 | u2be | max_storage |
14 | 2 | u2be | max_function_defs |
16 | 2 | u2be | max_instruction_defs |
18 | 2 | u2be | max_stack_elements |
20 | 2 | u2be | max_size_of_instructions |
22 | 2 | u2be | max_component_elements |
24 | 2 | u2be | max_component_depth |
pos | size | type | id |
0 | 4 | Fixed | sfnt_version |
4 | 2 | u2be | num_tables |
6 | 2 | u2be | search_range |
8 | 2 | u2be | entry_selector |
10 | 2 | u2be | range_shift |
pos | size | type | id |
0 | 2 | u2be | version_number |
2 | 2 | u2be | number_of_encoding_tables |
4 | 8 | SubtableHeader | tables |
repeat number_of_encoding_tables times |
pos | size | type | id |
0 | 2 | u2be | platform_id |
2 | 2 | u2be | encoding_id |
4 | 4 | u4be | subtable_offset |
pos | size | type | id |
subtable_offset | ... | Subtable | table |
pos | size | type | id |
0 | 2 | u2be→SubtableFormat | format |
2 | 2 | u2be | length |
4 | 2 | u2be | version |
6 | ... | switch (format) | value |
case | type |
:subtable_format_byte_encoding_table | ByteEncodingTable |
:subtable_format_segment_mapping_to_delta_values | SegmentMappingToDeltaValues |
:subtable_format_high_byte_mapping_through_table | HighByteMappingThroughTable |
:subtable_format_trimmed_table_mapping | TrimmedTableMapping |
pos | size | type | id |
0 | 256 | glyph_id_array |
pos | size | type | id |
0 | 2 | u2be | sub_header_keys |
repeat 256 times |
pos | size | type | id |
0 | 2 | u2be | seg_count_x2 |
2 | 2 | u2be | search_range |
4 | 2 | u2be | entry_selector |
6 | 2 | u2be | range_shift |
8 | 2 | u2be | end_count |
repeat seg_count times | |||
... | 2 | u2be | reserved_pad |
... | 2 | u2be | start_count |
repeat seg_count times | |||
... | 2 | u2be | id_delta |
repeat seg_count times | |||
... | 2 | u2be | id_range_offset |
repeat seg_count times | |||
... | 2 | u2be | glyph_id_array |
repeat to end of stream |
id | value |
seg_count | (seg_count_x2 / 2) |
pos | size | type | id |
0 | 2 | u2be | first_code |
2 | 2 | u2be | entry_count |
4 | 2 | u2be | glyph_id_array |
repeat entry_count times |