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