1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*  svttcmap.h                                                             */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    The FreeType TrueType/sfnt cmap extra information service.           */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  Copyright 2003 by                                                      */
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  Masatake YAMATO, Redhat K.K.                                           */
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
10e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang/*  Copyright 2003, 2008, 2009, 2012 by                                    */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Development of this service is support of
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   Information-technology Promotion Agency, Japan. */
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __SVTTCMAP_H__
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __SVTTCMAP_H__
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_SERVICE_H
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_TRUETYPE_TABLES_H
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
34e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#define FT_SERVICE_ID_TT_CMAP  "tt-cmaps"
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    TT_CMapInfo                                                        */
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A structure used to store TrueType/sfnt specific cmap information  */
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    which is not covered by the generic @FT_CharMap structure.  This   */
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    structure can be accessed with the @FT_Get_TT_CMap_Info function.  */
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Fields>                                                              */
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    language ::                                                        */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*      The language ID used in Mac fonts.  Definitions of values are in */
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*      freetype/ttnameid.h.                                             */
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
520a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*    format ::                                                          */
530a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*      The cmap format.  OpenType 1.5 defines the formats 0 (byte       */
540a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*      encoding table), 2~(high-byte mapping through table), 4~(segment */
550a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*      mapping to delta values), 6~(trimmed table mapping), 8~(mixed    */
560a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*      16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented   */
570a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*      coverage), and 14 (Unicode Variation Sequences).                 */
580a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  /*                                                                       */
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  TT_CMapInfo_
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
61e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang    FT_ULong  language;
62e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang    FT_Long   format;
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } TT_CMapInfo;
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_Error
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*TT_CMap_Info_GetFunc)( FT_CharMap    charmap,
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           TT_CMapInfo  *cmap_info );
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_DEFINE_SERVICE( TTCMaps )
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_CMap_Info_GetFunc  get_cmap_info;
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  };
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
77295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#ifndef FT_CONFIG_OPTION_PIC
78295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
79e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
80e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  static const FT_Service_TTCMapsRec  class_ =                  \
81e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  {                                                             \
82e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang    get_cmap_info_                                              \
83295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  };
84295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
85e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else /* FT_CONFIG_OPTION_PIC */
86295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
87e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
88e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  void                                                          \
89e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  FT_Init_Class_ ## class_( FT_Library              library,    \
90e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang                            FT_Service_TTCMapsRec*  clazz )     \
91e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  {                                                             \
92e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang    FT_UNUSED( library );                                       \
93e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang                                                                \
94e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang    clazz->get_cmap_info = get_cmap_info_;                      \
95e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  }
96295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
97e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif /* FT_CONFIG_OPTION_PIC */
98295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __SVTTCMAP_H__ */
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
108