150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/***************************************************************************/
250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  fttype1.c                                                              */
450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*    FreeType utility file for PS names support (body).                   */
650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
727811904d8de0ce5591417812ca31163bf5aad60Geremy Condra/*  Copyright 2002-2004, 2011 by                                           */
850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
1050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  This file is part of the FreeType project, and may only be used,       */
1150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  modified, and distributed under the terms of the FreeType project      */
1250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
1350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  this file you indicate that you have read the license and              */
1450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*  understand and accept it fully.                                        */
1550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/*                                                                         */
1650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/***************************************************************************/
1750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
1850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
1950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger#include <ft2build.h>
2050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger#include FT_INTERNAL_OBJECTS_H
2150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger#include FT_INTERNAL_SERVICE_H
2250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger#include FT_SERVICE_POSTSCRIPT_INFO_H
2350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
2450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
2550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  /* documentation is in t1tables.h */
2650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
2750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  FT_EXPORT_DEF( FT_Error )
2850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  FT_Get_PS_Font_Info( FT_Face          face,
2950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger                       PS_FontInfoRec*  afont_info )
3050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  {
31727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    FT_Error  error = FT_ERR( Invalid_Argument );
3250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
3350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
3450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    if ( face )
3550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    {
3650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      FT_Service_PsInfo  service = NULL;
3750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
3850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
3950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
4050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
4150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      if ( service && service->ps_get_font_info )
4250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger        error = service->ps_get_font_info( face, afont_info );
4350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    }
4450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
4550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    return error;
4650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  }
4750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
4850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
4950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  /* documentation is in t1tables.h */
5050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
5150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  FT_EXPORT_DEF( FT_Int )
5250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  FT_Has_PS_Glyph_Names( FT_Face  face )
5350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  {
5450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    FT_Int             result  = 0;
5550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    FT_Service_PsInfo  service = NULL;
5650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
5750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
5850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    if ( face )
5950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    {
6050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
6150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
6250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      if ( service && service->ps_has_glyph_names )
6350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger        result = service->ps_has_glyph_names( face );
6450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    }
6550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
6650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    return result;
6750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  }
6850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
6950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
7050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  /* documentation is in t1tables.h */
7150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
7250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  FT_EXPORT_DEF( FT_Error )
7350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  FT_Get_PS_Font_Private( FT_Face         face,
7450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger                          PS_PrivateRec*  afont_private )
7550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  {
76727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    FT_Error  error = FT_ERR( Invalid_Argument );
7750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
7850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
7950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    if ( face )
8050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    {
8150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      FT_Service_PsInfo  service = NULL;
8250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
8350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
8450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
8550571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
8650571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger      if ( service && service->ps_get_font_private )
8750571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger        error = service->ps_get_font_private( face, afont_private );
8850571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    }
8950571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
9050571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger    return error;
9150571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger  }
9250571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
9327811904d8de0ce5591417812ca31163bf5aad60Geremy Condra/* documentation is in t1tables.h */
9427811904d8de0ce5591417812ca31163bf5aad60Geremy CondraFT_EXPORT_DEF( FT_Long )
9527811904d8de0ce5591417812ca31163bf5aad60Geremy CondraFT_Get_PS_Font_Value( FT_Face       face,
9627811904d8de0ce5591417812ca31163bf5aad60Geremy Condra                      PS_Dict_Keys  key,
9727811904d8de0ce5591417812ca31163bf5aad60Geremy Condra                      FT_UInt       idx,
9827811904d8de0ce5591417812ca31163bf5aad60Geremy Condra                      void         *value,
9927811904d8de0ce5591417812ca31163bf5aad60Geremy Condra                      FT_Long       value_len )
10027811904d8de0ce5591417812ca31163bf5aad60Geremy Condra{
10127811904d8de0ce5591417812ca31163bf5aad60Geremy Condra  FT_Int             result  = 0;
10227811904d8de0ce5591417812ca31163bf5aad60Geremy Condra  FT_Service_PsInfo  service = NULL;
10327811904d8de0ce5591417812ca31163bf5aad60Geremy Condra
10427811904d8de0ce5591417812ca31163bf5aad60Geremy Condra  if ( face )
10527811904d8de0ce5591417812ca31163bf5aad60Geremy Condra  {
10627811904d8de0ce5591417812ca31163bf5aad60Geremy Condra    FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
10727811904d8de0ce5591417812ca31163bf5aad60Geremy Condra      if ( service && service->ps_get_font_value )
10827811904d8de0ce5591417812ca31163bf5aad60Geremy Condra      result = service->ps_get_font_value( face, key, idx,
10927811904d8de0ce5591417812ca31163bf5aad60Geremy Condra                                           value, value_len );
11027811904d8de0ce5591417812ca31163bf5aad60Geremy Condra  }
11127811904d8de0ce5591417812ca31163bf5aad60Geremy Condra  return result;
11227811904d8de0ce5591417812ca31163bf5aad60Geremy Condra}
11350571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger
11450571ad2593c5b9c46fc93ea59bfd82a80c1b55cDerek Sollenberger/* END */
115