• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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, 2009, 2012 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 
FT_DEFINE_SERVICE(TTCMaps)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                                                                 \
94     clazz->get_cmap_info = get_cmap_info_;                      \
95   }
96 
97 #endif /* FT_CONFIG_OPTION_PIC */
98 
99   /* */
100 
101 
102 FT_END_HEADER
103 
104 #endif /* __SVTTCMAP_H__ */
105 
106 
107 /* END */
108