blob: 010a147e45b2a7067a4810f2b529f1f18948b1d8 (
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
36
37
38
39
40
41
42
43
44
|
#ifndef SFNT_H_
#define SFNT_H_
#include <stdint.h>
enum {
CONTAINER_TTF,
CONTAINER_TTC,
CONTAINER_DFONT
};
enum {
SFNT_COPYRIGHT,
SFNT_FAMILY,
SFNT_SUBFAMILY,
SFNT_SUBFAMILY_UNIQUE,
SFNT_FULL_NAME,
SFNT_VERSION,
SFNT_POSTSCRIPT,
//TODO: add the rest of the name IDs
};
typedef struct sfnt_container sfnt_container;
typedef struct {
uint8_t *data;
sfnt_container *container;
uint32_t offset;
uint16_t num_entries;
} sfnt_table;
struct sfnt_container {
uint8_t *blob;
sfnt_table *tables;
uint32_t size;
uint8_t num_fonts;
uint8_t container_type;
};
sfnt_container *load_sfnt(uint8_t *buffer, uint32_t size);
char *sfnt_name(sfnt_table *sfnt, uint16_t name_type);
uint8_t *sfnt_flatten(sfnt_table *sfnt, uint32_t *size_out);
sfnt_table *sfnt_subfamily_by_names(sfnt_container *sfnt, const char **names);
void sfnt_free(sfnt_container *sfnt);
#endif // SFNT_H_
|