Группа :: Graphical desktop/MATE
Пакет: mate-control-center
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: mate-control-center_fv-font-widget-sync-from-Sushi.patch
Скачать
Скачать
diff -uprN mate-control-center/font-viewer/sushi-font-loader.c mate-control-center-test/font-viewer/sushi-font-loader.c
--- mate-control-center/font-viewer/sushi-font-loader.c 2015-08-24 13:08:20.221313939 +0200
+++ mate-control-center-test/font-viewer/sushi-font-loader.c 2015-08-24 12:53:28.984809214 +0200
@@ -156,16 +156,20 @@ sushi_new_ft_face_from_uri (FT_Library l
GError **error)
{
FontLoadJob *job = NULL;
+ FT_Face face;
job = font_load_job_new (library, uri, NULL, NULL);
font_load_job_do_load (job, error);
if ((error != NULL) && (*error != NULL)) {
- g_object_unref (job);
+ font_load_job_free (job);
return NULL;
}
- return create_face_from_contents (job, contents, error);
+ face = create_face_from_contents (job, contents, error);
+ font_load_job_free (job);
+
+ return face;
}
/**
diff -uprN mate-control-center/font-viewer/sushi-font-widget.c mate-control-center-test/font-viewer/sushi-font-widget.c
--- mate-control-center/font-viewer/sushi-font-widget.c 2015-08-23 20:26:33.178608628 +0200
+++ mate-control-center-test/font-viewer/sushi-font-widget.c 2015-08-24 13:02:12.482419266 +0200
@@ -65,8 +65,6 @@ G_DEFINE_TYPE (SushiFontWidget, sushi_fo
#define SURFACE_SIZE 4
#define SECTION_SPACING 16
-#define TITLE_SIZE 6
-
static const gchar lowercase_text_stock[] = "abcdefghijklmnopqrstuvwxyz";
static const gchar uppercase_text_stock[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static const gchar punctuation_text_stock[] = "0123456789.:,;(*!?')";
@@ -224,7 +222,8 @@ build_strings_for_face (SushiFontWidget
static gint *
build_sizes_table (FT_Face face,
gint *n_sizes,
- gint *alpha_size)
+ gint *alpha_size,
+ gint *title_size)
{
gint *sizes = NULL;
gint i;
@@ -247,8 +246,13 @@ build_sizes_table (FT_Face face,
sizes[11] = 168;
sizes[12] = 192;
sizes[13] = 216;
+
*alpha_size = 24;
+ *title_size = 48;
} else {
+ gint alpha_diff = G_MAXINT;
+ gint title_diff = G_MAXINT;
+
/* use fixed sizes */
*n_sizes = face->num_fixed_sizes;
sizes = g_new (gint, *n_sizes);
@@ -257,9 +261,14 @@ build_sizes_table (FT_Face face,
for (i = 0; i < face->num_fixed_sizes; i++) {
sizes[i] = face->available_sizes[i].height;
- /* work out which font size to render */
- if (face->available_sizes[i].height <= 24)
- *alpha_size = face->available_sizes[i].height;
+ if ((gint) (abs (sizes[i] - 24)) < alpha_diff) {
+ alpha_diff = (gint) abs (sizes[i] - 24);
+ *alpha_size = sizes[i];
+ }
+ if ((gint) (abs (sizes[i] - 24)) < title_diff) {
+ title_diff = (gint) abs (sizes[i] - 24);
+ *title_size = sizes[i];
+ }
}
}
@@ -278,7 +287,7 @@ sushi_font_widget_size_request (GtkWidge
cairo_text_extents_t extents;
cairo_font_extents_t font_extents;
cairo_font_face_t *font;
- gint *sizes = NULL, n_sizes, alpha_size;
+ gint *sizes = NULL, n_sizes, alpha_size, title_size;
cairo_t *cr;
cairo_surface_t *surface;
FT_Face face = priv->face;
@@ -297,6 +306,9 @@ sushi_font_widget_size_request (GtkWidge
return;
}
+ if (min_height != NULL)
+ *min_height = -1;
+
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
SURFACE_SIZE, SURFACE_SIZE);
cr = cairo_create (surface);
@@ -304,7 +316,7 @@ sushi_font_widget_size_request (GtkWidge
state = gtk_style_context_get_state (context);
gtk_style_context_get_padding (context, state, &padding);
- sizes = build_sizes_table (face, &n_sizes, &alpha_size);
+ sizes = build_sizes_table (face, &n_sizes, &alpha_size, &title_size);
/* calculate size of pixmap to use */
pixmap_width = padding.left + padding.right;
@@ -315,7 +327,7 @@ sushi_font_widget_size_request (GtkWidge
cairo_font_face_destroy (font);
if (self->priv->font_supports_title) {
- cairo_set_font_size (cr, sizes[TITLE_SIZE]);
+ cairo_set_font_size (cr, title_size);
cairo_font_extents (cr, &font_extents);
cairo_text_extents (cr, self->priv->font_name, &extents);
pixmap_height += font_extents.ascent + font_extents.descent +
@@ -364,6 +376,9 @@ sushi_font_widget_size_request (GtkWidge
pixmap_height += padding.bottom + SECTION_SPACING;
+ if (min_height != NULL && *min_height == -1)
+ *min_height = pixmap_height;
+
if (width != NULL)
*width = pixmap_width;
@@ -406,7 +421,7 @@ sushi_font_widget_draw (GtkWidget *drawi
{
SushiFontWidget *self = SUSHI_FONT_WIDGET (drawing_area);
SushiFontWidgetPrivate *priv = self->priv;
- gint *sizes = NULL, n_sizes, alpha_size, pos_y = 0, i;
+ gint *sizes = NULL, n_sizes, alpha_size, title_size, pos_y = 0, i;
cairo_font_face_t *font;
FT_Face face = priv->face;
GtkStyleContext *context;
@@ -425,7 +440,7 @@ sushi_font_widget_draw (GtkWidget *drawi
gdk_cairo_set_source_rgba (cr, &color);
- sizes = build_sizes_table (face, &n_sizes, &alpha_size);
+ sizes = build_sizes_table (face, &n_sizes, &alpha_size, &title_size);
font = cairo_ft_font_face_create_for_ft_face (face, 0);
cairo_set_font_face (cr, font);
@@ -436,7 +451,7 @@ sushi_font_widget_draw (GtkWidget *drawi
/* draw text */
if (self->priv->font_supports_title) {
- cairo_set_font_size (cr, sizes[TITLE_SIZE]);
+ cairo_set_font_size (cr, title_size);
draw_string (cr, padding, self->priv->font_name, &pos_y);
}
Binц╓rdateien mate-control-center/.git/index und mate-control-center-test/.git/index sind verschieden.