aboutsummaryrefslogtreecommitdiff
path: root/font/src/rusttype
diff options
context:
space:
mode:
authorChristian Duerr <chrisduerr@users.noreply.github.com>2018-12-22 17:16:54 +0000
committerGitHub <noreply@github.com>2018-12-22 17:16:54 +0000
commit2f9b815ebdcee4558284e5e9cef6ef282dc87b08 (patch)
tree09bf03e5c69d9e7e99e04ff55983ea5774435b86 /font/src/rusttype
parentdad44134e2546dffec918a00169d32c6f9edc709 (diff)
downloadr-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.rs21
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,
})
}