4 * Copyright (C) 2011-2014 by Werner Lemberg.
6 * This file is part of the ttfautohint library, and may only be used,
7 * modified, and distributed under the terms given in `COPYING'. By
8 * continuing to use, modify, or distribute this file you indicate that you
9 * have read `COPYING' and understand and accept it fully.
11 * The file `COPYING' mentioned in the previous paragraph is distributed
12 * with the ttfautohint library.
20 TA_font_init(FONT
* font
)
24 FT_Int major
, minor
, patch
;
27 error
= FT_Init_FreeType(&font
->lib
);
31 /* assure correct FreeType version to avoid using the wrong DLL */
32 FT_Library_Version(font
->lib
, &major
, &minor
, &patch
);
33 if (((major
*1000 + minor
)*1000 + patch
) < 2004005)
34 return TA_Err_Invalid_FreeType_Version
;
36 /* get number of faces (i.e. subfonts) */
37 error
= FT_New_Memory_Face(font
->lib
, font
->in_buf
, font
->in_len
, -1, &f
);
40 font
->num_sfnts
= f
->num_faces
;
43 /* it is a TTC if we have more than a single subfont */
44 font
->sfnts
= (SFNT
*)calloc(1, font
->num_sfnts
* sizeof (SFNT
));
46 return FT_Err_Out_Of_Memory
;
53 TA_font_unload(FONT
* font
,
56 const char* deltas_buf
)
58 /* in case of error it is expected that unallocated pointers */
59 /* are NULL (and counters are zero) */
72 for (i
= 0; i
< font
->num_tables
; i
++)
74 free(font
->tables
[i
].buf
);
75 if (font
->tables
[i
].data
)
77 if (font
->tables
[i
].tag
== TTAG_glyf
)
79 glyf_Data
* data
= (glyf_Data
*)font
->tables
[i
].data
;
83 for (j
= 0; j
< data
->num_glyphs
; j
++)
85 free(data
->glyphs
[j
].buf
);
86 free(data
->glyphs
[j
].ins_buf
);
87 free(data
->glyphs
[j
].components
);
88 free(data
->glyphs
[j
].pointsums
);
103 for (i
= 0; i
< font
->num_sfnts
; i
++)
105 FT_Done_Face(font
->sfnts
[i
].face
);
106 free(font
->sfnts
[i
].table_infos
);
111 number_set_free(font
->x_height_snapping_exceptions
);
113 FT_Done_FreeType(font
->lib
);
115 /* in case the user provided file handles, */
116 /* free the allocated buffers for the file contents */
122 free(font
->deltas_buf
);
126 /* end of tafont.c */