From e07275163f6039a0f93e14574b136bd1041bb2ad Mon Sep 17 00:00:00 2001 From: Wenzhuo Liu Date: Mon, 13 Nov 2023 19:13:05 +0800 Subject: [PATCH] Filter out meta items when adding CJK-Latin (#2655) spacing. --- crates/typst-library/src/layout/par.rs | 2 +- tests/ref/bugs/2650-cjk-latin-spacing-meta.png | Bin 0 -> 1299 bytes tests/typ/bugs/2650-cjk-latin-spacing-meta.typ | 6 ++++++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 tests/ref/bugs/2650-cjk-latin-spacing-meta.png create mode 100644 tests/typ/bugs/2650-cjk-latin-spacing-meta.typ diff --git a/crates/typst-library/src/layout/par.rs b/crates/typst-library/src/layout/par.rs index b3d5fb3ed..98cf605f7 100644 --- a/crates/typst-library/src/layout/par.rs +++ b/crates/typst-library/src/layout/par.rs @@ -751,7 +751,7 @@ fn prepare<'a>( /// See Requirements for Chinese Text Layout, Section 3.2.2 Mixed Text Composition in Horizontal /// Written Mode fn add_cjk_latin_spacing(items: &mut [Item]) { - let mut items = items.iter_mut().peekable(); + let mut items = items.iter_mut().filter(|x| !matches!(x, Item::Meta(_))).peekable(); let mut prev: Option<&ShapedGlyph> = None; while let Some(item) = items.next() { let Some(text) = item.text_mut() else { diff --git a/tests/ref/bugs/2650-cjk-latin-spacing-meta.png b/tests/ref/bugs/2650-cjk-latin-spacing-meta.png new file mode 100644 index 0000000000000000000000000000000000000000..35ff0e62d83a3818852f662f4dbefc55bb9256ff GIT binary patch literal 1299 zcmeAS@N?(olHy`uVBq!ia0y~yU}OQZ3ps!UgV^sT0R{$^Tb?eCAr-gY-g)akwN&Cj zVOh7(?3WtL{k)f^2G5jy?fTStyVBW1sx#CSSH2LL;8K%y?yN(Q@Y;^E3-wQwW^39d zq%Jg;mz?D!#gTQIk0YwU<)8!KBSyaaQ;IDf&yk%FxApI?efsb0A8gM4oqK)V-MC3A zo*;DP?vMGZ98C(?(1-iVHwvyTl5@KC$mkSf&Q69z&kCKRF4f7$XLX4>D||aS`&abG zj~^G>_A@ruA4=v;{#`2ZD!gofFLBwwQA5TF1xC_%HGS zOZb?iuif;MzuN1zc9S+sw9_B$x~I?X-{#`1{*oKUvCy>O=q0wh2Y&Y-_c^r6K<4O~ zkawMXf`9Yva-7dp&XVQ3R!*SHZ_T_#GEDB*7fS2i`$x+ zT*-c==<;-d^wc=fJdWVy2d@F?$p)%|-+pPfe@HmMT(bCpxOt0d^@FBqZy6u%3SXJU z@msAS?~SBqSpzpyNXnTD+bSIv)Gtfoc)3{2Vb{yQQ}3)Uc3d%MrM%{~OV&yzQ*H~U zwQ95lh)!U*@$2cC-5kd>)tgE~45sW-h?#r;hrq$AM{i!rrEZy`-QwUQkl^!d(|kq? z!Mck<3j%I?Rcp8R?DYL8@&D(}4@nZoxk8>8@h!K{({bGB(YKz+Jt8K=s-$i7LS^HX^j}u{mQx5)0Zz@ zs$2ETNnE`~$K$}o*M)ER@`AVs+N7d-fl{x5Q$W5-^cHSdtgwo?`zj zt<$)Cqqq$F>FpXV0rPJ;oHe_<;~_qJojpE;z46e)aHDlE z+`7vaYqJ=Y`^!c)?zNnF%68)G%Ssn{Yu1-(|~kEx$7GuxpM zafbi5MNR31DvoI53%uReQ_WkNmAkyu_GG^92$(SE&z~bto}@CqQtUBaD6JZ`SK8@; zj>RI;3X3~dcR%mT;z&K;kT>ULyR_3sS&Q{=KQ#orpSxV@(5-+A`#oo#IlnqqK;w5t z)sAWJ7#lB2i#mIJ@on%rmaoGUrt-+;M^=E^(sdm6|I*w&KIMmUH(uCzVC}xI7rW&G zk_weVzI7cIO?Ty0ibk&+#YWwuZBR{+qpu;m7Zt zg^Q=|ikp3J`kNI|4f<=3o;O uaozr_ICmkwbg>}g)Au@X@uISF_g`i&aYO5WJLhGCN;^+iKbLh*2~7Z5IbVPP literal 0 HcmV?d00001 diff --git a/tests/typ/bugs/2650-cjk-latin-spacing-meta.typ b/tests/typ/bugs/2650-cjk-latin-spacing-meta.typ new file mode 100644 index 000000000..e234e6515 --- /dev/null +++ b/tests/typ/bugs/2650-cjk-latin-spacing-meta.typ @@ -0,0 +1,6 @@ +// https://github.com/typst/typst/issues/2650 +#let with-locate(body) = locate(loc => body) + +测a试 + +测#with-locate[a]试