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 )
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 )
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 )
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 )
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