From 450cd3d42ba90f8658f260560b69cdc8a52f061b Mon Sep 17 00:00:00 2001 From: John Tur Date: Sat, 29 Nov 2025 17:04:04 -0500 Subject: [PATCH] Respect vertical placement offset for glyphs (#43812) Before: image After: image Release Notes: - N/A --- crates/gpui/src/platform/windows/direct_write.rs | 2 +- crates/gpui/src/text_system/line.rs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/gpui/src/platform/windows/direct_write.rs b/crates/gpui/src/platform/windows/direct_write.rs index 84539633c9e9c2ba2204d8ccaa94bd4156f8ea89..22b8e6231aa0812b63a899cfa61c94a258700079 100644 --- a/crates/gpui/src/platform/windows/direct_write.rs +++ b/crates/gpui/src/platform/windows/direct_write.rs @@ -1515,7 +1515,7 @@ impl IDWriteTextRenderer_Impl for TextRenderer_Impl { id, position: point( px(context.width + glyph_offsets[this_glyph_idx].advanceOffset), - px(0.0), + px(-glyph_offsets[this_glyph_idx].ascenderOffset), ), index: context.index_converter.utf8_ix, is_emoji, diff --git a/crates/gpui/src/text_system/line.rs b/crates/gpui/src/text_system/line.rs index 189a3e85c6b4fed52eddb45d5fa151314830c0e9..84618eccc43dc3f189d3d49ea22b9d98f5ad9f85 100644 --- a/crates/gpui/src/text_system/line.rs +++ b/crates/gpui/src/text_system/line.rs @@ -369,16 +369,17 @@ fn paint_line( let content_mask = window.content_mask(); if max_glyph_bounds.intersects(&content_mask.bounds) { + let vertical_offset = point(px(0.0), glyph.position.y); if glyph.is_emoji { window.paint_emoji( - glyph_origin + baseline_offset, + glyph_origin + baseline_offset + vertical_offset, run.font_id, glyph.id, layout.font_size, )?; } else { window.paint_glyph( - glyph_origin + baseline_offset, + glyph_origin + baseline_offset + vertical_offset, run.font_id, glyph.id, layout.font_size,