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 "../ftserv.h"
28#include "../../tttables.h"
29
30
31FT_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                                                                \
94    clazz->get_cmap_info = get_cmap_info_;                      \
95  }
96
97#endif /* FT_CONFIG_OPTION_PIC */
98
99  /* */
100
101
102FT_END_HEADER
103
104#endif /* __SVTTCMAP_H__ */
105
106
107/* END */
108