PageRenderTime 22ms CodeModel.GetById 2ms app.highlight 16ms RepoModel.GetById 1ms app.codeStats 0ms

/src/freetype/src/base/ftcid.c

https://bitbucket.org/cabalistic/ogredeps/
C | 117 lines | 65 code | 35 blank | 17 comment | 14 complexity | a975771fbd089848297831ffd496e801 MD5 | raw file
  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 */