diff --git a/src/Markdig.Tests/Specs/GlobalizationSpecs.generated.cs b/src/Markdig.Tests/Specs/GlobalizationSpecs.generated.cs index 9d39877d..240f49a6 100644 --- a/src/Markdig.Tests/Specs/GlobalizationSpecs.generated.cs +++ b/src/Markdig.Tests/Specs/GlobalizationSpecs.generated.cs @@ -226,5 +226,27 @@ namespace Markdig.Tests.Specs.Globalization TestParser.TestSpec("Nutrition |Apple | Oranges\n--|-- | --\nCalories|52|47\nSugar|10g|9g\n\n پێکهاتە |سێو | پڕتەقاڵ\n--|-- | --\nکالۆری|٥٢|٤٧\nشەکر| ١٠گ|٩گ", "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
NutritionAppleOranges
Calories5247
Sugar10g9g
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
پێکهاتەسێوپڕتەقاڵ
کالۆری٥٢٤٧
شەکر١٠گ٩گ
", "globalization+advanced+emojis", context: "Example 3\nSection Extensions / Globalization\n"); } + + // But if text starts with LTR characters, no attributes are added. + [Test] + public void ExtensionsGlobalization_Example004() + { + // Example 4 + // Section: Extensions / Globalization + // + // The following Markdown: + // Foo میوە + // + // میوە bar + // + // Baz میوە + // + // Should be rendered as: + //

Foo میوە

+ //

میوە bar

+ //

Baz میوە

+ + TestParser.TestSpec("Foo میوە\n\nمیوە bar\n\nBaz میوە", "

Foo میوە

\n

میوە bar

\n

Baz میوە

", "globalization+advanced+emojis", context: "Example 4\nSection Extensions / Globalization\n"); + } } } diff --git a/src/Markdig.Tests/Specs/GlobalizationSpecs.md b/src/Markdig.Tests/Specs/GlobalizationSpecs.md index 2d82a080..e4a86102 100644 --- a/src/Markdig.Tests/Specs/GlobalizationSpecs.md +++ b/src/Markdig.Tests/Specs/GlobalizationSpecs.md @@ -186,4 +186,18 @@ Sugar|10g|9g +```````````````````````````````` + +But if text starts with LTR characters, no attributes are added. + +```````````````````````````````` example +Foo میوە + +میوە bar + +Baz میوە +. +

Foo میوە

+

میوە bar

+

Baz میوە

```````````````````````````````` \ No newline at end of file diff --git a/src/Markdig/Extensions/Globalization/GlobalizationExtension.cs b/src/Markdig/Extensions/Globalization/GlobalizationExtension.cs index 328f7ed0..c0e86182 100644 --- a/src/Markdig/Extensions/Globalization/GlobalizationExtension.cs +++ b/src/Markdig/Extensions/Globalization/GlobalizationExtension.cs @@ -93,20 +93,23 @@ namespace Markdig.Extensions.Globalization { for (int i = slice.Start; i <= slice.End; i++) { - if (slice[i] < 128) + char c = slice[i]; + if (c < 128) { + if (CharHelper.IsAlpha(c)) + { + return false; + } + continue; } - int rune; - if (CharHelper.IsHighSurrogate(slice[i]) && i < slice.End && CharHelper.IsLowSurrogate(slice[i + 1])) + int rune = c; + if (CharHelper.IsHighSurrogate(c) && i < slice.End && CharHelper.IsLowSurrogate(slice[i + 1])) { - Debug.Assert(char.IsSurrogatePair(slice[i], slice[i + 1])); - rune = char.ConvertToUtf32(slice[i], slice[i + 1]); - } - else - { - rune = slice[i]; + Debug.Assert(char.IsSurrogatePair(c, slice[i + 1])); + rune = char.ConvertToUtf32(c, slice[i + 1]); + i++; } if (CharHelper.IsRightToLeft(rune))