summaryrefslogtreecommitdiff
path: root/src/layout/text.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-02-06 11:15:48 +0100
committerLaurenz <laurmaedje@gmail.com>2020-02-06 11:15:48 +0100
commit02dc29d18a7b67edf0eaa5d125be22eec6cfebb7 (patch)
tree2079ec1be481265655c798adc94d5e9e0166cfc2 /src/layout/text.rs
parent751812f45141a7b2022d0dba138457f3c21950b0 (diff)
Highlight bold / italic / monospace 🎨
Diffstat (limited to 'src/layout/text.rs')
-rw-r--r--src/layout/text.rs25
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);