OLD | NEW |
| (Empty) |
1 /***************************************************************************/ | |
2 /* */ | |
3 /* sfnt.h */ | |
4 /* */ | |
5 /* High-level `sfnt' driver interface (specification). */ | |
6 /* */ | |
7 /* Copyright 1996-2006, 2009, 2012-2013 by */ | |
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | |
9 /* */ | |
10 /* This file is part of the FreeType project, and may only be used, */ | |
11 /* modified, and distributed under the terms of the FreeType project */ | |
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | |
13 /* this file you indicate that you have read the license and */ | |
14 /* understand and accept it fully. */ | |
15 /* */ | |
16 /***************************************************************************/ | |
17 | |
18 | |
19 #ifndef __SFNT_H__ | |
20 #define __SFNT_H__ | |
21 | |
22 | |
23 #include "../../ft2build.h" | |
24 #include "ftdriver.h" | |
25 #include "tttypes.h" | |
26 | |
27 | |
28 FT_BEGIN_HEADER | |
29 | |
30 | |
31 /*************************************************************************/ | |
32 /* */ | |
33 /* <FuncType> */ | |
34 /* TT_Init_Face_Func */ | |
35 /* */ | |
36 /* <Description> */ | |
37 /* First part of the SFNT face object initialization. This finds */ | |
38 /* the face in a SFNT file or collection, and load its format tag in */ | |
39 /* face->format_tag. */ | |
40 /* */ | |
41 /* <Input> */ | |
42 /* stream :: The input stream. */ | |
43 /* */ | |
44 /* face :: A handle to the target face object. */ | |
45 /* */ | |
46 /* face_index :: The index of the TrueType font, if we are opening a */ | |
47 /* collection. */ | |
48 /* */ | |
49 /* num_params :: The number of additional parameters. */ | |
50 /* */ | |
51 /* params :: Optional additional parameters. */ | |
52 /* */ | |
53 /* <Return> */ | |
54 /* FreeType error code. 0 means success. */ | |
55 /* */ | |
56 /* <Note> */ | |
57 /* The stream cursor must be at the font file's origin. */ | |
58 /* */ | |
59 /* This function recognizes fonts embedded in a `TrueType */ | |
60 /* collection'. */ | |
61 /* */ | |
62 /* Once the format tag has been validated by the font driver, it */ | |
63 /* should then call the TT_Load_Face_Func() callback to read the rest */ | |
64 /* of the SFNT tables in the object. */ | |
65 /* */ | |
66 typedef FT_Error | |
67 (*TT_Init_Face_Func)( FT_Stream stream, | |
68 TT_Face face, | |
69 FT_Int face_index, | |
70 FT_Int num_params, | |
71 FT_Parameter* params ); | |
72 | |
73 | |
74 /*************************************************************************/ | |
75 /* */ | |
76 /* <FuncType> */ | |
77 /* TT_Load_Face_Func */ | |
78 /* */ | |
79 /* <Description> */ | |
80 /* Second part of the SFNT face object initialization. This loads */ | |
81 /* the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the */ | |
82 /* face object. */ | |
83 /* */ | |
84 /* <Input> */ | |
85 /* stream :: The input stream. */ | |
86 /* */ | |
87 /* face :: A handle to the target face object. */ | |
88 /* */ | |
89 /* face_index :: The index of the TrueType font, if we are opening a */ | |
90 /* collection. */ | |
91 /* */ | |
92 /* num_params :: The number of additional parameters. */ | |
93 /* */ | |
94 /* params :: Optional additional parameters. */ | |
95 /* */ | |
96 /* <Return> */ | |
97 /* FreeType error code. 0 means success. */ | |
98 /* */ | |
99 /* <Note> */ | |
100 /* This function must be called after TT_Init_Face_Func(). */ | |
101 /* */ | |
102 typedef FT_Error | |
103 (*TT_Load_Face_Func)( FT_Stream stream, | |
104 TT_Face face, | |
105 FT_Int face_index, | |
106 FT_Int num_params, | |
107 FT_Parameter* params ); | |
108 | |
109 | |
110 /*************************************************************************/ | |
111 /* */ | |
112 /* <FuncType> */ | |
113 /* TT_Done_Face_Func */ | |
114 /* */ | |
115 /* <Description> */ | |
116 /* A callback used to delete the common SFNT data from a face. */ | |
117 /* */ | |
118 /* <Input> */ | |
119 /* face :: A handle to the target face object. */ | |
120 /* */ | |
121 /* <Note> */ | |
122 /* This function does NOT destroy the face object. */ | |
123 /* */ | |
124 typedef void | |
125 (*TT_Done_Face_Func)( TT_Face face ); | |
126 | |
127 | |
128 /*************************************************************************/ | |
129 /* */ | |
130 /* <FuncType> */ | |
131 /* TT_Load_Any_Func */ | |
132 /* */ | |
133 /* <Description> */ | |
134 /* Load any font table into client memory. */ | |
135 /* */ | |
136 /* <Input> */ | |
137 /* face :: The face object to look for. */ | |
138 /* */ | |
139 /* tag :: The tag of table to load. Use the value 0 if you want */ | |
140 /* to access the whole font file, else set this parameter */ | |
141 /* to a valid TrueType table tag that you can forge with */ | |
142 /* the MAKE_TT_TAG macro. */ | |
143 /* */ | |
144 /* offset :: The starting offset in the table (or the file if */ | |
145 /* tag == 0). */ | |
146 /* */ | |
147 /* length :: The address of the decision variable: */ | |
148 /* */ | |
149 /* If length == NULL: */ | |
150 /* Loads the whole table. Returns an error if */ | |
151 /* `offset' == 0! */ | |
152 /* */ | |
153 /* If *length == 0: */ | |
154 /* Exits immediately; returning the length of the given */ | |
155 /* table or of the font file, depending on the value of */ | |
156 /* `tag'. */ | |
157 /* */ | |
158 /* If *length != 0: */ | |
159 /* Loads the next `length' bytes of table or font, */ | |
160 /* starting at offset `offset' (in table or font too). */ | |
161 /* */ | |
162 /* <Output> */ | |
163 /* buffer :: The address of target buffer. */ | |
164 /* */ | |
165 /* <Return> */ | |
166 /* TrueType error code. 0 means success. */ | |
167 /* */ | |
168 typedef FT_Error | |
169 (*TT_Load_Any_Func)( TT_Face face, | |
170 FT_ULong tag, | |
171 FT_Long offset, | |
172 FT_Byte *buffer, | |
173 FT_ULong* length ); | |
174 | |
175 | |
176 /*************************************************************************/ | |
177 /* */ | |
178 /* <FuncType> */ | |
179 /* TT_Find_SBit_Image_Func */ | |
180 /* */ | |
181 /* <Description> */ | |
182 /* Check whether an embedded bitmap (an `sbit') exists for a given */ | |
183 /* glyph, at a given strike. */ | |
184 /* */ | |
185 /* <Input> */ | |
186 /* face :: The target face object. */ | |
187 /* */ | |
188 /* glyph_index :: The glyph index. */ | |
189 /* */ | |
190 /* strike_index :: The current strike index. */ | |
191 /* */ | |
192 /* <Output> */ | |
193 /* arange :: The SBit range containing the glyph index. */ | |
194 /* */ | |
195 /* astrike :: The SBit strike containing the glyph index. */ | |
196 /* */ | |
197 /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ | |
198 /* */ | |
199 /* <Return> */ | |
200 /* FreeType error code. 0 means success. Returns */ | |
201 /* SFNT_Err_Invalid_Argument if no sbit exists for the requested */ | |
202 /* glyph. */ | |
203 /* */ | |
204 typedef FT_Error | |
205 (*TT_Find_SBit_Image_Func)( TT_Face face, | |
206 FT_UInt glyph_index, | |
207 FT_ULong strike_index, | |
208 TT_SBit_Range *arange, | |
209 TT_SBit_Strike *astrike, | |
210 FT_ULong *aglyph_offset ); | |
211 | |
212 | |
213 /*************************************************************************/ | |
214 /* */ | |
215 /* <FuncType> */ | |
216 /* TT_Load_SBit_Metrics_Func */ | |
217 /* */ | |
218 /* <Description> */ | |
219 /* Get the big metrics for a given embedded bitmap. */ | |
220 /* */ | |
221 /* <Input> */ | |
222 /* stream :: The input stream. */ | |
223 /* */ | |
224 /* range :: The SBit range containing the glyph. */ | |
225 /* */ | |
226 /* <Output> */ | |
227 /* big_metrics :: A big SBit metrics structure for the glyph. */ | |
228 /* */ | |
229 /* <Return> */ | |
230 /* FreeType error code. 0 means success. */ | |
231 /* */ | |
232 /* <Note> */ | |
233 /* The stream cursor must be positioned at the glyph's offset within */ | |
234 /* the `EBDT' table before the call. */ | |
235 /* */ | |
236 /* If the image format uses variable metrics, the stream cursor is */ | |
237 /* positioned just after the metrics header in the `EBDT' table on */ | |
238 /* function exit. */ | |
239 /* */ | |
240 typedef FT_Error | |
241 (*TT_Load_SBit_Metrics_Func)( FT_Stream stream, | |
242 TT_SBit_Range range, | |
243 TT_SBit_Metrics metrics ); | |
244 | |
245 | |
246 /*************************************************************************/ | |
247 /* */ | |
248 /* <FuncType> */ | |
249 /* TT_Load_SBit_Image_Func */ | |
250 /* */ | |
251 /* <Description> */ | |
252 /* Load a given glyph sbit image from the font resource. This also */ | |
253 /* returns its metrics. */ | |
254 /* */ | |
255 /* <Input> */ | |
256 /* face :: */ | |
257 /* The target face object. */ | |
258 /* */ | |
259 /* strike_index :: */ | |
260 /* The strike index. */ | |
261 /* */ | |
262 /* glyph_index :: */ | |
263 /* The current glyph index. */ | |
264 /* */ | |
265 /* load_flags :: */ | |
266 /* The current load flags. */ | |
267 /* */ | |
268 /* stream :: */ | |
269 /* The input stream. */ | |
270 /* */ | |
271 /* <Output> */ | |
272 /* amap :: */ | |
273 /* The target pixmap. */ | |
274 /* */ | |
275 /* ametrics :: */ | |
276 /* A big sbit metrics structure for the glyph image. */ | |
277 /* */ | |
278 /* <Return> */ | |
279 /* FreeType error code. 0 means success. Returns an error if no */ | |
280 /* glyph sbit exists for the index. */ | |
281 /* */ | |
282 /* <Note> */ | |
283 /* The `map.buffer' field is always freed before the glyph is loaded. */ | |
284 /* */ | |
285 typedef FT_Error | |
286 (*TT_Load_SBit_Image_Func)( TT_Face face, | |
287 FT_ULong strike_index, | |
288 FT_UInt glyph_index, | |
289 FT_UInt load_flags, | |
290 FT_Stream stream, | |
291 FT_Bitmap *amap, | |
292 TT_SBit_MetricsRec *ametrics ); | |
293 | |
294 | |
295 /*************************************************************************/ | |
296 /* */ | |
297 /* <FuncType> */ | |
298 /* TT_Set_SBit_Strike_Func */ | |
299 /* */ | |
300 /* <Description> */ | |
301 /* Select an sbit strike for a given size request. */ | |
302 /* */ | |
303 /* <Input> */ | |
304 /* face :: The target face object. */ | |
305 /* */ | |
306 /* req :: The size request. */ | |
307 /* */ | |
308 /* <Output> */ | |
309 /* astrike_index :: The index of the sbit strike. */ | |
310 /* */ | |
311 /* <Return> */ | |
312 /* FreeType error code. 0 means success. Returns an error if no */ | |
313 /* sbit strike exists for the selected ppem values. */ | |
314 /* */ | |
315 typedef FT_Error | |
316 (*TT_Set_SBit_Strike_Func)( TT_Face face, | |
317 FT_Size_Request req, | |
318 FT_ULong* astrike_index ); | |
319 | |
320 | |
321 /*************************************************************************/ | |
322 /* */ | |
323 /* <FuncType> */ | |
324 /* TT_Load_Strike_Metrics_Func */ | |
325 /* */ | |
326 /* <Description> */ | |
327 /* Load the metrics of a given strike. */ | |
328 /* */ | |
329 /* <Input> */ | |
330 /* face :: The target face object. */ | |
331 /* */ | |
332 /* strike_index :: The strike index. */ | |
333 /* */ | |
334 /* <Output> */ | |
335 /* metrics :: the metrics of the strike. */ | |
336 /* */ | |
337 /* <Return> */ | |
338 /* FreeType error code. 0 means success. Returns an error if no */ | |
339 /* such sbit strike exists. */ | |
340 /* */ | |
341 typedef FT_Error | |
342 (*TT_Load_Strike_Metrics_Func)( TT_Face face, | |
343 FT_ULong strike_index, | |
344 FT_Size_Metrics* metrics ); | |
345 | |
346 | |
347 /*************************************************************************/ | |
348 /* */ | |
349 /* <FuncType> */ | |
350 /* TT_Get_PS_Name_Func */ | |
351 /* */ | |
352 /* <Description> */ | |
353 /* Get the PostScript glyph name of a glyph. */ | |
354 /* */ | |
355 /* <Input> */ | |
356 /* idx :: The glyph index. */ | |
357 /* */ | |
358 /* PSname :: The address of a string pointer. Will be NULL in case */ | |
359 /* of error, otherwise it is a pointer to the glyph name. */ | |
360 /* */ | |
361 /* You must not modify the returned string! */ | |
362 /* */ | |
363 /* <Output> */ | |
364 /* FreeType error code. 0 means success. */ | |
365 /* */ | |
366 typedef FT_Error | |
367 (*TT_Get_PS_Name_Func)( TT_Face face, | |
368 FT_UInt idx, | |
369 FT_String** PSname ); | |
370 | |
371 | |
372 /*************************************************************************/ | |
373 /* */ | |
374 /* <FuncType> */ | |
375 /* TT_Load_Metrics_Func */ | |
376 /* */ | |
377 /* <Description> */ | |
378 /* Load a metrics table, which is a table with a horizontal and a */ | |
379 /* vertical version. */ | |
380 /* */ | |
381 /* <Input> */ | |
382 /* face :: A handle to the target face object. */ | |
383 /* */ | |
384 /* stream :: The input stream. */ | |
385 /* */ | |
386 /* vertical :: A boolean flag. If set, load the vertical one. */ | |
387 /* */ | |
388 /* <Return> */ | |
389 /* FreeType error code. 0 means success. */ | |
390 /* */ | |
391 typedef FT_Error | |
392 (*TT_Load_Metrics_Func)( TT_Face face, | |
393 FT_Stream stream, | |
394 FT_Bool vertical ); | |
395 | |
396 | |
397 /*************************************************************************/ | |
398 /* */ | |
399 /* <FuncType> */ | |
400 /* TT_Get_Metrics_Func */ | |
401 /* */ | |
402 /* <Description> */ | |
403 /* Load the horizontal or vertical header in a face object. */ | |
404 /* */ | |
405 /* <Input> */ | |
406 /* face :: A handle to the target face object. */ | |
407 /* */ | |
408 /* stream :: The input stream. */ | |
409 /* */ | |
410 /* vertical :: A boolean flag. If set, load vertical metrics. */ | |
411 /* */ | |
412 /* <Return> */ | |
413 /* FreeType error code. 0 means success. */ | |
414 /* */ | |
415 typedef FT_Error | |
416 (*TT_Get_Metrics_Func)( TT_Face face, | |
417 FT_Bool vertical, | |
418 FT_UInt gindex, | |
419 FT_Short* abearing, | |
420 FT_UShort* aadvance ); | |
421 | |
422 | |
423 /*************************************************************************/ | |
424 /* */ | |
425 /* <FuncType> */ | |
426 /* TT_Load_Table_Func */ | |
427 /* */ | |
428 /* <Description> */ | |
429 /* Load a given TrueType table. */ | |
430 /* */ | |
431 /* <Input> */ | |
432 /* face :: A handle to the target face object. */ | |
433 /* */ | |
434 /* stream :: The input stream. */ | |
435 /* */ | |
436 /* <Return> */ | |
437 /* FreeType error code. 0 means success. */ | |
438 /* */ | |
439 /* <Note> */ | |
440 /* The function uses `face->goto_table' to seek the stream to the */ | |
441 /* start of the table, except while loading the font directory. */ | |
442 /* */ | |
443 typedef FT_Error | |
444 (*TT_Load_Table_Func)( TT_Face face, | |
445 FT_Stream stream ); | |
446 | |
447 | |
448 /*************************************************************************/ | |
449 /* */ | |
450 /* <FuncType> */ | |
451 /* TT_Free_Table_Func */ | |
452 /* */ | |
453 /* <Description> */ | |
454 /* Free a given TrueType table. */ | |
455 /* */ | |
456 /* <Input> */ | |
457 /* face :: A handle to the target face object. */ | |
458 /* */ | |
459 typedef void | |
460 (*TT_Free_Table_Func)( TT_Face face ); | |
461 | |
462 | |
463 /* | |
464 * @functype: | |
465 * TT_Face_GetKerningFunc | |
466 * | |
467 * @description: | |
468 * Return the horizontal kerning value between two glyphs. | |
469 * | |
470 * @input: | |
471 * face :: A handle to the source face object. | |
472 * left_glyph :: The left glyph index. | |
473 * right_glyph :: The right glyph index. | |
474 * | |
475 * @return: | |
476 * The kerning value in font units. | |
477 */ | |
478 typedef FT_Int | |
479 (*TT_Face_GetKerningFunc)( TT_Face face, | |
480 FT_UInt left_glyph, | |
481 FT_UInt right_glyph ); | |
482 | |
483 | |
484 /*************************************************************************/ | |
485 /* */ | |
486 /* <Struct> */ | |
487 /* SFNT_Interface */ | |
488 /* */ | |
489 /* <Description> */ | |
490 /* This structure holds pointers to the functions used to load and */ | |
491 /* free the basic tables that are required in a `sfnt' font file. */ | |
492 /* */ | |
493 /* <Fields> */ | |
494 /* Check the various xxx_Func() descriptions for details. */ | |
495 /* */ | |
496 typedef struct SFNT_Interface_ | |
497 { | |
498 TT_Loader_GotoTableFunc goto_table; | |
499 | |
500 TT_Init_Face_Func init_face; | |
501 TT_Load_Face_Func load_face; | |
502 TT_Done_Face_Func done_face; | |
503 FT_Module_Requester get_interface; | |
504 | |
505 TT_Load_Any_Func load_any; | |
506 | |
507 /* these functions are called by `load_face' but they can also */ | |
508 /* be called from external modules, if there is a need to do so */ | |
509 TT_Load_Table_Func load_head; | |
510 TT_Load_Metrics_Func load_hhea; | |
511 TT_Load_Table_Func load_cmap; | |
512 TT_Load_Table_Func load_maxp; | |
513 TT_Load_Table_Func load_os2; | |
514 TT_Load_Table_Func load_post; | |
515 | |
516 TT_Load_Table_Func load_name; | |
517 TT_Free_Table_Func free_name; | |
518 | |
519 /* this field was called `load_kerning' up to version 2.1.10 */ | |
520 TT_Load_Table_Func load_kern; | |
521 | |
522 TT_Load_Table_Func load_gasp; | |
523 TT_Load_Table_Func load_pclt; | |
524 | |
525 /* see `ttload.h'; this field was called `load_bitmap_header' up to */ | |
526 /* version 2.1.10 */ | |
527 TT_Load_Table_Func load_bhed; | |
528 | |
529 TT_Load_SBit_Image_Func load_sbit_image; | |
530 | |
531 /* see `ttpost.h' */ | |
532 TT_Get_PS_Name_Func get_psname; | |
533 TT_Free_Table_Func free_psnames; | |
534 | |
535 /* starting here, the structure differs from version 2.1.7 */ | |
536 | |
537 /* this field was introduced in version 2.1.8, named `get_psname' */ | |
538 TT_Face_GetKerningFunc get_kerning; | |
539 | |
540 /* new elements introduced after version 2.1.10 */ | |
541 | |
542 /* load the font directory, i.e., the offset table and */ | |
543 /* the table directory */ | |
544 TT_Load_Table_Func load_font_dir; | |
545 TT_Load_Metrics_Func load_hmtx; | |
546 | |
547 TT_Load_Table_Func load_eblc; | |
548 TT_Free_Table_Func free_eblc; | |
549 | |
550 TT_Set_SBit_Strike_Func set_sbit_strike; | |
551 TT_Load_Strike_Metrics_Func load_strike_metrics; | |
552 | |
553 TT_Get_Metrics_Func get_metrics; | |
554 | |
555 } SFNT_Interface; | |
556 | |
557 | |
558 /* transitional */ | |
559 typedef SFNT_Interface* SFNT_Service; | |
560 | |
561 #ifndef FT_CONFIG_OPTION_PIC | |
562 | |
563 #define FT_DEFINE_SFNT_INTERFACE( \ | |
564 class_, \ | |
565 goto_table_, \ | |
566 init_face_, \ | |
567 load_face_, \ | |
568 done_face_, \ | |
569 get_interface_, \ | |
570 load_any_, \ | |
571 load_head_, \ | |
572 load_hhea_, \ | |
573 load_cmap_, \ | |
574 load_maxp_, \ | |
575 load_os2_, \ | |
576 load_post_, \ | |
577 load_name_, \ | |
578 free_name_, \ | |
579 load_kern_, \ | |
580 load_gasp_, \ | |
581 load_pclt_, \ | |
582 load_bhed_, \ | |
583 load_sbit_image_, \ | |
584 get_psname_, \ | |
585 free_psnames_, \ | |
586 get_kerning_, \ | |
587 load_font_dir_, \ | |
588 load_hmtx_, \ | |
589 load_eblc_, \ | |
590 free_eblc_, \ | |
591 set_sbit_strike_, \ | |
592 load_strike_metrics_, \ | |
593 get_metrics_ ) \ | |
594 static const SFNT_Interface class_ = \ | |
595 { \ | |
596 goto_table_, \ | |
597 init_face_, \ | |
598 load_face_, \ | |
599 done_face_, \ | |
600 get_interface_, \ | |
601 load_any_, \ | |
602 load_head_, \ | |
603 load_hhea_, \ | |
604 load_cmap_, \ | |
605 load_maxp_, \ | |
606 load_os2_, \ | |
607 load_post_, \ | |
608 load_name_, \ | |
609 free_name_, \ | |
610 load_kern_, \ | |
611 load_gasp_, \ | |
612 load_pclt_, \ | |
613 load_bhed_, \ | |
614 load_sbit_image_, \ | |
615 get_psname_, \ | |
616 free_psnames_, \ | |
617 get_kerning_, \ | |
618 load_font_dir_, \ | |
619 load_hmtx_, \ | |
620 load_eblc_, \ | |
621 free_eblc_, \ | |
622 set_sbit_strike_, \ | |
623 load_strike_metrics_, \ | |
624 get_metrics_, \ | |
625 }; | |
626 | |
627 #else /* FT_CONFIG_OPTION_PIC */ | |
628 | |
629 #define FT_INTERNAL( a, a_ ) \ | |
630 clazz->a = a_; | |
631 | |
632 #define FT_DEFINE_SFNT_INTERFACE( \ | |
633 class_, \ | |
634 goto_table_, \ | |
635 init_face_, \ | |
636 load_face_, \ | |
637 done_face_, \ | |
638 get_interface_, \ | |
639 load_any_, \ | |
640 load_head_, \ | |
641 load_hhea_, \ | |
642 load_cmap_, \ | |
643 load_maxp_, \ | |
644 load_os2_, \ | |
645 load_post_, \ | |
646 load_name_, \ | |
647 free_name_, \ | |
648 load_kern_, \ | |
649 load_gasp_, \ | |
650 load_pclt_, \ | |
651 load_bhed_, \ | |
652 load_sbit_image_, \ | |
653 get_psname_, \ | |
654 free_psnames_, \ | |
655 get_kerning_, \ | |
656 load_font_dir_, \ | |
657 load_hmtx_, \ | |
658 load_eblc_, \ | |
659 free_eblc_, \ | |
660 set_sbit_strike_, \ | |
661 load_strike_metrics_, \ | |
662 get_metrics_ ) \ | |
663 void \ | |
664 FT_Init_Class_ ## class_( FT_Library library, \ | |
665 SFNT_Interface* clazz ) \ | |
666 { \ | |
667 FT_UNUSED( library ); \ | |
668 \ | |
669 clazz->goto_table = goto_table_; \ | |
670 clazz->init_face = init_face_; \ | |
671 clazz->load_face = load_face_; \ | |
672 clazz->done_face = done_face_; \ | |
673 clazz->get_interface = get_interface_; \ | |
674 clazz->load_any = load_any_; \ | |
675 clazz->load_head = load_head_; \ | |
676 clazz->load_hhea = load_hhea_; \ | |
677 clazz->load_cmap = load_cmap_; \ | |
678 clazz->load_maxp = load_maxp_; \ | |
679 clazz->load_os2 = load_os2_; \ | |
680 clazz->load_post = load_post_; \ | |
681 clazz->load_name = load_name_; \ | |
682 clazz->free_name = free_name_; \ | |
683 clazz->load_kern = load_kern_; \ | |
684 clazz->load_gasp = load_gasp_; \ | |
685 clazz->load_pclt = load_pclt_; \ | |
686 clazz->load_bhed = load_bhed_; \ | |
687 clazz->load_sbit_image = load_sbit_image_; \ | |
688 clazz->get_psname = get_psname_; \ | |
689 clazz->free_psnames = free_psnames_; \ | |
690 clazz->get_kerning = get_kerning_; \ | |
691 clazz->load_font_dir = load_font_dir_; \ | |
692 clazz->load_hmtx = load_hmtx_; \ | |
693 clazz->load_eblc = load_eblc_; \ | |
694 clazz->free_eblc = free_eblc_; \ | |
695 clazz->set_sbit_strike = set_sbit_strike_; \ | |
696 clazz->load_strike_metrics = load_strike_metrics_; \ | |
697 clazz->get_metrics = get_metrics_; \ | |
698 } | |
699 | |
700 #endif /* FT_CONFIG_OPTION_PIC */ | |
701 | |
702 FT_END_HEADER | |
703 | |
704 #endif /* __SFNT_H__ */ | |
705 | |
706 | |
707 /* END */ | |
OLD | NEW |