misc/libfreetype/src/base/ftcid.c
branchspacecampaign
changeset 9382 f1464fa10c0b
parent 9346 1245c7636380
parent 9380 563ab624522c
child 9384 557ae509547b
equal deleted inserted replaced
9346:1245c7636380 9382:f1464fa10c0b
     1 /***************************************************************************/
       
     2 /*                                                                         */
       
     3 /*  ftcid.c                                                                */
       
     4 /*                                                                         */
       
     5 /*    FreeType API for accessing CID font information.                     */
       
     6 /*                                                                         */
       
     7 /*  Copyright 2007, 2009 by Derek Clegg, Michael Toftdal.                  */
       
     8 /*                                                                         */
       
     9 /*  This file is part of the FreeType project, and may only be used,       */
       
    10 /*  modified, and distributed under the terms of the FreeType project      */
       
    11 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
       
    12 /*  this file you indicate that you have read the license and              */
       
    13 /*  understand and accept it fully.                                        */
       
    14 /*                                                                         */
       
    15 /***************************************************************************/
       
    16 
       
    17 
       
    18 #include <ft2build.h>
       
    19 #include FT_CID_H
       
    20 #include FT_INTERNAL_OBJECTS_H
       
    21 #include FT_SERVICE_CID_H
       
    22 
       
    23 
       
    24   /* documentation is in ftcid.h */
       
    25 
       
    26   FT_EXPORT_DEF( FT_Error )
       
    27   FT_Get_CID_Registry_Ordering_Supplement( FT_Face       face,
       
    28                                            const char*  *registry,
       
    29                                            const char*  *ordering,
       
    30                                            FT_Int       *supplement)
       
    31   {
       
    32     FT_Error     error;
       
    33     const char*  r = NULL;
       
    34     const char*  o = NULL;
       
    35     FT_Int       s = 0;
       
    36 
       
    37 
       
    38     error = FT_Err_Invalid_Argument;
       
    39 
       
    40     if ( face )
       
    41     {
       
    42       FT_Service_CID  service;
       
    43 
       
    44 
       
    45       FT_FACE_FIND_SERVICE( face, service, CID );
       
    46 
       
    47       if ( service && service->get_ros )
       
    48         error = service->get_ros( face, &r, &o, &s );
       
    49     }
       
    50 
       
    51     if ( registry )
       
    52       *registry = r;
       
    53 
       
    54     if ( ordering )
       
    55       *ordering = o;
       
    56 
       
    57     if ( supplement )
       
    58       *supplement = s;
       
    59 
       
    60     return error;
       
    61   }
       
    62 
       
    63 
       
    64   FT_EXPORT_DEF( FT_Error )
       
    65   FT_Get_CID_Is_Internally_CID_Keyed( FT_Face   face,
       
    66                                       FT_Bool  *is_cid )
       
    67   {
       
    68     FT_Error  error = FT_Err_Invalid_Argument;
       
    69     FT_Bool   ic = 0;
       
    70 
       
    71 
       
    72     if ( face )
       
    73     {
       
    74       FT_Service_CID  service;
       
    75 
       
    76 
       
    77       FT_FACE_FIND_SERVICE( face, service, CID );
       
    78 
       
    79       if ( service && service->get_is_cid )
       
    80         error = service->get_is_cid( face, &ic);
       
    81     }
       
    82 
       
    83     if ( is_cid )
       
    84       *is_cid = ic;
       
    85 
       
    86     return error;
       
    87   }
       
    88 
       
    89 
       
    90   FT_EXPORT_DEF( FT_Error )
       
    91   FT_Get_CID_From_Glyph_Index( FT_Face   face,
       
    92                                FT_UInt   glyph_index,
       
    93                                FT_UInt  *cid )
       
    94   {
       
    95     FT_Error  error = FT_Err_Invalid_Argument;
       
    96     FT_UInt   c = 0;
       
    97 
       
    98 
       
    99     if ( face )
       
   100     {
       
   101       FT_Service_CID  service;
       
   102 
       
   103 
       
   104       FT_FACE_FIND_SERVICE( face, service, CID );
       
   105 
       
   106       if ( service && service->get_cid_from_glyph_index )
       
   107         error = service->get_cid_from_glyph_index( face, glyph_index, &c);
       
   108     }
       
   109 
       
   110     if ( cid )
       
   111       *cid = c;
       
   112 
       
   113     return error;
       
   114   }
       
   115 
       
   116 
       
   117 /* END */