1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* fttype1.c */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* FreeType utility file for PS names support (body). */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov/* Copyright 2002-2004, 2011, 2014 by */ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* This file is part of the FreeType project, and may only be used, */ 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* modified, and distributed under the terms of the FreeType project */ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* this file you indicate that you have read the license and */ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* understand and accept it fully. */ 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include <ft2build.h> 20e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_INTERNAL_DEBUG_H 21e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_INTERNAL_OBJECTS_H 22e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_INTERNAL_SERVICE_H 23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_SERVICE_POSTSCRIPT_INFO_H 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* documentation is in t1tables.h */ 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT_DEF( FT_Error ) 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_PS_Font_Info( FT_Face face, 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PS_FontInfoRec* afont_info ) 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 32e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FT_Error error; 33e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FT_Service_PsInfo service; 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 36e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if ( !face ) 37e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return FT_THROW( Invalid_Face_Handle ); 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 39e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if ( !afont_info ) 40e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return FT_THROW( Invalid_Argument ); 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 42e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO ); 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 44e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if ( service && service->ps_get_font_info ) 45e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov error = service->ps_get_font_info( face, afont_info ); 46e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 47e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov error = FT_THROW( Invalid_Argument ); 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return error; 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* documentation is in t1tables.h */ 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT_DEF( FT_Int ) 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Has_PS_Glyph_Names( FT_Face face ) 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 58e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FT_Int result = 0; 59e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FT_Service_PsInfo service; 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( face ) 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO ); 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( service && service->ps_has_glyph_names ) 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov result = service->ps_has_glyph_names( face ); 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return result; 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* documentation is in t1tables.h */ 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT_DEF( FT_Error ) 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_PS_Font_Private( FT_Face face, 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PS_PrivateRec* afont_private ) 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 80e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FT_Error error; 81e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FT_Service_PsInfo service; 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 84e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if ( !face ) 85e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return FT_THROW( Invalid_Face_Handle ); 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 87e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if ( !afont_private ) 88e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return FT_THROW( Invalid_Argument ); 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 90e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO ); 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 92e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if ( service && service->ps_get_font_private ) 93e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov error = service->ps_get_font_private( face, afont_private ); 94e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 95e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov error = FT_THROW( Invalid_Argument ); 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return error; 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* documentation is in t1tables.h */ 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT_DEF( FT_Long ) 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_PS_Font_Value( FT_Face face, 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PS_Dict_Keys key, 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt idx, 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void *value, 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long value_len ) 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int result = 0; 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Service_PsInfo service = NULL; 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( face ) 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO ); 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( service && service->ps_get_font_value ) 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov result = service->ps_get_font_value( face, key, idx, 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov value, value_len ); 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return result; 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 128