OLD | NEW |
| (Empty) |
1 /***************************************************************************/ | |
2 /* */ | |
3 /* ttcmap.h */ | |
4 /* */ | |
5 /* TrueType character mapping table (cmap) support (specification). */ | |
6 /* */ | |
7 /* Copyright 2002-2005, 2009, 2012 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 __TTCMAP_H__ | |
20 #define __TTCMAP_H__ | |
21 | |
22 | |
23 #include "../../include/ft2build.h" | |
24 #include "../../include/freetype/internal/tttypes.h" | |
25 #include "../../include/freetype/internal/ftvalid.h" | |
26 #include "../../include/freetype/internal/services/svttcmap.h" | |
27 | |
28 FT_BEGIN_HEADER | |
29 | |
30 | |
31 #define TT_CMAP_FLAG_UNSORTED 1 | |
32 #define TT_CMAP_FLAG_OVERLAPPING 2 | |
33 | |
34 typedef struct TT_CMapRec_ | |
35 { | |
36 FT_CMapRec cmap; | |
37 FT_Byte* data; /* pointer to in-memory cmap table */ | |
38 FT_Int flags; /* for format 4 only */ | |
39 | |
40 } TT_CMapRec, *TT_CMap; | |
41 | |
42 typedef const struct TT_CMap_ClassRec_* TT_CMap_Class; | |
43 | |
44 | |
45 typedef FT_Error | |
46 (*TT_CMap_ValidateFunc)( FT_Byte* data, | |
47 FT_Validator valid ); | |
48 | |
49 typedef struct TT_CMap_ClassRec_ | |
50 { | |
51 FT_CMap_ClassRec clazz; | |
52 FT_UInt format; | |
53 TT_CMap_ValidateFunc validate; | |
54 TT_CMap_Info_GetFunc get_cmap_info; | |
55 | |
56 } TT_CMap_ClassRec; | |
57 | |
58 | |
59 #ifndef FT_CONFIG_OPTION_PIC | |
60 | |
61 #define FT_DEFINE_TT_CMAP( class_, \ | |
62 size_, \ | |
63 init_, \ | |
64 done_, \ | |
65 char_index_, \ | |
66 char_next_, \ | |
67 char_var_index_, \ | |
68 char_var_default_, \ | |
69 variant_list_, \ | |
70 charvariant_list_, \ | |
71 variantchar_list_, \ | |
72 format_, \ | |
73 validate_, \ | |
74 get_cmap_info_ ) \ | |
75 FT_CALLBACK_TABLE_DEF \ | |
76 const TT_CMap_ClassRec class_ = \ | |
77 { \ | |
78 { size_, \ | |
79 init_, \ | |
80 done_, \ | |
81 char_index_, \ | |
82 char_next_, \ | |
83 char_var_index_, \ | |
84 char_var_default_, \ | |
85 variant_list_, \ | |
86 charvariant_list_, \ | |
87 variantchar_list_ \ | |
88 }, \ | |
89 \ | |
90 format_, \ | |
91 validate_, \ | |
92 get_cmap_info_ \ | |
93 }; | |
94 | |
95 #else /* FT_CONFIG_OPTION_PIC */ | |
96 | |
97 #define FT_DEFINE_TT_CMAP( class_, \ | |
98 size_, \ | |
99 init_, \ | |
100 done_, \ | |
101 char_index_, \ | |
102 char_next_, \ | |
103 char_var_index_, \ | |
104 char_var_default_, \ | |
105 variant_list_, \ | |
106 charvariant_list_, \ | |
107 variantchar_list_, \ | |
108 format_, \ | |
109 validate_, \ | |
110 get_cmap_info_ ) \ | |
111 void \ | |
112 FT_Init_Class_ ## class_( TT_CMap_ClassRec* clazz ) \ | |
113 { \ | |
114 clazz->clazz.size = size_; \ | |
115 clazz->clazz.init = init_; \ | |
116 clazz->clazz.done = done_; \ | |
117 clazz->clazz.char_index = char_index_; \ | |
118 clazz->clazz.char_next = char_next_; \ | |
119 clazz->clazz.char_var_index = char_var_index_; \ | |
120 clazz->clazz.char_var_default = char_var_default_; \ | |
121 clazz->clazz.variant_list = variant_list_; \ | |
122 clazz->clazz.charvariant_list = charvariant_list_; \ | |
123 clazz->clazz.variantchar_list = variantchar_list_; \ | |
124 clazz->format = format_; \ | |
125 clazz->validate = validate_; \ | |
126 clazz->get_cmap_info = get_cmap_info_; \ | |
127 } | |
128 | |
129 #endif /* FT_CONFIG_OPTION_PIC */ | |
130 | |
131 | |
132 typedef struct TT_ValidatorRec_ | |
133 { | |
134 FT_ValidatorRec validator; | |
135 FT_UInt num_glyphs; | |
136 | |
137 } TT_ValidatorRec, *TT_Validator; | |
138 | |
139 | |
140 #define TT_VALIDATOR( x ) ( (TT_Validator)( x ) ) | |
141 #define TT_VALID_GLYPH_COUNT( x ) TT_VALIDATOR( x )->num_glyphs | |
142 | |
143 | |
144 FT_LOCAL( FT_Error ) | |
145 tt_face_build_cmaps( TT_Face face ); | |
146 | |
147 /* used in tt-cmaps service */ | |
148 FT_LOCAL( FT_Error ) | |
149 tt_get_cmap_info( FT_CharMap charmap, | |
150 TT_CMapInfo *cmap_info ); | |
151 | |
152 | |
153 FT_END_HEADER | |
154 | |
155 #endif /* __TTCMAP_H__ */ | |
156 | |
157 | |
158 /* END */ | |
OLD | NEW |