Compare commits

...

1 Commits

Author SHA1 Message Date
Matthias Clasen
201780a15f gpu: Fix text clipping issues with large scales
This was observed in #6313.
2024-01-08 21:48:59 -05:00

View File

@@ -663,10 +663,17 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
cache = g_new (GskGpuCachedGlyph, 1); cache = g_new (GskGpuCachedGlyph, 1);
pango_font_get_glyph_extents (font, glyph, &ink_rect, NULL); pango_font_get_glyph_extents (font, glyph, &ink_rect, NULL);
origin.x = floor (ink_rect.x * scale / PANGO_SCALE); pango_extents_to_pixels (&ink_rect, NULL);
origin.y = floor (ink_rect.y * scale / PANGO_SCALE);
rect.size.width = ceil ((ink_rect.x + ink_rect.width) * scale / PANGO_SCALE) - origin.x; ink_rect.x -= 1;
rect.size.height = ceil ((ink_rect.y + ink_rect.height) * scale / PANGO_SCALE) - origin.y; ink_rect.width += 2;
ink_rect.y -= 1;
ink_rect.height += 2;
origin.x = floor (ink_rect.x * scale);
origin.y = floor (ink_rect.y * scale);
rect.size.width = ceil ((ink_rect.x + ink_rect.width) * scale) - origin.x;
rect.size.height = ceil ((ink_rect.y + ink_rect.height) * scale) - origin.y;
padding = 1; padding = 1;
image = gsk_gpu_device_add_atlas_image (self, image = gsk_gpu_device_add_atlas_image (self,
@@ -682,10 +689,9 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
} }
else else
{ {
image = gsk_gpu_device_create_upload_image (self, FALSE, GDK_MEMORY_DEFAULT, rect.size.width, rect.size.height), image = gsk_gpu_device_create_upload_image (self, FALSE, GDK_MEMORY_DEFAULT, rect.size.width + 2 * padding, rect.size.height + 2 * padding),
rect.origin.x = 0; rect.origin.x = padding;
rect.origin.y = 0; rect.origin.y = padding;
padding = 0;
cache = gsk_gpu_cached_new (self, &GSK_GPU_CACHED_GLYPH_CLASS, NULL); cache = gsk_gpu_cached_new (self, &GSK_GPU_CACHED_GLYPH_CLASS, NULL);
} }