diff options
-rw-r--r-- | pango/pango-layout.c | 4 | ||||
-rw-r--r-- | pango/pangocairo-coretextfont.c | 5 | ||||
-rw-r--r-- | pango/pangocoretext-fontmap.c | 4 | ||||
-rw-r--r-- | utils/viewer-pangocairo.c | 19 |
4 files changed, 25 insertions, 7 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c index f88581f1..ac396ba0 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -2718,12 +2718,16 @@ pango_layout_get_caret_pos (PangoLayout *layout, { strong_pos->x += descender * slope_inv; strong_pos->width = strong_pos->height * slope_inv; + if (slope_inv < 0) + strong_pos->x -= strong_pos->width; } if (weak_pos) { weak_pos->x += descender * slope_inv; weak_pos->width = weak_pos->height * slope_inv; + if (slope_inv < 0) + weak_pos->x -= weak_pos->width; } } } diff --git a/pango/pangocairo-coretextfont.c b/pango/pangocairo-coretextfont.c index fa9f383a..07a71871 100644 --- a/pango/pangocairo-coretextfont.c +++ b/pango/pangocairo-coretextfont.c @@ -102,11 +102,6 @@ pango_cairo_core_text_font_create_base_metrics_for_context (PangoCairoFont *font { PangoCoreTextFont *cfont = (PangoCoreTextFont *) font; PangoFontMetrics *metrics; - PangoFontDescription *font_desc; - PangoLayout *layout; - PangoRectangle extents; - PangoLanguage *language = pango_context_get_language (context); - const char *sample_str = pango_language_get_sample_string (language); CTFontRef ctfont; metrics = pango_font_metrics_new (); diff --git a/pango/pangocoretext-fontmap.c b/pango/pangocoretext-fontmap.c index 81bf7bf7..0980303b 100644 --- a/pango/pangocoretext-fontmap.c +++ b/pango/pangocoretext-fontmap.c @@ -849,7 +849,7 @@ get_scaled_size (PangoCoreTextFontMap *fontmap, const PangoFontDescription *desc) { double size = pango_font_description_get_size (desc); - PangoMatrix *matrix = pango_context_get_matrix (context); + const PangoMatrix *matrix = pango_context_get_matrix (context); double scale_factor = pango_matrix_get_font_scale_factor (matrix); if (!pango_font_description_get_size_is_absolute(desc)) @@ -1422,7 +1422,7 @@ pango_core_text_font_map_load_fontset (PangoFontMap *fontmap, /* Cannot use pango_core_text_fontset_key_free() here */ pango_font_description_free (key.desc); - return g_object_ref (fontset); + return g_object_ref (PANGO_FONTSET (fontset)); } static void diff --git a/utils/viewer-pangocairo.c b/utils/viewer-pangocairo.c index 1bc9f025..b010c3f3 100644 --- a/utils/viewer-pangocairo.c +++ b/utils/viewer-pangocairo.c @@ -534,6 +534,25 @@ render_callback (PangoLayout *layout, while (pango_layout_iter_next_run (iter)); pango_layout_iter_free (iter); + const char *text = pango_layout_get_text (layout); + int length = g_utf8_strlen (text, -1); + for (int i = 0; i <= length; i++) + { + PangoRectangle rect; + pango_layout_get_caret_pos (layout, i, &rect, NULL); + + cairo_move_to (cr, + (double)rect.x / PANGO_SCALE - lw / 2 + + (double)rect.width / PANGO_SCALE + lw, + (double)rect.y / PANGO_SCALE - lw / 2); + cairo_line_to (cr, + (double)rect.x / PANGO_SCALE - lw / 2, + (double)rect.y / PANGO_SCALE - lw / 2 + + (double)rect.height / PANGO_SCALE + lw); + cairo_stroke (cr); + + } + cairo_restore (cr); } } |