Index: Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
diff --git a/Source/platform/fonts/shaping/HarfBuzzShaper.cpp b/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
index 7c8631223207d2132ba201fe01c4cc373191b7ba..2740aa29d6b3f891027acdda5cafcce2cc14397a 100644 |
--- a/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
+++ b/Source/platform/fonts/shaping/HarfBuzzShaper.cpp |
@@ -1017,6 +1017,13 @@ float HarfBuzzShaper::fillGlyphBufferForTextEmphasis(GlyphBuffer* glyphBuffer, H |
uint16_t currentCharacterIndex = currentRun->startIndex() + glyphToCharacterIndexes[i]; |
bool isRunEnd = (i + 1 == numGlyphs); |
bool isClusterEnd = isRunEnd || (currentRun->startIndex() + glyphToCharacterIndexes[i + 1] != currentCharacterIndex); |
+ |
+ if ((m_run.rtl() && currentCharacterIndex >= m_toIndex) || (!m_run.rtl() && currentCharacterIndex < m_fromIndex)) { |
+ advanceSoFar += advances[i]; |
+ m_run.rtl() ? --clusterStart : ++clusterStart; |
+ continue; |
+ } |
+ |
clusterAdvance += advances[i]; |
if (isClusterEnd) { |