summaryrefslogtreecommitdiff
path: root/font/src/darwin/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'font/src/darwin/mod.rs')
-rw-r--r--font/src/darwin/mod.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/font/src/darwin/mod.rs b/font/src/darwin/mod.rs
index 97f02553..877564fa 100644
--- a/font/src/darwin/mod.rs
+++ b/font/src/darwin/mod.rs
@@ -461,6 +461,19 @@ impl Font {
}
pub fn get_glyph(&self, character: char, _size: f64, use_thin_strokes: bool) -> Result<RasterizedGlyph, Error> {
+ // Render custom symbols for underline and beam cursor
+ if character == super::UNDERLINE_CURSOR_CHAR {
+ let descent = -(self.ct_font.descent() as i32);
+ let width = self.glyph_advance('0') as i32;
+ return super::get_underline_cursor_glyph(descent, width);
+ } else if character == super::BEAM_CURSOR_CHAR {
+ let metrics = self.metrics();
+ let height = metrics.line_height;
+ let ascent = height - self.ct_font.descent() + 1.;
+ let width = self.glyph_advance('0') as i32;
+ return super::get_beam_cursor_glyph(ascent as i32, height as i32, width);
+ };
+
let glyph_index = self.glyph_index(character)
.ok_or(Error::MissingGlyph(character))?;