1 /****************************************************************************
   2  *
   3  * svttcmap.h
   4  *
   5  *   The FreeType TrueType/sfnt cmap extra information service.
   6  *
   7  * Copyright (C) 2003-2019 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 
  29 FT_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.6 defines the formats 0 (byte encoding
  52    *     table), 2~(high-byte mapping through table), 4~(segment mapping to
  53    *     delta values), 6~(trimmed table mapping), 8~(mixed 16-bit and 32-bit
  54    *     coverage), 10~(trimmed array), 12~(segmented coverage), 13~(last
  55    *     resort font), 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 
  76 #define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
  77   static const FT_Service_TTCMapsRec  class_ =                  \
  78   {                                                             \
  79     get_cmap_info_                                              \
  80   };
  81 
  82   /* */
  83 
  84 
  85 FT_END_HEADER
  86 
  87 #endif /* SVTTCMAP_H_ */
  88 
  89 
  90 /* END */