Home | History | Annotate | Line # | Download | only in services
      1 /****************************************************************************
      2  *
      3  * svttcmap.h
      4  *
      5  *   The FreeType TrueType/sfnt cmap extra information service.
      6  *
      7  * Copyright (C) 2003-2020 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 <freetype/internal/ftserv.h>
     26 #include <freetype/tttables.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 */
     91