summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikołaj <171210953+mgazeel@users.noreply.github.com>2025-05-28 19:29:40 +0200
committerGitHub <noreply@github.com>2025-05-28 17:29:40 +0000
commit3e7a39e968644ee925598f792fdc597b55a2529f (patch)
tree30cd4fea44ba46c53ba0d9b8d832f298735f0dfb
parent82e869023c7a7f31d716e7706a9a176b3d909279 (diff)
Fix stroking of glyphs in math mode (#6243)
-rw-r--r--crates/typst-layout/src/math/fragment.rs6
-rw-r--r--tests/ref/issue-6170-equation-stroke.pngbin0 -> 1381 bytes
-rw-r--r--tests/suite/math/equation.typ7
3 files changed, 11 insertions, 2 deletions
diff --git a/crates/typst-layout/src/math/fragment.rs b/crates/typst-layout/src/math/fragment.rs
index 1b508a34..59858a9c 100644
--- a/crates/typst-layout/src/math/fragment.rs
+++ b/crates/typst-layout/src/math/fragment.rs
@@ -11,7 +11,7 @@ use typst_library::layout::{
};
use typst_library::math::{EquationElem, MathSize};
use typst_library::text::{Font, Glyph, Lang, Region, TextElem, TextItem};
-use typst_library::visualize::Paint;
+use typst_library::visualize::{FixedStroke, Paint};
use typst_syntax::Span;
use typst_utils::default_math_class;
use unicode_math_class::MathClass;
@@ -235,6 +235,7 @@ pub struct GlyphFragment {
pub lang: Lang,
pub region: Option<Region>,
pub fill: Paint,
+ pub stroke: Option<FixedStroke>,
pub shift: Abs,
pub width: Abs,
pub ascent: Abs,
@@ -286,6 +287,7 @@ impl GlyphFragment {
lang: TextElem::lang_in(styles),
region: TextElem::region_in(styles),
fill: TextElem::fill_in(styles).as_decoration(),
+ stroke: TextElem::stroke_in(styles).map(|s| s.unwrap_or_default()),
shift: TextElem::baseline_in(styles),
font_size: TextElem::size_in(styles),
math_size: EquationElem::size_in(styles),
@@ -368,10 +370,10 @@ impl GlyphFragment {
font: self.font.clone(),
size: self.font_size,
fill: self.fill,
+ stroke: self.stroke,
lang: self.lang,
region: self.region,
text: self.c.into(),
- stroke: None,
glyphs: vec![Glyph {
id: self.id.0,
x_advance: Em::from_length(self.width, self.font_size),
diff --git a/tests/ref/issue-6170-equation-stroke.png b/tests/ref/issue-6170-equation-stroke.png
new file mode 100644
index 00000000..a375931b
--- /dev/null
+++ b/tests/ref/issue-6170-equation-stroke.png
Binary files differ
diff --git a/tests/suite/math/equation.typ b/tests/suite/math/equation.typ
index 148a49d0..189f6e6d 100644
--- a/tests/suite/math/equation.typ
+++ b/tests/suite/math/equation.typ
@@ -297,3 +297,10 @@ Looks at the @quadratic formula.
#set page(width: 150pt)
#set text(lang: "he")
תהא סדרה $a_n$: $[a_n: 1, 1/2, 1/3, dots]$
+
+--- issue-6170-equation-stroke ---
+// In this bug stroke settings did not apply to math content.
+// We expect all of these to have a green stroke.
+#set text(stroke: green + 0.5pt)
+
+A $B^2$ $ grave(C)' $