tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ftcid.c (2540B)


      1 /****************************************************************************
      2 *
      3 * ftcid.c
      4 *
      5 *   FreeType API for accessing CID font information.
      6 *
      7 * Copyright (C) 2007-2025 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 #include <freetype/ftcid.h>
     20 #include <freetype/internal/ftobjs.h>
     21 #include <freetype/internal/services/svcid.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 */