diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-02-06 11:15:48 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-02-06 11:15:48 +0100 |
| commit | 02dc29d18a7b67edf0eaa5d125be22eec6cfebb7 (patch) | |
| tree | 2079ec1be481265655c798adc94d5e9e0166cfc2 /src/layout/text.rs | |
| parent | 751812f45141a7b2022d0dba138457f3c21950b0 (diff) | |
Highlight bold / italic / monospace 🎨
Diffstat (limited to 'src/layout/text.rs')
| -rw-r--r-- | src/layout/text.rs | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/layout/text.rs b/src/layout/text.rs index c6fa45d1..614d59fd 100644 --- a/src/layout/text.rs +++ b/src/layout/text.rs @@ -113,13 +113,28 @@ impl<'a> TextLayouter<'a> { async fn select_font(&mut self, c: char) -> Option<(FontIndex, Size)> { let mut loader = self.ctx.loader.borrow_mut(); - let query = FontQuery { - fallback: &self.ctx.style.fallback, - variant: self.ctx.style.variant, - c, + let mut variant = self.ctx.style.variant; + if self.ctx.style.bolder { + variant.weight.0 += 300; + } + + let queried = if self.ctx.style.monospace { + loader.get(FontQuery { + // FIXME: This is a hack. + fallback: std::iter::once("source code pro") + .chain(self.ctx.style.fallback.iter()), + variant, + c, + }).await + } else { + loader.get(FontQuery { + fallback: self.ctx.style.fallback.iter(), + variant, + c, + }).await }; - if let Some((font, index)) = loader.get(query).await { + if let Some((font, index)) = queried { // Determine the width of the char. let header = font.read_table::<Header>().ok()?; let font_unit_ratio = 1.0 / (header.units_per_em as f32); |
