1
1
mirror of https://github.com/wez/wezterm.git synced 2024-11-23 15:04:36 +03:00

adjust hinting for box drawing

This looks better at more sizes

refs: #584
This commit is contained in:
Wez Furlong 2021-06-26 13:56:16 -07:00
parent b7f504b15e
commit e786968578

View File

@ -224,16 +224,22 @@ pub enum BlockCoord {
impl BlockCoord { impl BlockCoord {
/// Compute the actual pixel value given the max dimension. /// Compute the actual pixel value given the max dimension.
/// For interior points, add 0.5 so that we get the middle of the row;
/// in AA modes with 1px wide strokes this gives better results.
pub fn to_pixel(self, max: usize, underline_height: f32) -> f32 { pub fn to_pixel(self, max: usize, underline_height: f32) -> f32 {
/// For interior points, adjust so that we get the middle of the row;
/// in AA modes with 1px wide strokes this gives better results.
fn hint(v: f32) -> f32 {
if v.fract() == 0. {
v - 0.5
} else {
v
}
}
match self { match self {
Self::Zero => 0., Self::Zero => 0.,
Self::One => max as f32, Self::One => max as f32,
Self::Frac(num, den) => (max as f32 * num as f32 / den as f32) + 0.5, Self::Frac(num, den) => hint(max as f32 * num as f32 / den as f32),
Self::FracWithOffset(num, den, under) => { Self::FracWithOffset(num, den, under) => {
((max as f32 * num as f32 / den as f32) + (underline_height * under.to_scale())) hint((max as f32 * num as f32 / den as f32) + (underline_height * under.to_scale()))
+ 0.5
} }
} }
} }