diff options
| author | Christian Duerr <chrisduerr@users.noreply.github.com> | 2018-12-22 17:16:54 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-22 17:16:54 +0000 |
| commit | 2f9b815ebdcee4558284e5e9cef6ef282dc87b08 (patch) | |
| tree | 09bf03e5c69d9e7e99e04ff55983ea5774435b86 /font/src/rusttype | |
| parent | dad44134e2546dffec918a00169d32c6f9edc709 (diff) | |
| download | r-alacritty-2f9b815ebdcee4558284e5e9cef6ef282dc87b08.tar.gz r-alacritty-2f9b815ebdcee4558284e5e9cef6ef282dc87b08.tar.bz2 r-alacritty-2f9b815ebdcee4558284e5e9cef6ef282dc87b08.zip | |
Add proper underline and strikeout support
This makes use of the new rectangle rendering methods used to display
the colored visual bell to add proper underline and strikeout support to
Alacritty.
Diffstat (limited to 'font/src/rusttype')
| -rw-r--r-- | font/src/rusttype/mod.rs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/font/src/rusttype/mod.rs b/font/src/rusttype/mod.rs index dea58150..2d28a8bd 100644 --- a/font/src/rusttype/mod.rs +++ b/font/src/rusttype/mod.rs @@ -33,10 +33,25 @@ impl crate::Rasterize for RustTypeRasterizer { .ok_or(Error::MissingGlyph)? .scaled(scale) .h_metrics(); + + let line_height = f64::from(vmetrics.ascent - vmetrics.descent + vmetrics.line_gap); + let average_advance = f64::from(hmetrics.advance_width); + let descent = vmetrics.descent; + + // Strikeout and underline metrics + // RustType doesn't support these, so we make up our own + let thickness = (descent / 5.).round(); + let underline_position = descent / 2. + thickness / 2.; + let strikeout_position = (line_height as f32 / 2. - descent).round(); + Ok(Metrics { - descent: vmetrics.descent, - average_advance: f64::from(hmetrics.advance_width), - line_height: f64::from(vmetrics.ascent - vmetrics.descent + vmetrics.line_gap), + descent, + average_advance, + line_height, + underline_position, + underline_thickness: thickness, + strikeout_position, + strikeout_thickness: thickness, }) } |