From 407d8a3ab291c953d9dec826015099dd0d18749e Mon Sep 17 00:00:00 2001 From: chris-02 <103339277+chris-02@users.noreply.github.com> Date: Mon, 1 May 2023 13:29:40 +0200 Subject: [PATCH] Fix smartquotes in outline (#1047) Fixes #1041. --- library/src/layout/par.rs | 5 +++++ tests/ref/bugs/smartquotes-in-outline.png | Bin 0 -> 8184 bytes tests/typ/bugs/smartquotes-in-outline.typ | 4 ++++ 3 files changed, 9 insertions(+) create mode 100644 tests/ref/bugs/smartquotes-in-outline.png create mode 100644 tests/typ/bugs/smartquotes-in-outline.typ diff --git a/library/src/layout/par.rs b/library/src/layout/par.rs index 7a1a21e75..a6ad647bd 100644 --- a/library/src/layout/par.rs +++ b/library/src/layout/par.rs @@ -568,6 +568,11 @@ fn collect<'a>( let region = TextElem::region_in(styles); let quotes = Quotes::from_lang(lang, region); let peeked = iter.peek().and_then(|child| { + let child = if let Some((child, _)) = child.to_styled() { + child + } else { + child + }; if let Some(elem) = child.to::() { elem.text().chars().next() } else if child.is::() { diff --git a/tests/ref/bugs/smartquotes-in-outline.png b/tests/ref/bugs/smartquotes-in-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d763b4f19b4e7c6d2e9ccc7acbb1f2e0bd2cd2 GIT binary patch literal 8184 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