summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/mfluadir/otfcc/lib/table/otl/subtables/extend.c
blob: 4b64449d0b4acb0e2ab594b133f8e843d15b007d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "extend.h"

// Extended tables are special
// We will only deal with reading, and they will be flatten.
static otl_Subtable *_caryll_read_otl_extend(font_file_pointer data, uint32_t tableLength,
                                             uint32_t subtableOffset, otl_LookupType BASIS,
                                             const glyphid_t maxGlyphs,
                                             const otfcc_Options *options) {
	otl_Subtable *_subtable;
	NEW(_subtable);
	checkLength(subtableOffset + 8);
	subtable_extend *subtable = &(_subtable->extend);
	subtable->type = read_16u(data + subtableOffset + 2) + BASIS;
	subtable->subtable = otfcc_readOtl_subtable(
	    data, tableLength, subtableOffset + read_32u(data + subtableOffset + 4), subtable->type,
	    maxGlyphs, options);
	goto OK;
FAIL:
	FREE(_subtable);
OK:
	return _subtable;
}

otl_Subtable *otfcc_readOtl_gsub_extend(font_file_pointer data, uint32_t tableLength,
                                        uint32_t subtableOffset, const glyphid_t maxGlyphs,
                                        const otfcc_Options *options) {
	return _caryll_read_otl_extend(data, tableLength, subtableOffset, otl_type_gsub_unknown,
	                               maxGlyphs, options);
}
otl_Subtable *otfcc_readOtl_gpos_extend(font_file_pointer data, uint32_t tableLength,
                                        uint32_t subtableOffset, const glyphid_t maxGlyphs,
                                        const otfcc_Options *options) {
	return _caryll_read_otl_extend(data, tableLength, subtableOffset, otl_type_gpos_unknown,
	                               maxGlyphs, options);
}