(root)/
freetype-2.13.2/
src/
base/
fttype1.c
       1  /****************************************************************************
       2   *
       3   * fttype1.c
       4   *
       5   *   FreeType utility file for PS names support (body).
       6   *
       7   * Copyright (C) 2002-2023 by
       8   * David Turner, Robert Wilhelm, and Werner Lemberg.
       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/internal/ftdebug.h>
      20  #include <freetype/internal/ftobjs.h>
      21  #include <freetype/internal/ftserv.h>
      22  #include <freetype/internal/services/svpsinfo.h>
      23  
      24  
      25    /* documentation is in t1tables.h */
      26  
      27    FT_EXPORT_DEF( FT_Error )
      28    FT_Get_PS_Font_Info( FT_Face          face,
      29                         PS_FontInfoRec*  afont_info )
      30    {
      31      FT_Error           error;
      32      FT_Service_PsInfo  service;
      33  
      34  
      35      if ( !face )
      36        return FT_THROW( Invalid_Face_Handle );
      37  
      38      if ( !afont_info )
      39        return FT_THROW( Invalid_Argument );
      40  
      41      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
      42  
      43      if ( service && service->ps_get_font_info )
      44        error = service->ps_get_font_info( face, afont_info );
      45      else
      46        error = FT_THROW( Invalid_Argument );
      47  
      48      return error;
      49    }
      50  
      51  
      52    /* documentation is in t1tables.h */
      53  
      54    FT_EXPORT_DEF( FT_Int )
      55    FT_Has_PS_Glyph_Names( FT_Face  face )
      56    {
      57      FT_Int             result = 0;
      58      FT_Service_PsInfo  service;
      59  
      60  
      61      if ( face )
      62      {
      63        FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
      64  
      65        if ( service && service->ps_has_glyph_names )
      66          result = service->ps_has_glyph_names( face );
      67      }
      68  
      69      return result;
      70    }
      71  
      72  
      73    /* documentation is in t1tables.h */
      74  
      75    FT_EXPORT_DEF( FT_Error )
      76    FT_Get_PS_Font_Private( FT_Face         face,
      77                            PS_PrivateRec*  afont_private )
      78    {
      79      FT_Error           error;
      80      FT_Service_PsInfo  service;
      81  
      82  
      83      if ( !face )
      84        return FT_THROW( Invalid_Face_Handle );
      85  
      86      if ( !afont_private )
      87        return FT_THROW( Invalid_Argument );
      88  
      89      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
      90  
      91      if ( service && service->ps_get_font_private )
      92        error = service->ps_get_font_private( face, afont_private );
      93      else
      94        error = FT_THROW( Invalid_Argument );
      95  
      96      return error;
      97    }
      98  
      99  
     100    /* documentation is in t1tables.h */
     101  
     102    FT_EXPORT_DEF( FT_Long )
     103    FT_Get_PS_Font_Value( FT_Face       face,
     104                          PS_Dict_Keys  key,
     105                          FT_UInt       idx,
     106                          void         *value,
     107                          FT_Long       value_len )
     108    {
     109      FT_Int             result  = 0;
     110      FT_Service_PsInfo  service = NULL;
     111  
     112  
     113      if ( face )
     114      {
     115        FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
     116  
     117        if ( service && service->ps_get_font_value )
     118          result = service->ps_get_font_value( face, key, idx,
     119                                               value, value_len );
     120      }
     121  
     122      return result;
     123    }
     124  
     125  
     126  /* END */