1 /***************************************************************************/
   2 /*                                                                         */
   3 /*  svcid.h                                                                */
   4 /*                                                                         */
   5 /*    The FreeType CID font services (specification).                      */
   6 /*                                                                         */
   7 /*  Copyright 2007-2018 by                                                 */
   8 /*  Derek Clegg and Michael Toftdal.                                       */
   9 /*                                                                         */
  10 /*  This file is part of the FreeType project, and may only be used,       */
  11 /*  modified, and distributed under the terms of the FreeType project      */
  12 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
  13 /*  this file you indicate that you have read the license and              */
  14 /*  understand and accept it fully.                                        */
  15 /*                                                                         */
  16 /***************************************************************************/
  17 
  18 
  19 #ifndef SVCID_H_
  20 #define SVCID_H_
  21 
  22 #include FT_INTERNAL_SERVICE_H
  23 
  24 
  25 FT_BEGIN_HEADER
  26 
  27 
  28 #define FT_SERVICE_ID_CID  "CID"
  29 
  30   typedef FT_Error
  31   (*FT_CID_GetRegistryOrderingSupplementFunc)( FT_Face       face,
  32                                                const char*  *registry,
  33                                                const char*  *ordering,
  34                                                FT_Int       *supplement );
  35   typedef FT_Error
  36   (*FT_CID_GetIsInternallyCIDKeyedFunc)( FT_Face   face,
  37                                          FT_Bool  *is_cid );
  38   typedef FT_Error
  39   (*FT_CID_GetCIDFromGlyphIndexFunc)( FT_Face   face,
  40                                       FT_UInt   glyph_index,
  41                                       FT_UInt  *cid );
  42 
  43   FT_DEFINE_SERVICE( CID )
  44   {
  45     FT_CID_GetRegistryOrderingSupplementFunc  get_ros;
  46     FT_CID_GetIsInternallyCIDKeyedFunc        get_is_cid;
  47     FT_CID_GetCIDFromGlyphIndexFunc           get_cid_from_glyph_index;
  48   };
  49 
  50 
  51 #ifndef FT_CONFIG_OPTION_PIC
  52 
  53 #define FT_DEFINE_SERVICE_CIDREC( class_,                                   \
  54                                   get_ros_,                                 \
  55                                   get_is_cid_,                              \
  56                                   get_cid_from_glyph_index_ )               \
  57   static const FT_Service_CIDRec class_ =                                   \
  58   {                                                                         \
  59     get_ros_, get_is_cid_, get_cid_from_glyph_index_                        \
  60   };
  61 
  62 #else /* FT_CONFIG_OPTION_PIC */
  63 
  64 #define FT_DEFINE_SERVICE_CIDREC( class_,                                   \
  65                                   get_ros_,                                 \
  66                                   get_is_cid_,                              \
  67                                   get_cid_from_glyph_index_ )               \
  68   void                                                                      \
  69   FT_Init_Class_ ## class_( FT_Library          library,                    \
  70                             FT_Service_CIDRec*  clazz )                     \
  71   {                                                                         \
  72     FT_UNUSED( library );                                                   \
  73                                                                             \
  74     clazz->get_ros                  = get_ros_;                             \
  75     clazz->get_is_cid               = get_is_cid_;                          \
  76     clazz->get_cid_from_glyph_index = get_cid_from_glyph_index_;            \
  77   }
  78 
  79 #endif /* FT_CONFIG_OPTION_PIC */
  80 
  81   /* */
  82 
  83 
  84 FT_END_HEADER
  85 
  86 
  87 #endif /* SVCID_H_ */
  88 
  89 
  90 /* END */