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