From cce744cf780dd730f1638e17a0e106faeb38de22 Mon Sep 17 00:00:00 2001 From: wznmickey Date: Sun, 17 Nov 2024 04:04:07 -0500 Subject: [PATCH] Fix unnecessary hyphenation (#5394) --- crates/typst-layout/src/inline/linebreak.rs | 7 ++++++- tests/ref/issue-5360-unnecessary-hyphenation.png | Bin 0 -> 1569 bytes tests/suite/layout/inline/justify.typ | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 tests/ref/issue-5360-unnecessary-hyphenation.png diff --git a/crates/typst-layout/src/inline/linebreak.rs b/crates/typst-layout/src/inline/linebreak.rs index 26621cd7..236d6892 100644 --- a/crates/typst-layout/src/inline/linebreak.rs +++ b/crates/typst-layout/src/inline/linebreak.rs @@ -543,7 +543,12 @@ fn raw_ratio( ) -> f64 { // Determine how much the line's spaces would need to be stretched // to make it the desired width. - let delta = available_width - line_width; + let mut delta = available_width - line_width; + + // Avoid possible floating point errors in previous calculation. + if delta.approx_eq(Abs::zero()) { + delta = Abs::zero(); + } // Determine how much stretch or shrink is natural. let adjustability = if delta >= Abs::zero() { stretchability } else { shrinkability }; diff --git a/tests/ref/issue-5360-unnecessary-hyphenation.png b/tests/ref/issue-5360-unnecessary-hyphenation.png new file mode 100644 index 0000000000000000000000000000000000000000..90a8180a519f9d6d49a97b38d7f139cd84d1e3ef GIT binary patch literal 1569 zcmcIke@qi+81Ckz3ma*~I5WkvscadY>qMX!pyw0=%tW@irdhG0|uvRf({sM^7Zmk5Dfgsg4zU1#CO1&|c5N9lhS|O7x%o!?t9}_r2dg z&-Z@M_dd`2p7?BMaZ2*4WFC)~Qd&~<1$U~so$-1S7f&475aaQd{#jb|$(QO^rtd8I zdHq*s@8fLsOyj`tmG5@!>!@^hy;xtLYCrp_wLNRo+8L^<`%ukgV}6CJtjj55hP+U) z-%Y=rdi3-3dx<~kqyYk8394yU zz=j2I(C!c!2#KLjrEQUGRyd|Cj+1i8C-+|q)E+h&dIP!#fxRY_d4~FJg%it~yn|&> z77xK!BfY^MPY^ecw}4a&H3=~L7UzRb|Jnp)FFcnhJdvafCl$T6P`BHU6g#jvIA%xk zF*c5&Bki-<4=(2S?{@fhM|J_xU9i8x@m`r>eq{9VW1mYg?IN#Z^BX*zF3l2XQsPg9 zyu3W`f}(9GmBv$0E#P^8nFRc{p2hST6VhHju^oKAot_XgYcaAB8<6W=a{Q2W_7Lm| z_6S39PsnLUVs_$qaY3D==8|M0@zi-Vprcw1n@6(otLFKu@Ldu7Du6Esdbv8+17tll zXr@b{FyGKzt$$SQ+vD-=A<5JIk_qnT*QqfyUap8_fM=}i zy!HJ}8hf`kUpjS3dNQ5G)A?QtC*?0sFPqfHYBgUmcNA;|$p-M9O`2dgQ~^ytf*Q>+ zn|X4~rlOyr%!g)r&^#>a`AvimS?M7fPiHrx(=vrmMqabdXD%>((H&-Dv$?)f8tVj1 z{0o;)tX9IOwV|HYnEq)i^g%Fs0VPkN-fhw++sI=Al2=t#MGiF4B@n*Sup8=+ zcNRBlEkqg(=eXhn-lO2$QH`lvvwCLkB1TK5QW%} z#nQ-W9Y=Db$z+1#Zln-oqabR62TdRUunu8@$OEJPcO%{j#5&swG^wTKu=;f34jmD* zSs`2)>J@R~hqqWGnbx}t)=AJVj}|mn5@Ir8$iu{_IX+645t$rD=aTDJZ~*JD3|%ss z%hsV(8`_)80nAP|`~OR#?vv=YFU&?Sm)lnn-XH)iXLz!77|7q=w