/* PycairoFontFace_FromFontFace * Create a new PycairoFontFace from a cairo_font_face_t * font_face - a cairo_font_face_t to 'wrap' into a Python object. * it is unreferenced if the PycairoFontFace creation fails * Return value: New reference or NULL on failure */ PyObject * PycairoFontFace_FromFontFace (cairo_font_face_t *font_face) { PyTypeObject *type = NULL; PyObject *o; assert (font_face != NULL); if (Pycairo_Check_Status (cairo_font_face_status (font_face))) { cairo_font_face_destroy (font_face); return NULL; } switch (cairo_font_face_get_type (font_face)) { case CAIRO_FONT_TYPE_TOY: type = &PycairoToyFontFace_Type; break; default: type = &PycairoFontFace_Type; break; } o = type->tp_alloc (type, 0); if (o == NULL) cairo_font_face_destroy (font_face); else ((PycairoFontFace *)o)->font_face = font_face; return o; }
void lime_cairo_set_font_size (value handle, double size) { cairo_font_face_t* face = cairo_get_font_face ((cairo_t*)val_data (handle)); if (face) { cairo_font_type_t type = cairo_font_face_get_type (face); if (type == CAIRO_FONT_TYPE_FT) { AutoGCRoot* fontReference = (AutoGCRoot*)cairo_font_face_get_user_data (face, &userData); if (fontReference) { Font* font = (Font*)val_data (fontReference->get ()); font->SetSize (size); } } } cairo_set_font_size ((cairo_t*)val_data (handle), size); }
VALUE rb_cairo_font_face_to_ruby_object (cairo_font_face_t *face) { if (face) { VALUE klass; switch (cairo_font_face_get_type (face)) { #ifdef CAIRO_HAS_FT_FONT case CAIRO_FONT_TYPE_FT: klass = rb_cCairo_FreeTypeFontFace; break; #endif #if CAIRO_CHECK_VERSION(1, 7, 6) case CAIRO_FONT_TYPE_TOY: klass = rb_cCairo_ToyFontFace; break; case CAIRO_FONT_TYPE_USER: klass = rb_cCairo_UserFontFace; break; #endif default: klass = rb_cCairo_FontFace; break; } cairo_font_face_reference (face); return Data_Wrap_Struct (klass, NULL, cr_font_face_free, face); } else { return Qnil; } }
// cairo_public cairo_font_type_t // cairo_font_face_get_type (cairo_font_face_t *font_face); static int l_cairo_font_face_get_type(lua_State* L) { cairo_font_face_t *font_face = get_cairo_font_face_t (L, 1); cairo_font_type_t v = cairo_font_face_get_type (font_face); lua_pushinteger(L, v); return 1; }
static SkTypeface* CreateTypeface(cairo_font_face_t* fontFace, const SkFontStyle& style, bool isFixedWidth) { SkASSERT(fontFace != NULL); SkASSERT(cairo_font_face_get_type(fontFace) == CAIRO_FONT_TYPE_FT); SkFontID newId = SkTypefaceCache::NewFontID(); return new SkCairoFTTypeface(fontFace, style, newId, isFixedWidth); }
static SkTypeface* CreateTypeface(cairo_font_face_t* fontFace, FT_Face face, FcPattern* pattern = nullptr) { SkASSERT(fontFace != nullptr); SkASSERT(cairo_font_face_get_type(fontFace) == CAIRO_FONT_TYPE_FT); SkASSERT(face != nullptr); SkFontStyle style(face->style_flags & FT_STYLE_FLAG_BOLD ? SkFontStyle::kBold_Weight : SkFontStyle::kNormal_Weight, SkFontStyle::kNormal_Width, face->style_flags & FT_STYLE_FLAG_ITALIC ? SkFontStyle::kItalic_Slant : SkFontStyle::kUpright_Slant); bool isFixedWidth = face->face_flags & FT_FACE_FLAG_FIXED_WIDTH; SkFontID newId = SkTypefaceCache::NewFontID(); return new SkCairoFTTypeface(style, newId, isFixedWidth, fontFace, pattern); }
static cairo_test_status_t draw (cairo_t *cr, int width, int height) { const cairo_test_context_t *ctx = cairo_test_get_context (cr); FcPattern *pattern; cairo_font_face_t *font_face; cairo_font_extents_t font_extents; cairo_font_options_t *font_options; cairo_status_t status; char *filename; int face_count; struct stat stat_buf; xasprintf (&filename, "%s/%s", ctx->srcdir, FONT); if (stat (filename, &stat_buf) || ! S_ISREG (stat_buf.st_mode)) { cairo_test_log (ctx, "Error finding font: %s: file not found?\n", filename); return CAIRO_TEST_FAILURE; } pattern = FcFreeTypeQuery ((unsigned char *)filename, 0, NULL, &face_count); free (filename); if (! pattern) { cairo_test_log (ctx, "FcFreeTypeQuery failed.\n"); return cairo_test_status_from_status (ctx, CAIRO_STATUS_NO_MEMORY); } font_face = cairo_ft_font_face_create_for_pattern (pattern); FcPatternDestroy (pattern); status = cairo_font_face_status (font_face); if (status) { cairo_test_log (ctx, "Error creating font face for %s: %s\n", filename, cairo_status_to_string (status)); return cairo_test_status_from_status (ctx, status); } if (cairo_font_face_get_type (font_face) != CAIRO_FONT_TYPE_FT) { cairo_test_log (ctx, "Unexpected value from cairo_font_face_get_type: %d (expected %d)\n", cairo_font_face_get_type (font_face), CAIRO_FONT_TYPE_FT); cairo_font_face_destroy (font_face); return CAIRO_TEST_FAILURE; } cairo_set_font_face (cr, font_face); cairo_font_face_destroy (font_face); font_options = cairo_font_options_create (); #define CHECK_FONT_EXTENTS(comment) do {\ cairo_test_status_t test_status; \ test_status = check_font_extents (ctx, cr, (comment)); \ if (test_status != CAIRO_TEST_SUCCESS) { \ cairo_font_options_destroy (font_options); \ return test_status; \ } \ } while (0) cairo_font_extents (cr, &font_extents); CHECK_FONT_EXTENTS ("default"); cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_ON); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_ON"); cairo_move_to (cr, 1, font_extents.ascent - 1); cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); /* blue */ cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_ON HINT_STYLE_NONE"); cairo_show_text (cr, "the "); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_SLIGHT); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_ON HINT_STYLE_SLIGHT"); cairo_show_text (cr, "quick "); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_MEDIUM); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_ON HINT_STYLE_MEDIUM"); cairo_show_text (cr, "brown"); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_FULL); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_ON HINT_STYLE_FULL"); cairo_show_text (cr, " fox"); /* Switch from show_text to text_path/fill to exercise bug #7889 */ cairo_text_path (cr, " jumps over a lazy dog"); cairo_fill (cr); /* And test it rotated as well for the sake of bug #7888 */ cairo_translate (cr, width, height); cairo_rotate (cr, M_PI); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_DEFAULT); cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_OFF"); cairo_move_to (cr, 1, font_extents.height - font_extents.descent - 1); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_OFF HINT_STYLE_NONE"); cairo_show_text (cr, "the "); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_SLIGHT); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_OFF HINT_STYLE_SLIGHT"); cairo_show_text (cr, "quick"); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_MEDIUM); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_OFF HINT_STYLE_MEDIUM"); cairo_show_text (cr, " brown"); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_FULL); cairo_set_font_options (cr, font_options); CHECK_FONT_EXTENTS ("HINT_METRICS_OFF HINT_STYLE_FULL"); cairo_show_text (cr, " fox"); cairo_text_path (cr, " jumps over"); cairo_text_path (cr, " a lazy dog"); cairo_fill (cr); cairo_font_options_destroy (font_options); return CAIRO_TEST_SUCCESS; }
int32_t FontFace::getType() { return static_cast<int32_t>( cairo_font_face_get_type( mCairoFontFace ) ); }