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 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 FT_INTERNAL_SERVICE_H
     28 #include FT_TRUETYPE_TABLES_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     clazz->get_cmap_info = get_cmap_info_;                   \
     94   }
     95 
     96 #endif /* FT_CONFIG_OPTION_PIC */
     97 
     98   /* */
     99 
    100 
    101 FT_END_HEADER
    102 
    103 #endif /* __SVTTCMAP_H__ */
    104 
    105 
    106 /* END */
    107