} ttfpoint_t;
typedef struct _ttfglyph {
U16 advance;
- U16 bearing;
+ S16 bearing;
S16 xmin,ymin,xmax,ymax;
int code_size;
U8*code;
U16 underline_thickness;
} table_post_t;
+typedef struct _table_cvt {
+ S16*values;
+ int num;
+} table_cvt_t;
+
+typedef struct _table_gasp {
+ int num;
+ struct {
+ U16 size;
+ U16 behaviour;
+ } *records;
+} table_gasp_t;
+
+typedef struct _table_code {
+ U8*code;
+ int size;
+} table_code_t;
+
typedef struct _ttf {
- char*name;
+ char*family_name; /* nameId 1 */
+ char*subfamily_name; /* nameId 2 */
+ char*font_uid; /* nameId 3 */
+ char*full_name; /* nameId 4 */
+ char*version_string; /* nameId 5 */
+ char*postscript_name; /* nameId 6 */
ttf_table_t*tables;
table_os2_t*os2;
table_hea_t*hea;
table_post_t*post;
+ table_cvt_t*cvt;
+ table_gasp_t*gasp;
+ table_code_t*prep;
+ table_code_t*fpgm;
U16 flags;
char is_vertical;
S16 ascent;
- S16 descent;
+ S16 descent; // ymin, *not* negative ymin
S16 lineGap;
int num_glyphs;
void ttf_dump(ttf_t*ttf);
void ttf_destroy(ttf_t*ttf);
void ttf_save(ttf_t*ttf, const char*filename);
+void ttf_save_eot(ttf_t*ttf, const char*filename);
#endif