8b90cf0b42
This allows a Type 1 font face to be interrogated to retrieve most of the dictionary keys (keys not relevant to FreeType's Type 1 interpreter are not available). * include/freetype/internal/services/svpsinfo.h (PS_GetFontValueFunc): New typedef. (PSInfo): Add `ps_get_font_value'. (FT_DEFINE_SERVICE_PSINFOREC): Updated. * include/freetype/internal/t1types.h (T1_EncodingType): Moved to... * include/freetype/t1tables.h: Here. (PS_Dict_Keys): New enumeration. (FT_Get_PS_Font_Value): New declaration. * src/base/fttype1.c (FT_Get_PS_Font_Value): New function. * src/type1/t1driver.c (t1_ps_get_font_value): This new function does the real job. (t1_service_ps_info): Add it. * src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c (cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info): Updated.
121 lines
3.4 KiB
C
121 lines
3.4 KiB
C
/***************************************************************************/
|
|
/* */
|
|
/* fttype1.c */
|
|
/* */
|
|
/* FreeType utility file for PS names support (body). */
|
|
/* */
|
|
/* Copyright 2002-2004, 2011 by */
|
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
/* */
|
|
/* This file is part of the FreeType project, and may only be used, */
|
|
/* modified, and distributed under the terms of the FreeType project */
|
|
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
/* this file you indicate that you have read the license and */
|
|
/* understand and accept it fully. */
|
|
/* */
|
|
/***************************************************************************/
|
|
|
|
|
|
#include <ft2build.h>
|
|
#include FT_INTERNAL_OBJECTS_H
|
|
#include FT_INTERNAL_SERVICE_H
|
|
#include FT_SERVICE_POSTSCRIPT_INFO_H
|
|
|
|
|
|
/* documentation is in t1tables.h */
|
|
|
|
FT_EXPORT_DEF( FT_Error )
|
|
FT_Get_PS_Font_Info( FT_Face face,
|
|
PS_FontInfoRec* afont_info )
|
|
{
|
|
FT_Error error = FT_Err_Invalid_Argument;
|
|
|
|
|
|
if ( face )
|
|
{
|
|
FT_Service_PsInfo service = NULL;
|
|
|
|
|
|
FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
|
|
|
|
if ( service && service->ps_get_font_info )
|
|
error = service->ps_get_font_info( face, afont_info );
|
|
}
|
|
|
|
return error;
|
|
}
|
|
|
|
|
|
/* documentation is in t1tables.h */
|
|
|
|
FT_EXPORT_DEF( FT_Int )
|
|
FT_Has_PS_Glyph_Names( FT_Face face )
|
|
{
|
|
FT_Int result = 0;
|
|
FT_Service_PsInfo service = NULL;
|
|
|
|
|
|
if ( face )
|
|
{
|
|
FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
|
|
|
|
if ( service && service->ps_has_glyph_names )
|
|
result = service->ps_has_glyph_names( face );
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
/* documentation is in t1tables.h */
|
|
|
|
FT_EXPORT_DEF( FT_Error )
|
|
FT_Get_PS_Font_Private( FT_Face face,
|
|
PS_PrivateRec* afont_private )
|
|
{
|
|
FT_Error error = FT_Err_Invalid_Argument;
|
|
|
|
|
|
if ( face )
|
|
{
|
|
FT_Service_PsInfo service = NULL;
|
|
|
|
|
|
FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
|
|
|
|
if ( service && service->ps_get_font_private )
|
|
error = service->ps_get_font_private( face, afont_private );
|
|
}
|
|
|
|
return error;
|
|
}
|
|
|
|
|
|
/* documentation is in t1tables.h */
|
|
|
|
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 )
|
|
{
|
|
FT_Int result = 0;
|
|
FT_Service_PsInfo service = NULL;
|
|
|
|
|
|
if ( face )
|
|
{
|
|
FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
|
|
|
|
if ( service && service->ps_get_font_value )
|
|
result = service->ps_get_font_value( face, key, idx,
|
|
value, value_len );
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
/* END */
|