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