mirror of
https://github.com/swaywm/sway
synced 2024-11-22 20:42:00 +01:00
common/pango: Disable glyph position rounding
Pango rounds glyph position and widths to nearest integer, which leads to font dimensions jumping around when rendering with a scale, causing text geometry to jump around when changing scale. This is disturbing when text buffers change scale, and also mean that the text geometry calculations in sway_text_node are incorrect. Disable this rounding to make the geometry stable.
This commit is contained in:
parent
28fd73589d
commit
8c5b23e592
@ -53,6 +53,8 @@ size_t escape_markup_text(const char *src, char *dest) {
|
|||||||
PangoLayout *get_pango_layout(cairo_t *cairo, const PangoFontDescription *desc,
|
PangoLayout *get_pango_layout(cairo_t *cairo, const PangoFontDescription *desc,
|
||||||
const char *text, double scale, bool markup) {
|
const char *text, double scale, bool markup) {
|
||||||
PangoLayout *layout = pango_cairo_create_layout(cairo);
|
PangoLayout *layout = pango_cairo_create_layout(cairo);
|
||||||
|
pango_context_set_round_glyph_positions(pango_layout_get_context(layout), false);
|
||||||
|
|
||||||
PangoAttrList *attrs;
|
PangoAttrList *attrs;
|
||||||
if (markup) {
|
if (markup) {
|
||||||
char *buf;
|
char *buf;
|
||||||
@ -104,6 +106,7 @@ void get_text_size(cairo_t *cairo, const PangoFontDescription *desc, int *width,
|
|||||||
void get_text_metrics(const PangoFontDescription *description, int *height, int *baseline) {
|
void get_text_metrics(const PangoFontDescription *description, int *height, int *baseline) {
|
||||||
cairo_t *cairo = cairo_create(NULL);
|
cairo_t *cairo = cairo_create(NULL);
|
||||||
PangoContext *pango = pango_cairo_create_context(cairo);
|
PangoContext *pango = pango_cairo_create_context(cairo);
|
||||||
|
pango_context_set_round_glyph_positions(pango, false);
|
||||||
// When passing NULL as a language, pango uses the current locale.
|
// When passing NULL as a language, pango uses the current locale.
|
||||||
PangoFontMetrics *metrics = pango_context_get_metrics(pango, description, NULL);
|
PangoFontMetrics *metrics = pango_context_get_metrics(pango, description, NULL);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user