From fa9360f78d1f2082c79268f929ab767c105cfaa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=B0=8F=E7=99=BD?= <364772080@qq.com> Date: Thu, 11 Jul 2024 03:38:49 +0800 Subject: [PATCH] windows: Work around font rendering clipping issue (#14075) Release Notes: - N/A --- .../gpui/src/platform/windows/direct_write.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/crates/gpui/src/platform/windows/direct_write.rs b/crates/gpui/src/platform/windows/direct_write.rs index f3823d9357f8fcbc98823cea093fcda18034b953..461bae88589f9e1cd92044d0a97349c142880a37 100644 --- a/crates/gpui/src/platform/windows/direct_write.rs +++ b/crates/gpui/src/platform/windows/direct_write.rs @@ -583,6 +583,18 @@ impl DirectWriteState { DWRITE_MEASURING_MODE_NATURAL, )? }; + // todo(windows) + // This is a walkaround, deleted when figured out. + let y_offset; + let extra_height; + if params.is_emoji { + y_offset = 0; + extra_height = 0; + } else { + // make some room for scaler. + y_offset = -1; + extra_height = 2; + } if bounds.right < bounds.left { Ok(Bounds { @@ -593,11 +605,13 @@ impl DirectWriteState { Ok(Bounds { origin: point( ((bounds.left * params.scale_factor).ceil() as i32).into(), - ((bounds.top * params.scale_factor).ceil() as i32).into(), + ((bounds.top * params.scale_factor).ceil() as i32 + y_offset).into(), ), size: size( (((bounds.right - bounds.left) * params.scale_factor).ceil() as i32).into(), - (((bounds.bottom - bounds.top) * params.scale_factor).ceil() as i32).into(), + (((bounds.bottom - bounds.top) * params.scale_factor).ceil() as i32 + + extra_height) + .into(), ), }) }