From e768843e2b4cf0cfdb727fdde8af3f10f79052f7 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Mon, 31 Aug 2026 00:55:22 +0800 Subject: [PATCH 1/2] fix(text): preserve Unicode words when wrapping --- .../TextLaTeXParserTests.cs | 81 +++++++++++++- CSharpMath.Rendering/Text/TextLaTeXParser.cs | 105 +++++++++++++++++- 2 files changed, 184 insertions(+), 2 deletions(-) diff --git a/CSharpMath.Rendering.Text.Tests/TextLaTeXParserTests.cs b/CSharpMath.Rendering.Text.Tests/TextLaTeXParserTests.cs index 05b8459d..f04d3ffb 100644 --- a/CSharpMath.Rendering.Text.Tests/TextLaTeXParserTests.cs +++ b/CSharpMath.Rendering.Text.Tests/TextLaTeXParserTests.cs @@ -2,6 +2,9 @@ using System.Collections.Generic; using System.Linq; using Xunit; +using CSharpMath.Display.Displays; +using CSharpMath.Rendering.BackEnd; +using CSharpMath.Rendering.Text; namespace CSharpMath.Rendering.Text.Tests { public class TextLaTeXParserTests { @@ -45,6 +48,82 @@ public void Text(params string[] text) { : new TextAtom.List(text.Select(t => new TextAtom.Text(t)).ToArray()), atom); Assert.Equal(input, TextLaTeXParser.TextAtomToLaTeX(atom).ToString()); } + + [Theory] + [InlineData("caf\u00E9")] + [InlineData("\u0421\u043B\u043E\u0432\u043E")] + [InlineData("e\u0301clair")] + [InlineData("e\u0301\u0327\u0308clair")] + public void UnicodeLettersAndCombiningMarksStayInOneWord(string word) { + Assert.Equal(new TextAtom.Text(word), Parse(word)); + } + + [Fact] + public void CjkCharactersRemainIndividuallyBreakable() { + Assert.Equal( + new TextAtom.List(new TextAtom[] { + new TextAtom.Text("\u4E2D"), new TextAtom.Text("\u6587") + }), Parse("\u4E2D\u6587")); + } + + [Theory] + [InlineData("a\u200Bb")] // ZERO WIDTH SPACE: break opportunity + [InlineData("a\u00ADb")] // SOFT HYPHEN: conditional break opportunity + [InlineData("a\u2060b")] // WORD JOINER: no break opportunity + [InlineData("a\u200Db")] // ZERO WIDTH JOINER: format control + public void FormatControlsRoundTripWithoutBeingGlued(string input) { + Assert.Equal(input, TextLaTeXParser.TextAtomToLaTeX(Parse(input)).ToString()); + } + + [Fact] + public void SupplementaryLettersRemainWholeScalars() { + const string supplementaryLetter = "\U00010400\U00010401"; + Assert.Equal(new TextAtom.Text(supplementaryLetter), Parse(supplementaryLetter)); + } + + [Theory] + [InlineData("\u0E01\u0E02")] // Thai + [InlineData("\u1780\u1781")] // Khmer + [InlineData("\u1000\u1001")] // Myanmar + public void ComplexScriptsRetainTypographyBreakOpportunities(string input) { + Assert.Equal( + new TextAtom.List(input.Select(c => (TextAtom)new TextAtom.Text(c.ToString())).ToArray()), + Parse(input)); + } + + [Theory] + [InlineData("e\u0301\u0E01")] // Latin + combining mark + Thai + [InlineData("e\u0301\u1780")] // Latin + combining mark + Khmer + [InlineData("e\u0301\u4E2D")] // Latin + combining mark + CJK + public void CombiningMarksDoNotGlueAcrossScriptBoundaries(string input) { + Assert.Equal( + new TextAtom.List(new TextAtom[] { + new TextAtom.Text(input.Substring(0, 2)), + new TextAtom.Text(input.Substring(2)) + }), Parse(input)); + } + + [Fact] + public void PunctuationAndLongWordsKeepTheirExistingBoundaries() { + const string longWord = "supercalifragilisticexpialidocious"; + Assert.Equal( + new TextAtom.List(new TextAtom[] { + new TextAtom.Text(longWord + ","), new TextAtom.Text("next") + }), Parse(longWord + ",next")); + } + + [Theory] + [InlineData("caf\u00E9 next", "caf\u00E9")] + [InlineData("\u0421\u043B\u043E\u0432\u043E next", "\u0421\u043B\u043E\u0432\u043E")] + [InlineData("e\u0301clair next", "e\u0301clair")] + [InlineData("supercalifragilisticexpialidocious next", "supercalifragilisticexpialidocious")] + public void ConstrainedLayoutDoesNotSplitUnbreakableWords(string input, string word) { + var (relative, _) = TextTypesetter.Layout( + Parse(input), new Fonts(Array.Empty(), 12), 20); + Assert.Contains( + relative.Displays.OfType>(), + display => display.Run.Text.ToString() == word); + } [Theory] [InlineData(@"a\alpha a", @"a\alpha a", "a", "α", "a")] [InlineData(@"<\textless <", @"\textless \textless \textless ", "<", "<", "<")] @@ -504,4 +583,4 @@ public void Error(string badInput, string expected) { Assert.Equal(expected.Replace("\r", null), actual); } } -} \ No newline at end of file +} diff --git a/CSharpMath.Rendering/Text/TextLaTeXParser.cs b/CSharpMath.Rendering/Text/TextLaTeXParser.cs index 569f92ed..9d92e9f5 100644 --- a/CSharpMath.Rendering/Text/TextLaTeXParser.cs +++ b/CSharpMath.Rendering/Text/TextLaTeXParser.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Text; using Typography.TextBreak; @@ -8,6 +9,107 @@ namespace CSharpMath.Rendering.Text { using Atom; using static CSharpMath.Atom.Result; public static class TextLaTeXParser { + // Typography.TextBreak historically emits a break for every letter outside + // its built-in Latin ranges. Coalesce those breaks here using the Unicode + // categories supplied by .NET, while retaining the break opportunities for + // CJK ideographs (which are intentionally breakable between characters). + static void CoalesceUnicodeWordBreaks(string text, List breakList) { + for (int i = breakList.Count - 1; i >= 0; i--) { + int boundary = breakList[i].breakAt; + if (boundary <= 0 || boundary >= text.Length || !KeepUnicodeSequenceTogether(text, boundary)) + continue; + breakList.RemoveAt(i); + } + } + + static bool KeepUnicodeSequenceTogether(string text, int boundary) { + int beforeAt = boundary - 1; + if (char.IsLowSurrogate(text[beforeAt])) beforeAt--; + int afterAt = boundary; + // Typography never intentionally breaks a surrogate pair. Do not + // manufacture a new decision at a half-surrogate if malformed input does + // reach this layer. + if (char.IsLowSurrogate(text[afterAt])) return false; + UnicodeCategory before = CharUnicodeInfo.GetUnicodeCategory(text, beforeAt); + UnicodeCategory after = CharUnicodeInfo.GetUnicodeCategory(text, afterAt); + bool beforeMark = before is UnicodeCategory.NonSpacingMark + or UnicodeCategory.SpacingCombiningMark or UnicodeCategory.EnclosingMark; + bool afterMark = after is UnicodeCategory.NonSpacingMark + or UnicodeCategory.SpacingCombiningMark or UnicodeCategory.EnclosingMark; + if (afterMark) + // UAX #14 LB9: combining marks inherit the line-break class of the + // preceding base. Walk over the complete mark run, not just one mark. + return IsLetterScalar(text, FindBaseScalarStart(text, beforeAt)); + if (beforeMark && IsLetterScalar(text, afterAt)) + return CanCoalesceLetter(text, FindBaseScalarStart(text, beforeAt)) + && CanCoalesceLetter(text, afterAt); + return CanCoalesceLetter(text, beforeAt) && CanCoalesceLetter(text, afterAt); + } + + static int FindPreviousScalarStart(string text, int scalarEndAt) => + scalarEndAt > 0 && char.IsLowSurrogate(text[scalarEndAt]) + ? scalarEndAt - 1 : scalarEndAt; + + static int FindBaseScalarStart(string text, int scalarAt) { + int candidate = scalarAt; + while (candidate >= 0) { + UnicodeCategory category = CharUnicodeInfo.GetUnicodeCategory(text, candidate); + if (category is not (UnicodeCategory.NonSpacingMark + or UnicodeCategory.SpacingCombiningMark or UnicodeCategory.EnclosingMark)) + return candidate; + candidate = FindPreviousScalarStart(text, candidate - 1); + } + return scalarAt; + } + + static bool IsLetterScalar(string text, int scalarAt) { + UnicodeCategory category = CharUnicodeInfo.GetUnicodeCategory(text, scalarAt); + return category is UnicodeCategory.UppercaseLetter + or UnicodeCategory.LowercaseLetter or UnicodeCategory.TitlecaseLetter + or UnicodeCategory.ModifierLetter or UnicodeCategory.OtherLetter; + } + + static bool CanCoalesceLetter(string text, int scalarAt) { + if (!IsLetterScalar(text, scalarAt)) return false; + // Typography's range metadata identifies scripts whose line breaking is + // dictionary- or character-based (Thai, CJK, kana, Hangul, etc.). For + // ranges it does not know (notably Cyrillic), Unicode letters form words. + if (char.ConvertToUtf32(text, scalarAt) is int codepoint + && TryGetUnicodeRangeInfo(codepoint, out var range)) + return !IsComplexBreakableRange(range.Name); + return true; + } + + static bool TryGetUnicodeRangeInfo(int codepoint, out Typography.OpenFont.UnicodeRangeInfo range) { + if (UnicodeRangeFinder.GetUniCodeRangeFor(codepoint, out range, out _)) return true; + return Unicode13RangeInfoList.TryGetUnicodeRangeInfo(codepoint, out range); + } + + static bool IsComplexBreakableRange(string name) => + name.StartsWith("Thai", StringComparison.Ordinal) + || name.StartsWith("Lao", StringComparison.Ordinal) + || name.StartsWith("Khmer", StringComparison.Ordinal) + || name.StartsWith("Myanmar", StringComparison.Ordinal) + || name.StartsWith("CJK", StringComparison.Ordinal) + || name.StartsWith("Hiragana", StringComparison.Ordinal) + || name.StartsWith("Katakana", StringComparison.Ordinal) + || name.StartsWith("Hangul", StringComparison.Ordinal) + || name.StartsWith("Arabic", StringComparison.Ordinal) + || name.StartsWith("Hebrew", StringComparison.Ordinal) + || name.StartsWith("Devanagari", StringComparison.Ordinal) + || name.StartsWith("Bengali", StringComparison.Ordinal) + || name.StartsWith("Gurmukhi", StringComparison.Ordinal) + || name.StartsWith("Gujarati", StringComparison.Ordinal) + || name.StartsWith("Oriya", StringComparison.Ordinal) + || name.StartsWith("Tamil", StringComparison.Ordinal) + || name.StartsWith("Telugu", StringComparison.Ordinal) + || name.StartsWith("Kannada", StringComparison.Ordinal) + || name.StartsWith("Malayalam", StringComparison.Ordinal) + || name.StartsWith("Sinhala", StringComparison.Ordinal) + || name.StartsWith("Tibetan", StringComparison.Ordinal) + || name.StartsWith("Syriac", StringComparison.Ordinal) + || name.StartsWith("Ethiopic", StringComparison.Ordinal); + /* //Paste this into the C# Interactive, fill yourself #r "C:/Users//source/repos/CSharpMath/Typography/Build/NetStandard/Typography.TextBreak/bin/Debug/netstandard1.3/Typography.TextBreak.dll" using Typography.TextBreak; @@ -59,6 +161,7 @@ public static Result TextAtomFromLaTeX(string latexSource) { foreach (var engine in AdditionalBreakingEngines) breaker.AddBreakingEngine(engine); breaker.BreakWords(latexSource); + CoalesceUnicodeWordBreaks(latexSource, breakList); Result CheckDollarCount(int startAt, ref int endAt, TextAtomListBuilder atoms) { switch (dollarCount) { @@ -504,4 +607,4 @@ public static StringBuilder TextAtomToLaTeX(TextAtom atom, StringBuilder? b = nu } } } -} \ No newline at end of file +} From d5c3cc39ad70791ea031ce0b7becf5e1f192fbd1 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Mon, 31 Aug 2026 01:30:24 +0800 Subject: [PATCH 2/2] test: update unicode word-wrap baselines --- .../TextLeft/CapitalGreeks.png | Bin 11365 -> 11362 bytes .../TextLeftInfiniteWidth/CapitalGreeks.png | Bin 11365 -> 11362 bytes .../TextRight/CapitalGreeks.png | Bin 11365 -> 11362 bytes .../TextRightInfiniteWidth/CapitalGreeks.png | Bin 11365 -> 11362 bytes .../TextLaTeXParserTests.cs | 2 +- 5 files changed, 1 insertion(+), 1 deletion(-) diff --git a/CSharpMath.Rendering.Tests/TextLeft/CapitalGreeks.png b/CSharpMath.Rendering.Tests/TextLeft/CapitalGreeks.png index 8affafc08f660acde092ed00efc5ce6c3d065592..5833b41ccd5a4682f485b3d0e329974e158a3758 100644 GIT binary patch delta 10059 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 A82|tP diff --git a/CSharpMath.Rendering.Tests/TextLeftInfiniteWidth/CapitalGreeks.png b/CSharpMath.Rendering.Tests/TextLeftInfiniteWidth/CapitalGreeks.png index 8affafc08f660acde092ed00efc5ce6c3d065592..5833b41ccd5a4682f485b3d0e329974e158a3758 100644 GIT binary patch delta 10059 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 A82|tP diff --git a/CSharpMath.Rendering.Tests/TextRight/CapitalGreeks.png b/CSharpMath.Rendering.Tests/TextRight/CapitalGreeks.png index 8affafc08f660acde092ed00efc5ce6c3d065592..5833b41ccd5a4682f485b3d0e329974e158a3758 100644 GIT binary patch delta 10059 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 A82|tP diff --git a/CSharpMath.Rendering.Tests/TextRightInfiniteWidth/CapitalGreeks.png b/CSharpMath.Rendering.Tests/TextRightInfiniteWidth/CapitalGreeks.png index 8affafc08f660acde092ed00efc5ce6c3d065592..5833b41ccd5a4682f485b3d0e329974e158a3758 100644 GIT binary patch delta 10059 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 A82|tP diff --git a/CSharpMath.Rendering.Text.Tests/TextLaTeXParserTests.cs b/CSharpMath.Rendering.Text.Tests/TextLaTeXParserTests.cs index f04d3ffb..9031c8da 100644 --- a/CSharpMath.Rendering.Text.Tests/TextLaTeXParserTests.cs +++ b/CSharpMath.Rendering.Text.Tests/TextLaTeXParserTests.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; -using Xunit; using CSharpMath.Display.Displays; using CSharpMath.Rendering.BackEnd; using CSharpMath.Rendering.Text; +using Xunit; namespace CSharpMath.Rendering.Text.Tests { public class TextLaTeXParserTests {