Sync trunk.
[reactos.git] / lib / 3rdparty / freetype / include / freetype / internal / services / svttcmap.h
1 /***************************************************************************/
2 /* */
3 /* svttcmap.h */
4 /* */
5 /* The FreeType TrueType/sfnt cmap extra information service. */
6 /* */
7 /* Copyright 2003 by */
8 /* Masatake YAMATO, Redhat K.K. */
9 /* */
10 /* Copyright 2003, 2008 by */
11 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
12 /* */
13 /* This file is part of the FreeType project, and may only be used, */
14 /* modified, and distributed under the terms of the FreeType project */
15 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
16 /* this file you indicate that you have read the license and */
17 /* understand and accept it fully. */
18 /* */
19 /***************************************************************************/
20
21 /* Development of this service is support of
22 Information-technology Promotion Agency, Japan. */
23
24 #ifndef __SVTTCMAP_H__
25 #define __SVTTCMAP_H__
26
27 #include FT_INTERNAL_SERVICE_H
28 #include FT_TRUETYPE_TABLES_H
29
30
31 FT_BEGIN_HEADER
32
33
34 #define FT_SERVICE_ID_TT_CMAP "tt-cmaps"
35
36
37 /*************************************************************************/
38 /* */
39 /* <Struct> */
40 /* TT_CMapInfo */
41 /* */
42 /* <Description> */
43 /* A structure used to store TrueType/sfnt specific cmap information */
44 /* which is not covered by the generic @FT_CharMap structure. This */
45 /* structure can be accessed with the @FT_Get_TT_CMap_Info function. */
46 /* */
47 /* <Fields> */
48 /* language :: */
49 /* The language ID used in Mac fonts. Definitions of values are in */
50 /* freetype/ttnameid.h. */
51 /* */
52 /* format :: */
53 /* The cmap format. OpenType 1.5 defines the formats 0 (byte */
54 /* encoding table), 2~(high-byte mapping through table), 4~(segment */
55 /* mapping to delta values), 6~(trimmed table mapping), 8~(mixed */
56 /* 16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented */
57 /* coverage), and 14 (Unicode Variation Sequences). */
58 /* */
59 typedef struct TT_CMapInfo_
60 {
61 FT_ULong language;
62 FT_Long format;
63
64 } TT_CMapInfo;
65
66
67 typedef FT_Error
68 (*TT_CMap_Info_GetFunc)( FT_CharMap charmap,
69 TT_CMapInfo *cmap_info );
70
71
72 FT_DEFINE_SERVICE( TTCMaps )
73 {
74 TT_CMap_Info_GetFunc get_cmap_info;
75 };
76
77 #ifndef FT_CONFIG_OPTION_PIC
78
79 #define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_) \
80 static const FT_Service_TTCMapsRec class_ = \
81 { \
82 get_cmap_info_ \
83 };
84
85 #else /* FT_CONFIG_OPTION_PIC */
86
87 #define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_) \
88 void \
89 FT_Init_Class_##class_( FT_Library library, \
90 FT_Service_TTCMapsRec* clazz) \
91 { \
92 FT_UNUSED(library); \
93 clazz->get_cmap_info = get_cmap_info_; \
94 }
95
96 #endif /* FT_CONFIG_OPTION_PIC */
97
98 /* */
99
100
101 FT_END_HEADER
102
103 #endif /* __SVTTCMAP_H__ */
104
105
106 /* END */