static VALUE
cr_freetype_font_face_initialize (VALUE self, VALUE path)
{
FT_Face freetype_face;
FT_Error error;
cairo_font_face_t *face;
cairo_status_t status;
error = FT_New_Face (cr_freetype_library,
StringValueCStr(path),
0,
&freetype_face);
cr_freetype_error_check (error, "failed to open FreeType font", path);
cr_freetype_n_faces++;
face = cairo_ft_font_face_create_for_ft_face (freetype_face, 0);
cr_font_face_check_status (face);
status =
cairo_font_face_set_user_data (face,
&cr_freetype_face_key,
freetype_face,
(cairo_destroy_func_t) cr_freetype_done_face);
if (status != CAIRO_STATUS_SUCCESS) {
cairo_font_face_destroy (face);
FT_Done_Face (freetype_face);
rb_cairo_check_status (status);
}
RTYPEDDATA_DATA (self) = face;
return Qnil;
}