mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-17 01:06:08 +03:00
coretext: fix emoji placement
This commit is contained in:
@ -215,7 +215,7 @@ pub const Face = struct {
|
||||
});
|
||||
|
||||
ctx.setAllowsFontSmoothing(true);
|
||||
ctx.setShouldSmoothFonts(true); // The amadeus "enthicken"
|
||||
ctx.setShouldSmoothFonts(false); // The amadeus "enthicken"
|
||||
ctx.setAllowsFontSubpixelQuantization(true);
|
||||
ctx.setShouldSubpixelQuantizeFonts(true);
|
||||
ctx.setAllowsFontSubpixelPositioning(true);
|
||||
@ -247,6 +247,18 @@ pub const Face = struct {
|
||||
atlas.set(region, buf);
|
||||
|
||||
const offset_y: i32 = offset_y: {
|
||||
// For non-scalable colorized fonts, we assume they are pictographic
|
||||
// and just center the glyph. So far this has only applied to emoji
|
||||
// fonts. Emoji fonts don't always report a correct ascender/descender
|
||||
// (mainly Apple Emoji) so we just center them. Also, since emoji font
|
||||
// aren't scalable, cell_baseline is incorrect anyways.
|
||||
//
|
||||
// NOTE(mitchellh): I don't know if this is right, this doesn't
|
||||
// _feel_ right, but it makes all my limited test cases work.
|
||||
if (color.color) {
|
||||
break :offset_y @intFromFloat(self.metrics.cell_height);
|
||||
}
|
||||
|
||||
// Our Y coordinate in 3D is (0, 0) bottom left, +y is UP.
|
||||
// We need to calculate our baseline from the bottom of a cell.
|
||||
const baseline_from_bottom = self.metrics.cell_height - self.metrics.cell_baseline;
|
||||
@ -258,6 +270,17 @@ pub const Face = struct {
|
||||
break :offset_y @intFromFloat(@ceil(baseline_with_offset));
|
||||
};
|
||||
|
||||
log.warn("FONT FONT FONT width={} height={} render_x={} render_y={} offset_y={} ascent={} cell_height={} cell_baseline={}", .{
|
||||
glyph_width,
|
||||
glyph_height,
|
||||
render_x,
|
||||
render_y,
|
||||
offset_y,
|
||||
glyph_ascent,
|
||||
self.metrics.cell_height,
|
||||
self.metrics.cell_baseline,
|
||||
});
|
||||
|
||||
return .{
|
||||
.width = glyph_width,
|
||||
.height = glyph_height,
|
||||
|
Reference in New Issue
Block a user