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/*                                                                         */
10ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/*  Copyright 2003, 2008, 2009, 2012, 2013 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
3441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#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 */
50ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease  /*      `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  {
6141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier    FT_ULong  language;
6241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier    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
7941371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
8041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier  static const FT_Service_TTCMapsRec  class_ =                  \
8141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier  {                                                             \
8241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier    get_cmap_info_                                              \
83295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  };
84295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
8541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#else /* FT_CONFIG_OPTION_PIC */
86295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
8741371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
8841371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier  void                                                          \
8941371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier  FT_Init_Class_ ## class_( FT_Library              library,    \
9041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier                            FT_Service_TTCMapsRec*  clazz )     \
9141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier  {                                                             \
9241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier    FT_UNUSED( library );                                       \
9341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier                                                                \
9441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier    clazz->get_cmap_info = get_cmap_info_;                      \
9541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier  }
96295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
9741371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#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