summaryrefslogtreecommitdiff
path: root/pango/pango-context.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-08-03 15:59:58 -0400
committerMatthias Clasen <mclasen@redhat.com>2019-08-03 16:30:23 -0400
commit77b78746c901f95ca45a9ccffe9c32a38c0fb32b (patch)
treed9902f62f26390d1fb8ae75ab20b2df45ef6ba49 /pango/pango-context.c
parentb5634799586ed8e3496ffc237b8d08e6d4e64d67 (diff)
downloadpango-77b78746c901f95ca45a9ccffe9c32a38c0fb32b.tar.gz
context: Add an option for rounding glyph positions
This is a global option, similar in spirit to font options, so it makes sense to keep it in PangoContext. Default to rounding glyph positions, which preserves the pre-1.44 behavior and should help cure all the 'broken' font rendering with older cairo versions.
Diffstat (limited to 'pango/pango-context.c')
-rw-r--r--pango/pango-context.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/pango/pango-context.c b/pango/pango-context.c
index 6ba64ce1..99fa454a 100644
--- a/pango/pango-context.c
+++ b/pango/pango-context.c
@@ -79,6 +79,8 @@ struct _PangoContext
PangoMatrix *matrix;
PangoFontMap *font_map;
+
+ gboolean round_glyph_positions;
};
struct _PangoContextClass
@@ -103,6 +105,7 @@ pango_context_init (PangoContext *context)
context->set_language = NULL;
context->language = pango_language_get_default ();
context->font_map = NULL;
+ context->round_glyph_positions = TRUE;
context->font_desc = pango_font_description_new ();
pango_font_description_set_family_static (context->font_desc, "serif");
@@ -1857,3 +1860,46 @@ pango_context_get_serial (PangoContext *context)
check_fontmap_changed (context);
return context->serial;
}
+
+/**
+ * pango_context_set_round_glyph_positions:
+ * @context: a #PangoContext
+ * @round_positions: whether to round glyph positions
+ *
+ * Sets whether font rendering with this context should
+ * round glyph positions and widths to integral positions,
+ * in device units.
+ *
+ * This is useful when the renderer can't handle subpixel
+ * positioning of glyphs.
+ *
+ * The default value is to round glyph positions, to remain
+ * compatible with previous Pango behavior.
+ *
+ * Since: 1.44
+ */
+void
+pango_context_set_round_glyph_positions (PangoContext *context,
+ gboolean round_positions)
+{
+ if (context->round_glyph_positions != round_positions)
+ {
+ context->round_glyph_positions = round_positions;
+ context_changed (context);
+ }
+}
+
+/**
+ * pango_context_get_round_glyph_positions:
+ * @context: a #PangoContext
+ *
+ * Returns whether font rendering with this context should
+ * round glyph positions and widths.
+ *
+ * Since: 1.44
+ */
+gboolean
+pango_context_get_round_glyph_positions (PangoContext *context)
+{
+ return context->round_glyph_positions;
+}