font_factory::font_factory(void) : nbEnt(0), // Note: this "ents" cache only keeps fonts from being unreffed, does not speed up access maxEnt(32), ents(static_cast<font_entry*>(g_malloc(maxEnt*sizeof(font_entry)))), #ifdef USE_PANGO_WIN32 fontServer(pango_win32_font_map_for_display()), fontContext(pango_win32_get_context()), pangoFontCache(pango_win32_font_map_get_font_cache(fontServer)), hScreenDC(pango_win32_get_dc()), #else fontServer(pango_ft2_font_map_new()), fontContext(0), #endif fontSize(512), loadedPtr(new FaceMapType()) { #ifdef USE_PANGO_WIN32 #else pango_ft2_font_map_set_resolution(PANGO_FT2_FONT_MAP(fontServer), 72, 72); fontContext = pango_font_map_create_context(fontServer); pango_ft2_font_map_set_default_substitute(PANGO_FT2_FONT_MAP(fontServer), FactorySubstituteFunc, this, NULL); #endif }
static gpointer pangoft2_view_create (const PangoViewer *klass) { PangoFontMap *fontmap; fontmap = pango_ft2_font_map_new (); pango_ft2_font_map_set_resolution (PANGO_FT2_FONT_MAP (fontmap), opt_dpi, opt_dpi); pango_ft2_font_map_set_default_substitute (PANGO_FT2_FONT_MAP (fontmap), substitute_func, NULL, NULL); return fontmap; }
void gimp_font_list_restore (GimpFontList *list) { PangoFontMap *fontmap; PangoContext *context; g_return_if_fail (GIMP_IS_FONT_LIST (list)); if (font_desc_to_string == NULL) { PangoFontDescription *desc; gchar *name; gchar last_char; desc = pango_font_description_new (); pango_font_description_set_family (desc, "Wilber 12"); name = pango_font_description_to_string (desc); last_char = name[strlen (name) - 1]; g_free (name); pango_font_description_free (desc); if (last_char != ',') font_desc_to_string = &gimp_font_util_pango_font_description_to_string; else font_desc_to_string = &pango_font_description_to_string; } fontmap = pango_ft2_font_map_new (); pango_ft2_font_map_set_resolution (PANGO_FT2_FONT_MAP (fontmap), list->xresolution, list->yresolution); context = pango_ft2_font_map_create_context (PANGO_FT2_FONT_MAP (fontmap)); g_object_unref (fontmap); gimp_container_freeze (GIMP_CONTAINER (list)); gimp_font_list_load_names (list, fontmap, context); g_object_unref (context); gimp_list_sort_by_name (GIMP_LIST (list)); gimp_container_thaw (GIMP_CONTAINER (list)); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkClasspathFontPeer_setFont (JNIEnv *env, jobject self, jstring family_name_str, jint style_int, jint size) { struct peerfont *pfont = NULL; PangoFontMap *map = NULL; char const *family_name = NULL; gdk_threads_enter (); enum java_awt_font_style style = (enum java_awt_font_style) style_int; g_assert (self != NULL); pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, self); g_assert (pfont != NULL); if (pfont->ctx != NULL) g_object_unref (pfont->ctx); if (pfont->font != NULL) g_object_unref (pfont->font); if (pfont->desc != NULL) pango_font_description_free (pfont->desc); pfont->desc = pango_font_description_new (); g_assert (pfont->desc != NULL); family_name = (*env)->GetStringUTFChars(env, family_name_str, 0); g_assert (family_name != NULL); pango_font_description_set_family (pfont->desc, family_name); (*env)->ReleaseStringUTFChars(env, family_name_str, family_name); pango_font_description_set_size (pfont->desc, size * PANGO_SCALE); if (style & java_awt_font_BOLD) pango_font_description_set_weight (pfont->desc, PANGO_WEIGHT_BOLD); if (style & java_awt_font_ITALIC) pango_font_description_set_style (pfont->desc, PANGO_STYLE_ITALIC); /* FIXME: these are possibly wrong, and should in any case probably be cached between calls. */ map = pango_ft2_font_map_for_display (); g_assert (map != NULL); if (pfont->ctx == NULL) pfont->ctx = pango_ft2_font_map_create_context (PANGO_FT2_FONT_MAP (map)); g_assert (pfont->ctx != NULL); if (pfont->font != NULL) g_object_unref (pfont->font); pfont->font = pango_font_map_load_font (map, pfont->ctx, pfont->desc); g_assert (pfont->font != NULL); gdk_threads_leave (); }
FontSupport::FontSupport(WPaintDevice *paintDevice, EnabledFontFormats enabledFontFormats) : device_(paintDevice), enabledFontFormats_(enabledFontFormats), cache_(10) { PANGO_LOCK; if (!pangoFontMap) { pangoFontMap = pango_ft2_font_map_new(); pango_ft2_font_map_set_default_substitute(PANGO_FT2_FONT_MAP(pangoFontMap), addTrueTypePattern, NULL, NULL); } #if PANGO_VERSION_MAJOR > 1 || PANGO_VERSION_MINOR > 21 context_ = pango_font_map_create_context(pangoFontMap); #else context_ = pango_ft2_font_map_create_context(PANGO_FT2_FONT_MAP(pangoFontMap)); #endif currentFont_ = nullptr; }
/** * gnome_print_pango_create_context: * @fontmap: a #PangoFontMap from gnome_print_pango_get_default_font_map() * or gnome_print_pango_create_font_map(). * * Creates a new #PangoContext object for the specified fontmap. * * Return value: a newly created #PangoContext object **/ PangoContext * gnome_print_pango_create_context (PangoFontMap *fontmap) { PangoContext *context; g_return_val_if_fail (PANGO_FT2_IS_FONT_MAP (fontmap), NULL); g_return_val_if_fail (is_gnome_print_object (G_OBJECT (fontmap)), NULL); context = pango_ft2_font_map_create_context (PANGO_FT2_FONT_MAP (fontmap)); set_is_gnome_print_object (G_OBJECT (context)); return context; }
/** * gnome_print_pango_font_map_new: * * Creates a new #PangoFontMap object suitable for use with * gnome-print. In most cases, you probably want to use * gnome_print_pango_get_default_font_map () instead. * * Return value: a newly created #PangoFontMap object **/ PangoFontMap * gnome_print_pango_font_map_new (void) { PangoFontMap *fontmap = NULL; PangoFT2FontMap *ft2fontmap; fontmap = pango_ft2_font_map_new (); ft2fontmap = PANGO_FT2_FONT_MAP (fontmap); pango_ft2_font_map_set_resolution (ft2fontmap, 72, 72); pango_ft2_font_map_set_default_substitute (ft2fontmap, substitute_func, NULL, NULL); set_is_gnome_print_object (G_OBJECT (fontmap)); return fontmap; }
FontSupport::FontSupport(WPaintDevice *paintDevice) : device_(paintDevice), cache_(10) { PANGO_LOCK; if (!pangoFontMap) pangoFontMap = pango_ft2_font_map_new(); #if PANGO_VERSION_MAJOR > 1 || PANGO_VERSION_MINOR > 21 context_ = pango_font_map_create_context(pangoFontMap); #else context_ = pango_ft2_font_map_create_context(PANGO_FT2_FONT_MAP(pangoFontMap)); #endif currentFont_ = 0; }
void gtk_glwidget_create_font(){ PangoFontDescription *font_desc; PangoLayout *layout; PangoRectangle log_rect; int font_ascent_pango_units; int font_descent_pango_units; if ( _debug_font_created ) { Error( "Programming error: gtk_glwidget_create_font() was already called; " "you must call gtk_glwidget_destroy_font() before creating font again" ); } _debug_font_created = 1; font_map = pango_ft2_font_map_new(); pango_ft2_font_map_set_resolution( PANGO_FT2_FONT_MAP( font_map ), 72, 72 ); ft2_context = pango_font_map_create_context( PANGO_FONT_MAP( font_map )); font_desc = pango_font_description_from_string( font_string ); pango_font_description_set_size( font_desc, font_height * PANGO_SCALE ); pango_context_set_font_description( ft2_context, font_desc ); pango_font_description_free( font_desc ); layout = pango_layout_new( ft2_context ); // I don't believe that's standard preprocessor syntax? #if !PANGO_VERSION_CHECK( 1,22,0 ) PangoLayoutIter *iter; iter = pango_layout_get_iter( layout ); font_ascent_pango_units = pango_layout_iter_get_baseline( iter ); pango_layout_iter_free( iter ); #else font_ascent_pango_units = pango_layout_get_baseline( layout ); #endif pango_layout_get_extents( layout, NULL, &log_rect ); g_object_unref( G_OBJECT( layout ) ); font_descent_pango_units = log_rect.height - font_ascent_pango_units; font_ascent = PANGO_PIXELS_CEIL( font_ascent_pango_units ); font_descent = PANGO_PIXELS_CEIL( font_descent_pango_units ); y_offset_bitmap_render_pango_units = ( font_ascent * PANGO_SCALE ) - font_ascent_pango_units; }
static PangoContext * pangoft2_view_get_context (gpointer instance) { return pango_ft2_font_map_create_context (PANGO_FT2_FONT_MAP (instance)); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont (JNIEnv *env, jobject self, jstring family_name_str, jint style_int, jint size, jboolean useGraphics2D) { struct peerfont *pfont = NULL; char const *family_name = NULL; enum java_awt_font_style style; PangoFT2FontMap *ft2_map; gdk_threads_enter (); style = (enum java_awt_font_style) style_int; g_assert (self != NULL); pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, self); g_assert (pfont != NULL); if (pfont->ctx != NULL) g_object_unref (pfont->ctx); if (pfont->font != NULL) g_object_unref (pfont->font); if (pfont->desc != NULL) pango_font_description_free (pfont->desc); pfont->desc = pango_font_description_new (); g_assert (pfont->desc != NULL); family_name = (*env)->GetStringUTFChars(env, family_name_str, 0); g_assert (family_name != NULL); pango_font_description_set_family (pfont->desc, family_name); (*env)->ReleaseStringUTFChars(env, family_name_str, family_name); if (style & java_awt_font_BOLD) pango_font_description_set_weight (pfont->desc, PANGO_WEIGHT_BOLD); if (style & java_awt_font_ITALIC) pango_font_description_set_style (pfont->desc, PANGO_STYLE_ITALIC); if (useGraphics2D) { pango_font_description_set_size (pfont->desc, size * PANGO_SCALE); if (pfont->ctx == NULL) { ft2_map = PANGO_FT2_FONT_MAP(pango_ft2_font_map_for_display ()); pfont->ctx = pango_ft2_font_map_create_context (ft2_map); } } else { /* GDK uses a slightly different DPI setting. */ pango_font_description_set_size (pfont->desc, size * dpi_conversion_factor); if (pfont->ctx == NULL) pfont->ctx = gdk_pango_context_get(); } g_assert (pfont->ctx != NULL); if (pfont->font != NULL) { g_object_unref (pfont->font); pfont->font = NULL; } pango_context_set_font_description (pfont->ctx, pfont->desc); pango_context_set_language (pfont->ctx, gtk_get_default_language()); pfont->font = pango_context_load_font (pfont->ctx, pfont->desc); g_assert (pfont->font != NULL); if (pfont->layout == NULL) pfont->layout = pango_layout_new (pfont->ctx); g_assert (pfont->layout != NULL); gdk_threads_leave (); }