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