Compare commits

...

2 Commits

Author SHA1 Message Date
Matthias Clasen
fac12b5426 gsk: Use gsk_text_node_use_font_hinting
The render node now provides this information, so we don't need
to recompute it ourselves.
2024-03-12 17:50:34 -04:00
Matthias Clasen
b58278acf1 gsk: Add gsk_text_node_use_font_hinting
This returns whether the font is going to use hinting for
rendering. This information is needed in the renderer to
decide about glyph alignment.
2024-03-12 17:50:34 -04:00
3 changed files with 9 additions and 1 deletions

View File

@@ -3017,6 +3017,7 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
num_glyphs = gsk_text_node_get_num_glyphs (node);
glyphs = gsk_text_node_get_glyphs (node, NULL);
font = gsk_text_node_get_font (node);
hinting = gsk_text_node_use_font_hinting (node);
offset = *gsk_text_node_get_offset (node);
offset.x += self->offset.x;
offset.y += self->offset.y;
@@ -3025,7 +3026,6 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
inv_scale = 1.f / scale;
glyph_align = gsk_gpu_frame_should_optimize (self->frame, GSK_GPU_OPTIMIZE_GLYPH_ALIGN);
hinting = gsk_font_get_hint_style (font) != CAIRO_HINT_STYLE_NONE;
for (i = 0; i < num_glyphs; i++)
{

View File

@@ -5833,6 +5833,7 @@ gsk_text_node_new (PangoFont *font,
self = gsk_render_node_alloc (GSK_TEXT_NODE);
node = (GskRenderNode *) self;
node->offscreen_for_opacity = FALSE;
node->font_hinting = gsk_font_get_hint_style (font) != CAIRO_HINT_STYLE_NONE;
self->fontmap = g_object_ref (pango_font_get_font_map (font));
self->font = g_object_ref (font);

View File

@@ -34,6 +34,7 @@ struct _GskRenderNode
guint preferred_depth : 2;
guint offscreen_for_opacity : 1;
guint font_hinting : 1;
};
typedef struct
@@ -100,6 +101,12 @@ gboolean gsk_container_node_is_disjoint (const GskRenderNode
gboolean gsk_render_node_use_offscreen_for_opacity (const GskRenderNode *node) G_GNUC_PURE;
static inline gboolean
gsk_text_node_use_font_hinting (const GskRenderNode *node)
{
return node->font_hinting;
}
#define gsk_render_node_ref(node) _gsk_render_node_ref(node)
#define gsk_render_node_unref(node) _gsk_render_node_unref(node)