From c8d4a4d2b6af45862f9bbd0787f1c569170b17dc Mon Sep 17 00:00:00 2001 From: PgBiel <9021226+PgBiel@users.noreply.github.com> Date: Sat, 16 Mar 2024 06:24:45 -0300 Subject: [PATCH 001/456] Remove grid usize overflow tests (#3687) --- tests/typ/layout/grid-positioning.typ | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/tests/typ/layout/grid-positioning.typ b/tests/typ/layout/grid-positioning.typ index 5461fb1c5..228fadf71 100644 --- a/tests/typ/layout/grid-positioning.typ +++ b/tests/typ/layout/grid-positioning.typ @@ -203,29 +203,3 @@ // Robert got grade B on other exams. ..(table.cell(y: 4, fill: aqua)[B],) * 2, ) - ---- -// Error: 5:3-5:39 cell position too large -#grid( - columns: 3, - rows: 2em, - fill: (x, y) => if calc.odd(x + y) { red.lighten(50%) } else { green }, - grid.cell(y: 6148914691236517206)[a], -) - ---- -// Error: 5:3-5:46 cell position too large -#table( - columns: 3, - rows: 2em, - fill: (x, y) => if calc.odd(x + y) { red.lighten(50%) } else { green }, - table.cell(x: 2, y: 6148914691236517206)[a], -) - ---- -// Error: 3:3-3:45 cell would span an exceedingly large position -// Hint: 3:3-3:45 try reducing the cell's rowspan or colspan -#grid( - columns: 500, - grid.cell(rowspan: 6148914691236517206)[a] -) From e6f7cc126c8c51dcaae7836775be97dd7a692b13 Mon Sep 17 00:00:00 2001 From: A-Walrus <58790821+A-Walrus@users.noreply.github.com> Date: Sat, 16 Mar 2024 11:25:40 +0200 Subject: [PATCH 002/456] Fix all cargo doc warnings (#3684) --- crates/typst-render/src/lib.rs | 2 +- crates/typst/src/layout/inline/mod.rs | 2 +- crates/typst/src/math/root.rs | 2 +- crates/typst/src/visualize/color.rs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/typst-render/src/lib.rs b/crates/typst-render/src/lib.rs index 5d116e495..e9dd3fbf0 100644 --- a/crates/typst-render/src/lib.rs +++ b/crates/typst-render/src/lib.rs @@ -1080,7 +1080,7 @@ impl OutlineBuilder for WrappedPathBuilder { } } -/// Additional methods for [`Length`]. +/// Additional methods for [`Abs`]. trait AbsExt { /// Convert to a number of points as f32. fn to_f32(self) -> f32; diff --git a/crates/typst/src/layout/inline/mod.rs b/crates/typst/src/layout/inline/mod.rs index 16da1539f..a574cd09f 100644 --- a/crates/typst/src/layout/inline/mod.rs +++ b/crates/typst/src/layout/inline/mod.rs @@ -1415,7 +1415,7 @@ fn reorder<'a>(line: &'a Line<'a>) -> (Vec<&Item<'a>>, bool) { /// How much a character should hang into the end margin. /// /// For more discussion, see: -/// https://recoveringphysicist.com/21/ +/// fn overhang(c: char) -> f64 { match c { // Dashes. diff --git a/crates/typst/src/math/root.rs b/crates/typst/src/math/root.rs index 90d3111b2..6a7604452 100644 --- a/crates/typst/src/math/root.rs +++ b/crates/typst/src/math/root.rs @@ -50,7 +50,7 @@ impl LayoutMath for Packed { /// Layout a root. /// /// TeXbook page 443, page 360 -/// See also: https://www.w3.org/TR/mathml-core/#radicals-msqrt-mroot +/// See also: fn layout( ctx: &mut MathContext, styles: StyleChain, diff --git a/crates/typst/src/visualize/color.rs b/crates/typst/src/visualize/color.rs index 365a06955..309619deb 100644 --- a/crates/typst/src/visualize/color.rs +++ b/crates/typst/src/visualize/color.rs @@ -32,7 +32,7 @@ pub type Luma = palette::luma::Lumaa; /// This is a minimal CMYK profile that only contains the necessary information /// to convert from CMYK to RGB. It is based on the CGATS TR 001-1995 /// specification. See -/// https://github.com/saucecontrol/Compact-ICC-Profiles#cmyk. +/// . static CMYK_TO_XYZ: Lazy> = Lazy::new(|| Profile::new_from_slice(typst_assets::icc::CMYK_TO_XYZ, false).unwrap()); From 65ae369f2c56644543afd3d7de8d4c87e29296ee Mon Sep 17 00:00:00 2001 From: Malo <57839069+MDLC01@users.noreply.github.com> Date: Tue, 19 Mar 2024 10:35:26 +0100 Subject: [PATCH 003/456] Add stroked variants of suits (#3612) --- crates/typst/src/symbols/sym.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/crates/typst/src/symbols/sym.rs b/crates/typst/src/symbols/sym.rs index f472b3918..f5f94d907 100644 --- a/crates/typst/src/symbols/sym.rs +++ b/crates/typst/src/symbols/sym.rs @@ -486,7 +486,16 @@ pub(crate) const SYM: &[(&str, Symbol)] = symbols! { refmark: '※', servicemark: '℠', maltese: '✠', - suit: [club: '♣', diamond: '♦', heart: '♥', spade: '♠'], + suit: [ + club.filled: '♣', + club.stroked: '♧', + diamond.filled: '♦', + diamond.stroked: '♢', + heart.filled: '♥', + heart.stroked: '♡', + spade.filled: '♠', + spade.stroked: '♤', + ], // Shapes. bullet: '•', From 9dfc54d726911422a1460159769823a0b21bcbf0 Mon Sep 17 00:00:00 2001 From: frozolotl <44589151+frozolotl@users.noreply.github.com> Date: Tue, 19 Mar 2024 10:36:30 +0100 Subject: [PATCH 004/456] Fix color documentation (#3688) --- crates/typst/src/visualize/color.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/crates/typst/src/visualize/color.rs b/crates/typst/src/visualize/color.rs index 309619deb..185e990b7 100644 --- a/crates/typst/src/visualize/color.rs +++ b/crates/typst/src/visualize/color.rs @@ -117,13 +117,12 @@ static TO_SRGB: Lazy = Lazy::new(|| { /// columns: 9, /// gutter: 10pt, /// ..colors.map(name => { -/// let c = eval(name) -/// let cp = c.components() -/// let x = cp.sum() / cp.len() -/// set text(fill: white) if x < 50% -/// set square(stroke: black) if c == white +/// let col = eval(name) +/// let luminance = luma(col).components().first() +/// set text(fill: white) if luminance < 50% +/// set square(stroke: black) if col == white /// set align(center + horizon) -/// square(size: 50pt, fill: c, name) +/// square(size: 50pt, fill: col, name) /// }) /// ) /// ``` @@ -736,7 +735,7 @@ impl Color { /// /// ```example /// // note that the alpha component is included by default - /// #(rgb(40%, 60%, 80%).components() == (40%, 60%, 80%, 100%)) + /// #rgb(40%, 60%, 80%).components() /// ``` #[func] pub fn components( From c125125080b00d63c370d72c4fe6229d511f0c89 Mon Sep 17 00:00:00 2001 From: Malo <57839069+MDLC01@users.noreply.github.com> Date: Tue, 19 Mar 2024 10:37:16 +0100 Subject: [PATCH 005/456] Documentation improvements (#3698) Co-authored-by: PgBiel <9021226+PgBiel@users.noreply.github.com> --- crates/typst/src/foundations/array.rs | 7 +++++-- crates/typst/src/layout/grid/mod.rs | 14 +++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/crates/typst/src/foundations/array.rs b/crates/typst/src/foundations/array.rs index 8f5703bbb..4c05e3751 100644 --- a/crates/typst/src/foundations/array.rs +++ b/crates/typst/src/foundations/array.rs @@ -223,8 +223,11 @@ impl Array { self.0.pop().ok_or_else(array_is_empty) } - /// Inserts a value into the array at the specified index. Fails with an - /// error if the index is out of bounds. + /// Inserts a value into the array at the specified index, shifting all + /// subsequent elements to the right. Fails with an error if the index is + /// out of bounds. + /// + /// To replace an element of an array, use [`at`]($array.at). #[func] pub fn insert( &mut self, diff --git a/crates/typst/src/layout/grid/mod.rs b/crates/typst/src/layout/grid/mod.rs index 30507e7bc..bdc1ff442 100644 --- a/crates/typst/src/layout/grid/mod.rs +++ b/crates/typst/src/layout/grid/mod.rs @@ -701,22 +701,22 @@ pub struct GridVLine { /// /// #grid( /// fill: (x, y) => rgb( -/// if calc.odd(x + y) { "EFF0F3" } -/// else { "7F8396" } +/// if calc.odd(x + y) { "7F8396" } +/// else { "EFF0F3" } /// ), /// columns: (1em,) * 8, /// rows: 1em, /// align: center + horizon, /// -/// [♜], [♞], [♝], [♛], [♚], [♝], [♞], [♜], -/// [♟], [♟], [♟], [♟], [], [♟], [♟], [♟], +/// [♖], [♘], [♗], [♕], [♔], [♗], [♘], [♖], +/// [♙], [♙], [♙], [♙], [], [♙], [♙], [♙], /// grid.cell( /// x: 4, y: 3, /// stroke: blue.transparentize(60%) -/// )[♟], +/// )[♙], /// -/// ..(grid.cell(y: 6)[♙],) * 8, -/// ..([♖], [♘], [♗], [♕], [♔], [♗], [♘], [♖]) +/// ..(grid.cell(y: 6)[♟],) * 8, +/// ..([♜], [♞], [♝], [♛], [♚], [♝], [♞], [♜]) /// .map(grid.cell.with(y: 7)), /// ) /// ``` From 41db766b83bad4c4671423c03c5e54f308032e7b Mon Sep 17 00:00:00 2001 From: Matt Fellenz Date: Tue, 19 Mar 2024 02:37:30 -0700 Subject: [PATCH 006/456] Unify ops match arms (#3720) --- crates/typst/src/eval/ops.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/typst/src/eval/ops.rs b/crates/typst/src/eval/ops.rs index 9c20ea0a9..4088dbe98 100644 --- a/crates/typst/src/eval/ops.rs +++ b/crates/typst/src/eval/ops.rs @@ -498,16 +498,16 @@ pub fn equal(lhs: &Value, rhs: &Value) -> bool { (Dyn(a), Dyn(b)) => a == b, // Some technically different things should compare equal. - (&Int(a), &Float(b)) => a as f64 == b, - (&Float(a), &Int(b)) => a == b as f64, - (&Length(a), &Relative(b)) => a == b.abs && b.rel.is_zero(), - (&Ratio(a), &Relative(b)) => a == b.rel && b.abs.is_zero(), - (&Relative(a), &Length(b)) => a.abs == b && a.rel.is_zero(), - (&Relative(a), &Ratio(b)) => a.rel == b && a.abs.is_zero(), + (&Int(i), &Float(f)) | (&Float(f), &Int(i)) => i as f64 == f, + (&Length(len), &Relative(rel)) | (&Relative(rel), &Length(len)) => { + len == rel.abs && rel.rel.is_zero() + } + (&Ratio(rat), &Relative(rel)) | (&Relative(rel), &Ratio(rat)) => { + rat == rel.rel && rel.abs.is_zero() + } // Type compatibility. - (Type(a), Str(b)) => a.compat_name() == b.as_str(), - (Str(a), Type(b)) => a.as_str() == b.compat_name(), + (Type(ty), Str(str)) | (Str(str), Type(ty)) => ty.compat_name() == str.as_str(), _ => false, } From 0a917aba984a13b50178e1bfcc84c42fa2084814 Mon Sep 17 00:00:00 2001 From: frozolotl <44589151+frozolotl@users.noreply.github.com> Date: Fri, 22 Mar 2024 13:35:02 +0100 Subject: [PATCH 007/456] Fix warnings introduced by rust 1.77 (#3754) --- crates/typst-cli/src/main.rs | 2 +- crates/typst-pdf/src/page.rs | 4 +--- crates/typst/src/layout/inline/mod.rs | 8 ++++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/crates/typst-cli/src/main.rs b/crates/typst-cli/src/main.rs index da0a57fd5..c8bd39144 100644 --- a/crates/typst-cli/src/main.rs +++ b/crates/typst-cli/src/main.rs @@ -26,7 +26,7 @@ use crate::timings::Timer; thread_local! { /// The CLI's exit code. - static EXIT: Cell = Cell::new(ExitCode::SUCCESS); + static EXIT: Cell = const { Cell::new(ExitCode::SUCCESS) }; } /// The parsed commandline arguments. diff --git a/crates/typst-pdf/src/page.rs b/crates/typst-pdf/src/page.rs index 0342e9fe6..590ee9057 100644 --- a/crates/typst-pdf/src/page.rs +++ b/crates/typst-pdf/src/page.rs @@ -316,9 +316,7 @@ impl PdfPageLabel { return None; }; - let Some((prefix, kind, case)) = pat.pieces.first() else { - return None; - }; + let (prefix, kind, case) = pat.pieces.first()?; // If there is a suffix, we cannot use the common style optimisation, // since PDF does not provide a suffix field. diff --git a/crates/typst/src/layout/inline/mod.rs b/crates/typst/src/layout/inline/mod.rs index a574cd09f..d79dcba49 100644 --- a/crates/typst/src/layout/inline/mod.rs +++ b/crates/typst/src/layout/inline/mod.rs @@ -189,7 +189,7 @@ enum Segment<'a> { /// Horizontal spacing between other segments. Spacing(Spacing), /// A mathematical equation. - Equation(&'a Packed, Vec), + Equation(Vec), /// A box with arbitrary content. Box(&'a Packed, bool), /// Metadata. @@ -205,7 +205,7 @@ impl Segment<'_> { Self::Box(_, frac) => { (if frac { SPACING_REPLACE } else { OBJ_REPLACE }).len_utf8() } - Self::Equation(_, ref par_items) => { + Self::Equation(ref par_items) => { par_items.iter().map(MathParItem::text).map(char::len_utf8).sum() } Self::Meta => 0, @@ -521,7 +521,7 @@ fn collect<'a>( frame.meta(styles, false); } full.extend(items.iter().map(MathParItem::text)); - Segment::Equation(elem, items) + Segment::Equation(items) } else if let Some(elem) = child.to_packed::() { let frac = elem.width(styles).is_fractional(); full.push(if frac { SPACING_REPLACE } else { OBJ_REPLACE }); @@ -592,7 +592,7 @@ fn prepare<'a>( items.push(Item::Fractional(v, None)); } }, - Segment::Equation(_, par_items) => { + Segment::Equation(par_items) => { for item in par_items { match item { MathParItem::Space(s) => items.push(Item::Absolute(s)), From 0dba0e26587a663e1de66c88d511379fc16d3612 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 22 Mar 2024 14:30:47 +0100 Subject: [PATCH 008/456] Pin CI Rust version (#3763) --- .github/workflows/ci.yml | 6 ++++-- .github/workflows/release.yml | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 730bf75f8..6322e402f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable + - uses: dtolnay/rust-toolchain@1.77.0 - uses: Swatinem/rust-cache@v2 - run: cargo test --workspace --no-fail-fast @@ -38,7 +38,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable + - uses: dtolnay/rust-toolchain@1.77.0 + with: + components: clippy, rustfmt - uses: Swatinem/rust-cache@v2 - run: cargo clippy --workspace --all-targets --all-features - run: cargo fmt --check --all diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c62ad56db..4e855064e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable + - uses: dtolnay/rust-toolchain@1.77.0 with: target: ${{ matrix.target }} From d1568a55831f4074c7bcfe7d0bb983055e1709d3 Mon Sep 17 00:00:00 2001 From: Leedehai <18319900+Leedehai@users.noreply.github.com> Date: Sat, 23 Mar 2024 07:51:43 -0400 Subject: [PATCH 009/456] Let `Repr` for `Relative` print both abs + ratio (#3721) --- crates/typst/src/layout/rel.rs | 6 +----- tests/ref/compiler/content-field.png | Bin 8252 -> 8815 bytes tests/ref/compiler/repr.png | Bin 64757 -> 32579 bytes tests/ref/layout/grid-cell.png | Bin 45433 -> 47260 bytes tests/ref/layout/table-cell.png | Bin 49090 -> 50913 bytes tests/typ/compiler/repr.typ | 4 ++++ 6 files changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/typst/src/layout/rel.rs b/crates/typst/src/layout/rel.rs index fa2a56e22..ed3675885 100644 --- a/crates/typst/src/layout/rel.rs +++ b/crates/typst/src/layout/rel.rs @@ -100,11 +100,7 @@ impl Debug for Rel { impl Repr for Rel { fn repr(&self) -> EcoString { - match (self.rel.is_zero(), self.abs.is_zero()) { - (false, false) => eco_format!("{} + {}", self.rel.repr(), self.abs.repr()), - (false, true) => self.rel.repr(), - (true, _) => self.abs.repr(), - } + eco_format!("{} + {}", self.rel.repr(), self.abs.repr()) } } diff --git a/tests/ref/compiler/content-field.png b/tests/ref/compiler/content-field.png index 3095ba8c91a1d4badacfc8b88953a67ebaddcaf8..d582cfa198ccaec6eac8b9d1539337d7ed754821 100644 GIT binary patch literal 8815 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 literal 8252 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 z zy)*UxsAf{yKib!{T@+0Mmg?Pf+|{NvTt37y;_YgP8w}1yN^TTL%or5J9P+kWaaaxy=MzgPR$5%VI(UmvbNpRtx)=e;e%6$DJGNW#6E3Jo zYvE0RtH*4;Z-1}FJ0UYhcUm3tI<7^zp1{YnWZJ#?iRYgu48LN4w!MM{{4kK%J-595 zuh84b@|OIJQF1c1oSyp$Oj+N)f#xGF%(@YxPFdQfVGpduKLtDAZ*YbN zF9?vG%$;p;{M3#no&MhQd*%hRq{Ztx!V%wGK}1c)f?5$-nig!LxW~jfFuI}t6QZ{D zlvN1fH1&F!Uu|)jK6$lOk=VQbm#M>rui_hHekc`br}CSmUOF$CPbcS7Vl2OV3!A*HEfAP^OAnYgq2%(GFpJ-rTTqXrV zJygAhGOiHHZ%aNgoy~gJZ#Wz9NOdC>eDr}XqM;P4)sfs_?PZ=O@^gK^Hz6FTV?IdI zvkgVt%nm3Ok7xvpbgic!wid<71-HzN*W6rF=Ic2-Mv0V%4Deo`#R(wj8c*W8JEFdz z1&o#llha97CI^jM%_r(!05e3C1&uF(fwdMFr<9zEvy<-Hv8;SW_S3}59}YR!5m8^< zYuPZ5c}w`O3g0!WsV5!-yaB7xGN;a=@yu3ulc{;UpcTG&rie&b(AiDbs^vl z@VYfiI72-A9I&rKqfTi7|K2OenQ`p**ZS|;>^Ln(l=9B*d;VDE8T*K?jt}DYC1O3u zoYj4oE>a@$bM#ZlnUaTVlc~u8iowyA3Hc64>3`Ow!|7jvmU0&fPSzy!V`C69KE>Md zlc{Af>@Uu@ALGTSp;*vlI|rp{&nZWPvNqI51u)W`Neo|*$}5Wdyp3}YL}n7++Z4Oi zwlR|z$A8AGc7%?hHesk8jNdAyPYb?s!+jFv#-eeaym_GQHy3614E-x`gvoo}?aV$c zwJp0*4V1|gz*Jn1DMD6iy1nR|&3hF3iRPP3QAxjX2-fI@zx)71pIa`O0^o!6;t+h> zj5Yd%x)L26>FMf;k-*Au@x*$PJ+bXii{|x!Shpo$;45>BJkY=pQq2gY`GTo_E;uKh ztU=X#hZU!Ww1Dzj@__zSgVt~Bh8Iuj4=pDJGb!{(&t(B(QiwFBz3fDB-$iaw%yWy0 zR4k!gZ0@jV=J0PQHN+GFV^rWX%((`f2cNg-k^17ucSo5lA=_U({~%)#XqlVFnT z34RhA5vbFD5usPK0Tv$$@oj$hu$%h$HyW$oWaXv4jZwe{jsO}opinvdsy_IkPxgu+ zayPPxmY-rHfWfU_z`Br8V|ud`moy$wBNaWi0EG~knxw1nIYolOq%DiFH9b{Xm0GzU zNB=hrJp}iGG6X|6l|Zn=ai9={Hx^HI*+5llJZQB?m0{eEX3Q6CcBBRl;s~Lq?N2-4 zN;b9|^-h;AN3`6PJj*!q2vN23R1=?KeqJ63Ko9324`FA$BxHKt9nTHPx z#q!}4?NE*XKhFp`sUfsq7SKbN4u+q_+{g9en5HmO7}nR(J5qTDm!>m=&n(QG6UB9X zE+p@e+dWgN>(rNysw+fp9>z4?2LS01X3|rRh(}UgE^X{Pe(RY*RjT(>wT+|fH9MZ^ zzp#7<4+Y2G6wRxxUHyD#M25(+629?LmI2R6zuxO*ZzL3T zOdbKc6g}xQEMj%@2DecY?~wL5@u+SyAf9X-+VobI$*6)sHVLNLKVwM$U^p)%@?TJ@ zOK>i3&lxxmn5(ZO5?3D5aDbw7pu(VUbskm{x3ZsA0;3^S(qKnp8IYTii5QEB9f^E;fS@zmYRlZ??|A?aoOn@+F!w437cwEZFcBh9Y`p$mfWGUu$2I5v|nAS?~#1jJ%u_@!hm=ETT?=K1ObSN0kf2BfdD|QW