diff --git a/gpui/src/platform/mac/renderer.rs b/gpui/src/platform/mac/renderer.rs index a79ce15869b9eebd53407bb9c82c554f869a75d0..f679edca2bce3ae179042a7b1498274c7706bb5a 100644 --- a/gpui/src/platform/mac/renderer.rs +++ b/gpui/src/platform/mac/renderer.rs @@ -293,11 +293,13 @@ impl Renderer { glyph.origin, scene.scale_factor(), ) { + // Snap sprite to pixel grid. + let origin = (glyph.origin * scene.scale_factor()).floor() + sprite.offset.to_f32(); sprites_by_atlas .entry(sprite.atlas_id) .or_insert_with(Vec::new) .push(shaders::GPUISprite { - origin: (glyph.origin * scene.scale_factor() + sprite.offset).to_float2(), + origin: origin.to_float2(), size: sprite.size.to_float2(), atlas_origin: sprite.atlas_origin.to_float2(), color: glyph.color.to_uchar4(), diff --git a/gpui/src/platform/mac/sprite_cache.rs b/gpui/src/platform/mac/sprite_cache.rs index 3d718a25f08cd1e81e49e0f09ec3b7c0a73ee05c..7f73494e5fce6ea70851ce1fd028c96944ff4b6c 100644 --- a/gpui/src/platform/mac/sprite_cache.rs +++ b/gpui/src/platform/mac/sprite_cache.rs @@ -23,7 +23,7 @@ struct GlyphDescriptor { pub struct GlyphSprite { pub atlas_id: usize, pub atlas_origin: Vector2I, - pub offset: Vector2F, + pub offset: Vector2I, pub size: Vector2I, } @@ -109,13 +109,10 @@ impl SpriteCache { bounds }); - // Snap sprite to pixel grid. - let offset = glyph_bounds.origin().to_f32() - - vec2f(target_position.x().fract(), target_position.y().fract()); Some(GlyphSprite { atlas_id: atlasses.len() - 1, atlas_origin: atlas_bounds.origin(), - offset, + offset: glyph_bounds.origin(), size: glyph_bounds.size(), }) })