Index: Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
diff --git a/Source/platform/fonts/shaping/HarfBuzzShaper.cpp b/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
index 8063039c306b8fae8f5c4976c7b12c593c1ef51c..981a642c5be9cb3e9214488357af0c6f49528679 100644 |
--- a/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
+++ b/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
@@ -602,7 +602,7 @@ static void normalizeCharacters(const TextRun& run, unsigned length, UChar* dest |
// Don't normalize tabs as they are not treated as spaces for word-end. |
if (run.normalizeSpace() && Character::isNormalizedCanvasSpaceCharacter(character)) |
character = spaceCharacter; |
- else if (Character::treatAsSpace(character)) |
+ else if (Character::treatAsSpace(character) && character != noBreakSpaceCharacter) |
character = spaceCharacter; |
else if (Character::treatAsZeroWidthSpaceInComplexScript(character)) |
character = zeroWidthSpaceCharacter; |
@@ -1172,7 +1172,7 @@ float HarfBuzzShaper::adjustSpacing(ShapeResult::RunInfo* run, size_t glyphIndex |
spacing += m_letterSpacing; |
bool treatAsSpace = Character::treatAsSpace(character); |
- if (treatAsSpace && currentCharacterIndex && (character != '\t' || !m_textRun.allowTabs())) |
+ if (treatAsSpace && (currentCharacterIndex || character == noBreakSpaceCharacter) && (character != '\t' || !m_textRun.allowTabs())) |
pdr.
2015/08/22 02:29:46
This change took me a while to understand, but I'm
|
spacing += m_wordSpacingAdjustment; |
if (!m_expansionOpportunityCount) |