diff --git a/src/renderer/cell.zig b/src/renderer/cell.zig index 56d606b6c..9bbd8fd7b 100644 --- a/src/renderer/cell.zig +++ b/src/renderer/cell.zig @@ -41,7 +41,9 @@ pub fn fgMode( // the subsequent character is empty, then we allow it to use // the full glyph size. See #1071. .text => text: { - if (!ziglyph.general_category.isPrivateUse(@intCast(cell.char))) { + if (!ziglyph.general_category.isPrivateUse(@intCast(cell.char)) and + !ziglyph.blocks.isDingbats(@intCast(cell.char))) + { break :text .normal; } diff --git a/src/renderer/shaders/cell.metal b/src/renderer/shaders/cell.metal index ccb340231..1ce7e74a4 100644 --- a/src/renderer/shaders/cell.metal +++ b/src/renderer/shaders/cell.metal @@ -165,7 +165,7 @@ vertex VertexOut uber_vertex( if (input.mode == MODE_FG_CONSTRAINED) { if (glyph_size.x > cell_size_scaled.x) { float new_y = glyph_size.y * (cell_size_scaled.x / glyph_size.x); - glyph_offset.y += glyph_size.y - new_y; + glyph_offset.y += (glyph_size.y - new_y) / 2; glyph_size.y = new_y; glyph_size.x = cell_size_scaled.x; } diff --git a/src/renderer/shaders/cell.v.glsl b/src/renderer/shaders/cell.v.glsl index 18b586508..966c6e7e9 100644 --- a/src/renderer/shaders/cell.v.glsl +++ b/src/renderer/shaders/cell.v.glsl @@ -194,7 +194,7 @@ void main() { if (mode == MODE_FG_CONSTRAINED) { if (glyph_size.x > cell_size_scaled.x) { float new_y = glyph_size.y * (cell_size_scaled.x / glyph_size.x); - glyph_offset_calc.y = glyph_offset_calc.y + (glyph_size.y - new_y); + glyph_offset_calc.y = glyph_offset_calc.y + ((glyph_size.y - new_y) / 2); glyph_size_calc.y = new_y; glyph_size_calc.x = cell_size_scaled.x; }