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شەکر| ١٠گ|٩گ", "
| Nutrition | \nApple | \nOranges | \n
|---|---|---|
| Calories | \n52 | \n47 | \n
| Sugar | \n10g | \n9g | \n
| پێکهاتە | \nسێو | \nپڕتەقاڵ | \n
|---|---|---|
| کالۆری | \n٥٢ | \n٤٧ | \n
| شەکر | \n١٠گ | \n٩گ | \n
Foo میوە
+ //میوە bar
+ //Baz میوە
+ + TestParser.TestSpec("Foo میوە\n\nمیوە bar\n\nBaz میوە", "Foo میوە
\nمیوە bar
\nBaz میوە
", "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))