summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pango/pango-layout.c4
-rw-r--r--pango/pangocairo-coretextfont.c5
-rw-r--r--pango/pangocoretext-fontmap.c4
-rw-r--r--utils/viewer-pangocairo.c19
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);
}
}