From 42c3a6fa72be91c115e28e3866012b95b4d63cf4 Mon Sep 17 00:00:00 2001 From: sitandr <60141933+sitandr@users.noreply.github.com> Date: Fri, 19 May 2023 16:33:15 +0300 Subject: [PATCH] Fixed symbol style reset in stretching (#1195) --- library/src/math/fragment.rs | 50 ++++++++++++++++++++++------------- library/src/math/stretch.rs | 8 +++--- tests/ref/math/delimited.png | Bin 11282 -> 22993 bytes tests/ref/math/underover.png | Bin 4877 -> 4944 bytes tests/typ/math/delimited.typ | 7 +++++ 5 files changed, 43 insertions(+), 22 deletions(-) diff --git a/library/src/math/fragment.rs b/library/src/math/fragment.rs index 40dca3479..027ab7da1 100644 --- a/library/src/math/fragment.rs +++ b/library/src/math/fragment.rs @@ -164,6 +164,32 @@ impl GlyphFragment { } pub fn with_id(ctx: &MathContext, c: char, id: GlyphId, span: Span) -> Self { + let mut fragment = Self { + id, + c, + font: ctx.font.clone(), + lang: TextElem::lang_in(ctx.styles()), + fill: TextElem::fill_in(ctx.styles()), + style: ctx.style, + font_size: ctx.size, + width: Abs::zero(), + ascent: Abs::zero(), + descent: Abs::zero(), + italics_correction: Abs::zero(), + class: match c { + ':' => Some(MathClass::Relation), + _ => unicode_math_class::class(c), + }, + span, + meta: MetaElem::data_in(ctx.styles()), + }; + fragment.set_id(ctx, id); + fragment + } + + /// Sets element id and boxes in appropriate way without changing other + /// styles. This is used to replace the glyph with a stretch variant. + pub fn set_id(&mut self, ctx: &MathContext, id: GlyphId) { let advance = ctx.ttf.glyph_hor_advance(id).unwrap_or_default(); let italics = italics_correction(ctx, id).unwrap_or_default(); let bbox = ctx.ttf.glyph_bounding_box(id).unwrap_or(Rect { @@ -178,25 +204,11 @@ impl GlyphFragment { width += italics; } - Self { - id, - c, - font: ctx.font.clone(), - lang: TextElem::lang_in(ctx.styles()), - fill: TextElem::fill_in(ctx.styles()), - style: ctx.style, - font_size: ctx.size, - width, - ascent: bbox.y_max.scaled(ctx), - descent: -bbox.y_min.scaled(ctx), - italics_correction: italics, - class: match c { - ':' => Some(MathClass::Relation), - _ => unicode_math_class::class(c), - }, - span, - meta: MetaElem::data_in(ctx.styles()), - } + self.id = id; + self.width = width; + self.ascent = bbox.y_max.scaled(ctx); + self.descent = -bbox.y_min.scaled(ctx); + self.italics_correction = italics; } pub fn height(&self) -> Abs { diff --git a/library/src/math/stretch.rs b/library/src/math/stretch.rs index bb454022b..bbb0c9c44 100644 --- a/library/src/math/stretch.rs +++ b/library/src/math/stretch.rs @@ -33,7 +33,7 @@ impl GlyphFragment { /// The resulting frame may not have the exact desired width. fn stretch_glyph( ctx: &MathContext, - base: GlyphFragment, + mut base: GlyphFragment, target: Abs, short_fall: Abs, horizontal: bool, @@ -73,7 +73,8 @@ fn stretch_glyph( // This is either good or the best we've got. if short_target <= best_advance || construction.assembly.is_none() { - return GlyphFragment::with_id(ctx, base.c, best_id, base.span).into_variant(); + base.set_id(ctx, best_id); + return base.into_variant(); } // Assemble from parts. @@ -142,7 +143,8 @@ fn assemble( advance += ratio * (max_overlap - min_overlap); } - let fragment = GlyphFragment::with_id(ctx, base.c, part.glyph_id, base.span); + let mut fragment = base.clone(); + fragment.set_id(ctx, part.glyph_id); selected.push((fragment, advance)); } diff --git a/tests/ref/math/delimited.png b/tests/ref/math/delimited.png index 0670337fee4cefec797c01377a1dc7de59a8490d..e9f6e2c149ed164844a370a8bad955441df455ac 100644 GIT binary patch literal 22993 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 literal 11282 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%0D* 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 C5yA8T diff --git a/tests/ref/math/underover.png b/tests/ref/math/underover.png index d090057d63d66b8ca9653786c8f82b09cf2c754c..7c92c9825eaffda35a26e122ffd95a86c451f548 100644 GIT binary patch literal 4944 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 literal 4877 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 diff --git a/tests/typ/math/delimited.typ b/tests/typ/math/delimited.typ index d22b76c0c..24374b8c2 100644 --- a/tests/typ/math/delimited.typ +++ b/tests/typ/math/delimited.typ @@ -36,3 +36,10 @@ $ lr(]sum_(x=1)^n x], size: #70%) --- // Test predefined delimiter pairings. $floor(x/2), ceil(x/2), abs(x), norm(x)$ + +--- +// Test colored delimiters +$ lr( + text("(", fill: #green) a/b + text(")", fill: #blue) + ) $