From 71dccde031dedc285042257c7e16bafb152dde58 Mon Sep 17 00:00:00 2001 From: LU Jialin Date: Mon, 11 Sep 2023 16:46:39 +0800 Subject: [PATCH] Provide `highlight` function for setting the background color of text (#2076) --- crates/typst-library/src/math/mod.rs | 5 +- crates/typst-library/src/text/deco.rs | 186 +++++++++++++++++++---- crates/typst-library/src/text/mod.rs | 17 ++- crates/typst-library/src/text/shaping.rs | 18 ++- crates/typst/src/geom/length.rs | 5 + tests/ref/text/deco.png | Bin 32958 -> 48180 bytes tests/typ/text/deco.typ | 32 +++- 7 files changed, 209 insertions(+), 54 deletions(-) diff --git a/crates/typst-library/src/math/mod.rs b/crates/typst-library/src/math/mod.rs index 40df524fb..5d32af64b 100644 --- a/crates/typst-library/src/math/mod.rs +++ b/crates/typst-library/src/math/mod.rs @@ -289,10 +289,11 @@ impl Layout for EquationElem { frame.push_frame(Point::new(x, y), counter) } } else { + let font_size = TextElem::size_in(styles); let slack = ParElem::leading_in(styles) * 0.7; - let top_edge = TextElem::top_edge_in(styles).resolve(styles, &font, None); + let top_edge = TextElem::top_edge_in(styles).resolve(font_size, &font, None); let bottom_edge = - -TextElem::bottom_edge_in(styles).resolve(styles, &font, None); + -TextElem::bottom_edge_in(styles).resolve(font_size, &font, None); let ascent = top_edge.max(frame.ascent() - slack); let descent = bottom_edge.max(frame.descent() - slack); diff --git a/crates/typst-library/src/text/deco.rs b/crates/typst-library/src/text/deco.rs index 9ec4ca329..c97ef325b 100644 --- a/crates/typst-library/src/text/deco.rs +++ b/crates/typst-library/src/text/deco.rs @@ -1,7 +1,7 @@ use kurbo::{BezPath, Line, ParamCurve}; use ttf_parser::{GlyphId, OutlineBuilder}; -use super::TextElem; +use super::{BottomEdge, BottomEdgeMetric, TextElem, TopEdge, TopEdgeMetric}; use crate::prelude::*; /// Underlines text. @@ -73,11 +73,12 @@ impl Show for UnderlineElem { #[tracing::instrument(name = "UnderlineElem::show", skip_all)] fn show(&self, _: &mut Vt, styles: StyleChain) -> SourceResult { Ok(self.body().styled(TextElem::set_deco(Decoration { - line: DecoLine::Underline, - stroke: self.stroke(styles).unwrap_or_default(), - offset: self.offset(styles), + line: DecoLine::Underline { + stroke: self.stroke(styles).unwrap_or_default(), + offset: self.offset(styles), + evade: self.evade(styles), + }, extent: self.extent(styles), - evade: self.evade(styles), }))) } } @@ -157,11 +158,12 @@ impl Show for OverlineElem { #[tracing::instrument(name = "OverlineElem::show", skip_all)] fn show(&self, _: &mut Vt, styles: StyleChain) -> SourceResult { Ok(self.body().styled(TextElem::set_deco(Decoration { - line: DecoLine::Overline, - stroke: self.stroke(styles).unwrap_or_default(), - offset: self.offset(styles), + line: DecoLine::Overline { + stroke: self.stroke(styles).unwrap_or_default(), + offset: self.offset(styles), + evade: self.evade(styles), + }, extent: self.extent(styles), - evade: self.evade(styles), }))) } } @@ -226,23 +228,98 @@ impl Show for StrikeElem { #[tracing::instrument(name = "StrikeElem::show", skip_all)] fn show(&self, _: &mut Vt, styles: StyleChain) -> SourceResult { Ok(self.body().styled(TextElem::set_deco(Decoration { - line: DecoLine::Strikethrough, - stroke: self.stroke(styles).unwrap_or_default(), - offset: self.offset(styles), + // Note that we do not support evade option for strikethrough. + line: DecoLine::Strikethrough { + stroke: self.stroke(styles).unwrap_or_default(), + offset: self.offset(styles), + }, extent: self.extent(styles), - evade: false, }))) } } -/// Defines a line that is positioned over, under or on top of text. +/// Highlights text with a background color. +/// +/// ## Example { #example } +/// ```example +/// This is #highlight[important]. +/// ``` +/// +/// Display: Highlight +/// Category: text +#[element(Show)] +pub struct HighlightElem { + /// The color to highlight the text with. + /// (Default: 0xffff5f) + /// + /// ```example + /// This is #highlight(fill: blue)[with blue]. + /// ``` + #[default(Color::Rgba(RgbaColor::new(0xFF, 0xFF, 0x5F, 0xFF)).into())] + pub fill: Paint, + + /// The top end of the background rectangle. Note that top edge will update + /// to be always higher than the glyph's bounding box. + /// (default: "ascender") + /// + /// ```example + /// #set highlight(top-edge: "ascender") + /// #highlight[a] #highlight[aib] + /// + /// #set highlight(top-edge: "x-height") + /// #highlight[a] #highlight[aib] + /// ``` + #[default(TopEdge::Metric(TopEdgeMetric::Ascender))] + pub top_edge: TopEdge, + + /// The bottom end of the background rectangle. Note that top edge will update + /// to be always lower than the glyph's bounding box. + /// (default: "descender") + /// + /// ```example + /// #set highlight(bottom-edge: "descender") + /// #highlight[a] #highlight[ap] + /// + /// #set highlight(bottom-edge: "baseline") + /// #highlight[a] #highlight[ap] + /// ``` + #[default(BottomEdge::Metric(BottomEdgeMetric::Descender))] + pub bottom_edge: BottomEdge, + + /// The amount by which to extend the background to the sides beyond + /// (or within if negative) the content. + /// + /// ```example + /// A long #highlight(extent: 4pt)[background]. + /// ``` + #[resolve] + pub extent: Length, + + /// The content that should be highlighted. + #[required] + pub body: Content, +} + +impl Show for HighlightElem { + #[tracing::instrument(name = "HighlightElem::show", skip_all)] + fn show(&self, _: &mut Vt, styles: StyleChain) -> SourceResult { + Ok(self.body().styled(TextElem::set_deco(Decoration { + line: DecoLine::Highlight { + fill: self.fill(styles), + top_edge: self.top_edge(styles), + bottom_edge: self.bottom_edge(styles), + }, + extent: self.extent(styles), + }))) + } +} + +/// Defines a line-based decoration that is positioned over, under or on top of text, +/// or highlights the text with a background. #[derive(Debug, Clone, Eq, PartialEq, Hash)] pub struct Decoration { - pub line: DecoLine, - pub stroke: PartialStroke, - pub offset: Smart, - pub extent: Abs, - pub evade: bool, + line: DecoLine, + extent: Abs, } impl Fold for Decoration { @@ -259,11 +336,12 @@ cast! { } /// A kind of decorative line. -#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -pub enum DecoLine { - Underline, - Strikethrough, - Overline, +#[derive(Debug, Clone, Eq, PartialEq, Hash)] +enum DecoLine { + Underline { stroke: PartialStroke, offset: Smart, evade: bool }, + Strikethrough { stroke: PartialStroke, offset: Smart }, + Overline { stroke: PartialStroke, offset: Smart, evade: bool }, + Highlight { fill: Paint, top_edge: TopEdge, bottom_edge: BottomEdge }, } /// Add line decorations to a single run of shaped text. @@ -271,19 +349,36 @@ pub(super) fn decorate( frame: &mut Frame, deco: &Decoration, text: &TextItem, + width: Abs, shift: Abs, pos: Point, - width: Abs, ) { let font_metrics = text.font.metrics(); - let metrics = match deco.line { - DecoLine::Strikethrough => font_metrics.strikethrough, - DecoLine::Overline => font_metrics.overline, - DecoLine::Underline => font_metrics.underline, + + if let DecoLine::Highlight { fill, top_edge, bottom_edge } = &deco.line { + let (top, bottom) = determine_edges(text, *top_edge, *bottom_edge); + let rect = Geometry::Rect(Size::new(width + 2.0 * deco.extent, top - bottom)) + .filled(fill.clone()); + let origin = Point::new(pos.x - deco.extent, pos.y - top - shift); + frame.prepend(origin, FrameItem::Shape(rect, Span::detached())); + return; + } + + let (stroke, metrics, offset, evade) = match &deco.line { + DecoLine::Strikethrough { stroke, offset } => { + (stroke, font_metrics.strikethrough, offset, false) + } + DecoLine::Overline { stroke, offset, evade } => { + (stroke, font_metrics.overline, offset, *evade) + } + DecoLine::Underline { stroke, offset, evade } => { + (stroke, font_metrics.underline, offset, *evade) + } + _ => return, }; - let offset = deco.offset.unwrap_or(-metrics.position.at(text.size)) - shift; - let stroke = deco.stroke.clone().unwrap_or(Stroke { + let offset = offset.unwrap_or(-metrics.position.at(text.size)) - shift; + let stroke = stroke.clone().unwrap_or(Stroke { paint: text.fill.clone(), thickness: metrics.thickness.at(text.size), ..Stroke::default() @@ -299,13 +394,13 @@ pub(super) fn decorate( let origin = Point::new(from, pos.y + offset); let target = Point::new(to - from, Abs::zero()); - if target.x >= min_width || !deco.evade { + if target.x >= min_width || !evade { let shape = Geometry::Line(target).stroked(stroke.clone()); frame.push(origin, FrameItem::Shape(shape, Span::detached())); } }; - if !deco.evade { + if !evade { push_segment(start, end); return; } @@ -366,6 +461,31 @@ pub(super) fn decorate( } } +// Return the top/bottom edge of the text given the metric of the font. +fn determine_edges( + text: &TextItem, + top_edge: TopEdge, + bottom_edge: BottomEdge, +) -> (Abs, Abs) { + let mut bbox = None; + if top_edge.is_bounds() || bottom_edge.is_bounds() { + let ttf = text.font.ttf(); + bbox = text + .glyphs + .iter() + .filter_map(|g| ttf.glyph_bounding_box(ttf_parser::GlyphId(g.id))) + .reduce(|a, b| ttf_parser::Rect { + y_max: a.y_max.max(b.y_max), + y_min: a.y_min.min(b.y_min), + ..a + }); + } + + let top = top_edge.resolve(text.size, &text.font, bbox); + let bottom = bottom_edge.resolve(text.size, &text.font, bbox); + (top, bottom) +} + /// Builds a kurbo [`BezPath`] for a glyph. struct BezPathBuilder { path: BezPath, diff --git a/crates/typst-library/src/text/mod.rs b/crates/typst-library/src/text/mod.rs index 9ab18ad96..4f3c15919 100644 --- a/crates/typst-library/src/text/mod.rs +++ b/crates/typst-library/src/text/mod.rs @@ -35,6 +35,7 @@ pub(super) fn define(global: &mut Scope) { global.define("super", SuperElem::func()); global.define("underline", UnderlineElem::func()); global.define("strike", StrikeElem::func()); + global.define("highlight", HighlightElem::func()); global.define("overline", OverlineElem::func()); global.define("raw", RawElem::func()); global.define("lorem", lorem_func()); @@ -652,17 +653,17 @@ impl TopEdge { } /// Resolve the value of the text edge given a font's metrics. - pub fn resolve(self, styles: StyleChain, font: &Font, bbox: Option) -> Abs { + pub fn resolve(self, font_size: Abs, font: &Font, bbox: Option) -> Abs { match self { TopEdge::Metric(metric) => { if let Ok(metric) = metric.try_into() { - font.metrics().vertical(metric).resolve(styles) + font.metrics().vertical(metric).at(font_size) } else { - bbox.map(|bbox| (font.to_em(bbox.y_max)).resolve(styles)) + bbox.map(|bbox| (font.to_em(bbox.y_max)).at(font_size)) .unwrap_or_default() } } - TopEdge::Length(length) => length.resolve(styles), + TopEdge::Length(length) => length.at(font_size), } } } @@ -722,17 +723,17 @@ impl BottomEdge { } /// Resolve the value of the text edge given a font's metrics. - pub fn resolve(self, styles: StyleChain, font: &Font, bbox: Option) -> Abs { + pub fn resolve(self, font_size: Abs, font: &Font, bbox: Option) -> Abs { match self { BottomEdge::Metric(metric) => { if let Ok(metric) = metric.try_into() { - font.metrics().vertical(metric).resolve(styles) + font.metrics().vertical(metric).at(font_size) } else { - bbox.map(|bbox| (font.to_em(bbox.y_min)).resolve(styles)) + bbox.map(|bbox| (font.to_em(bbox.y_min)).at(font_size)) .unwrap_or_default() } } - BottomEdge::Length(length) => length.resolve(styles), + BottomEdge::Length(length) => length.at(font_size), } } } diff --git a/crates/typst-library/src/text/shaping.rs b/crates/typst-library/src/text/shaping.rs index 53289e263..21331a78d 100644 --- a/crates/typst-library/src/text/shaping.rs +++ b/crates/typst-library/src/text/shaping.rs @@ -293,15 +293,17 @@ impl<'a> ShapedText<'a> { glyphs, }; - let layer = frame.layer(); let width = item.width(); - - // Apply line decorations. - for deco in &decos { - decorate(&mut frame, deco, &item, shift, pos, width); + if decos.is_empty() { + frame.push(pos, FrameItem::Text(item)); + } else { + // Apply line decorations. + frame.push(pos, FrameItem::Text(item.clone())); + for deco in &decos { + decorate(&mut frame, deco, &item, width, shift, pos); + } } - frame.insert(layer, pos, FrameItem::Text(item)); offset += width; } @@ -321,8 +323,8 @@ impl<'a> ShapedText<'a> { // Expand top and bottom by reading the font's vertical metrics. let mut expand = |font: &Font, bbox: Option| { - top.set_max(top_edge.resolve(self.styles, font, bbox)); - bottom.set_max(-bottom_edge.resolve(self.styles, font, bbox)); + top.set_max(top_edge.resolve(self.size, font, bbox)); + bottom.set_max(-bottom_edge.resolve(self.size, font, bbox)); }; if self.glyphs.is_empty() { diff --git a/crates/typst/src/geom/length.rs b/crates/typst/src/geom/length.rs index 7d0a9841b..ccd5362ce 100644 --- a/crates/typst/src/geom/length.rs +++ b/crates/typst/src/geom/length.rs @@ -34,6 +34,11 @@ impl Length { None } } + + /// Convert to an absolute length at the given font size. + pub fn at(self, font_size: Abs) -> Abs { + self.abs + self.em.at(font_size) + } } impl Debug for Length { diff --git a/tests/ref/text/deco.png b/tests/ref/text/deco.png index 7e3195cad5ce13a0fba0d2a74cb5be5a6f81a1fa..006c969fbfaff3c800db408aff7b9e8f5f376af4 100644 GIT binary patch literal 48180 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 Y;pp4f!}qX?`4g%~HC5g!UA*;w0N^j9CjbBd diff --git a/tests/typ/text/deco.typ b/tests/typ/text/deco.typ index f3be17e72..b79b80b22 100644 --- a/tests/typ/text/deco.typ +++ b/tests/typ/text/deco.typ @@ -20,14 +20,40 @@ --- #let redact = strike.with(stroke: 10pt, extent: 0.05em) -#let highlight = strike.with(stroke: 10pt + rgb("abcdef88"), extent: 0.05em) +#let highlight-custom = strike.with(stroke: 10pt + rgb("abcdef88"), extent: 0.05em) // Abuse thickness and transparency for redacting and highlighting stuff. Sometimes, we work #redact[in secret]. -There might be #highlight[redacted] things. - underline() +There might be #highlight-custom[redacted] things. --- // Test stroke folding. #set underline(stroke: 2pt, offset: 2pt) #underline(text(red, [DANGER!])) + +--- +// Test highlight. +This is the built-in #highlight[highlight with default color]. +We can also specify a customized value +#highlight(fill: green.lighten(80%))[to highlight]. + +--- +// Test default highlight bounds. +#highlight[ace], +#highlight[base], +#highlight[super], +#highlight[phone #sym.integral] + +--- +// Test a tighter highlight. +#set highlight(top-edge: "x-height", bottom-edge: "baseline") +#highlight[ace], +#highlight[base], +#highlight[super], +#highlight[phone #sym.integral] + +--- +// Test a bounds highlight. +#set highlight(top-edge: "bounds", bottom-edge: "bounds") +#highlight[abc] +#highlight[abc #sym.integral]