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