25 static FT_Service_PfrMetrics
26 ft_pfr_check( FT_Face face )
28 FT_Service_PfrMetrics service = NULL;
32 FT_FACE_LOOKUP_SERVICE( face, service, PFR_METRICS );
40 FT_EXPORT_DEF( FT_Error )
41 FT_Get_PFR_Metrics( FT_Face face,
42 FT_UInt *aoutline_resolution,
43 FT_UInt *ametrics_resolution,
44 FT_Fixed *ametrics_x_scale,
45 FT_Fixed *ametrics_y_scale )
47 FT_Error error = FT_Err_Ok;
48 FT_Service_PfrMetrics service;
52 return FT_THROW( Invalid_Face_Handle );
54 service = ft_pfr_check( face );
57 error = service->get_metrics( face,
65 FT_Fixed x_scale, y_scale;
69 if ( aoutline_resolution )
70 *aoutline_resolution = face->units_per_EM;
72 if ( ametrics_resolution )
73 *ametrics_resolution = face->units_per_EM;
75 x_scale = y_scale = 0x10000L;
78 x_scale = face->size->metrics.x_scale;
79 y_scale = face->size->metrics.y_scale;
82 if ( ametrics_x_scale )
83 *ametrics_x_scale = x_scale;
85 if ( ametrics_y_scale )
86 *ametrics_y_scale = y_scale;
88 error = FT_THROW( Unknown_File_Format );
97 FT_EXPORT_DEF( FT_Error )
98 FT_Get_PFR_Kerning( FT_Face face,
104 FT_Service_PfrMetrics service;
108 return FT_THROW( Invalid_Face_Handle );
111 return FT_THROW( Invalid_Argument );
113 service = ft_pfr_check( face );
115 error = service->get_kerning( face, left, right, avector );
117 error = FT_Get_Kerning( face, left, right,
118 FT_KERNING_UNSCALED, avector );
126 FT_EXPORT_DEF( FT_Error )
127 FT_Get_PFR_Advance( FT_Face face,
132 FT_Service_PfrMetrics service;
136 return FT_THROW( Invalid_Face_Handle );
139 return FT_THROW( Invalid_Argument );
141 service = ft_pfr_check( face );
143 error = service->get_advance( face, gindex, aadvance );
146 error = FT_THROW( Invalid_Argument );