1/***************************************************************************/
2/*                                                                         */
3/*  svttcmap.h                                                             */
4/*                                                                         */
5/*    The FreeType TrueType/sfnt cmap extra information service.           */
6/*                                                                         */
7/*  Copyright 2003-2015 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
29FT_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.5 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), and 14 (Unicode Variation Sequences).                 */
56  /*                                                                       */
57  typedef struct  TT_CMapInfo_
58  {
59    FT_ULong  language;
60    FT_Long   format;
61
62  } TT_CMapInfo;
63
64
65  typedef FT_Error
66  (*TT_CMap_Info_GetFunc)( FT_CharMap    charmap,
67                           TT_CMapInfo  *cmap_info );
68
69
70  FT_DEFINE_SERVICE( TTCMaps )
71  {
72    TT_CMap_Info_GetFunc  get_cmap_info;
73  };
74
75#ifndef FT_CONFIG_OPTION_PIC
76
77#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
78  static const FT_Service_TTCMapsRec  class_ =                  \
79  {                                                             \
80    get_cmap_info_                                              \
81  };
82
83#else /* FT_CONFIG_OPTION_PIC */
84
85#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
86  void                                                          \
87  FT_Init_Class_ ## class_( FT_Library              library,    \
88                            FT_Service_TTCMapsRec*  clazz )     \
89  {                                                             \
90    FT_UNUSED( library );                                       \
91                                                                \
92    clazz->get_cmap_info = get_cmap_info_;                      \
93  }
94
95#endif /* FT_CONFIG_OPTION_PIC */
96
97  /* */
98
99
100FT_END_HEADER
101
102#endif /* __SVTTCMAP_H__ */
103
104
105/* END */
106