1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  svttcmap.h                                                             */
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*    The FreeType TrueType/sfnt cmap extra information service.           */
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  Copyright 2003 by                                                      */
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  Masatake YAMATO, Redhat K.K.                                           */
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  Copyright 2003, 2008, 2009, 2012 by                                    */
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  This file is part of the FreeType project, and may only be used,       */
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  modified, and distributed under the terms of the FreeType project      */
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  this file you indicate that you have read the license and              */
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  understand and accept it fully.                                        */
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Development of this service is support of
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   Information-technology Promotion Agency, Japan. */
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __SVTTCMAP_H__
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __SVTTCMAP_H__
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../ftserv.h"
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../tttables.h"
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SERVICE_ID_TT_CMAP  "tt-cmaps"
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_CMapInfo                                                        */
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A structure used to store TrueType/sfnt specific cmap information  */
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    which is not covered by the generic @FT_CharMap structure.  This   */
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    structure can be accessed with the @FT_Get_TT_CMap_Info function.  */
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Fields>                                                              */
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    language ::                                                        */
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      The language ID used in Mac fonts.  Definitions of values are in */
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      freetype/ttnameid.h.                                             */
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    format ::                                                          */
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      The cmap format.  OpenType 1.5 defines the formats 0 (byte       */
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      encoding table), 2~(high-byte mapping through table), 4~(segment */
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      mapping to delta values), 6~(trimmed table mapping), 8~(mixed    */
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented   */
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      coverage), and 14 (Unicode Variation Sequences).                 */
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  TT_CMapInfo_
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ULong  language;
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Long   format;
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } TT_CMapInfo;
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_CMap_Info_GetFunc)( FT_CharMap    charmap,
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                           TT_CMapInfo  *cmap_info );
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_DEFINE_SERVICE( TTCMaps )
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_CMap_Info_GetFunc  get_cmap_info;
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  };
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_CONFIG_OPTION_PIC
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  static const FT_Service_TTCMapsRec  class_ =                  \
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {                                                             \
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    get_cmap_info_                                              \
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  };
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else /* FT_CONFIG_OPTION_PIC */
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  void                                                          \
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Init_Class_ ## class_( FT_Library              library,    \
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                            FT_Service_TTCMapsRec*  clazz )     \
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {                                                             \
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UNUSED( library );                                       \
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                                \
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->get_cmap_info = get_cmap_info_;                      \
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  }
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CONFIG_OPTION_PIC */
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* */
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __SVTTCMAP_H__ */
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */
108