Index: Source/platform/fonts/harfbuzz/HarfBuzzShaper.cpp |
diff --git a/Source/platform/fonts/harfbuzz/HarfBuzzShaper.cpp b/Source/platform/fonts/harfbuzz/HarfBuzzShaper.cpp |
index 13ac6f80ffa7ef644d2849f29d95ca0854a8bf42..88f72cc92609829557deff6f3ce150c890ed33cf 100644 |
--- a/Source/platform/fonts/harfbuzz/HarfBuzzShaper.cpp |
+++ b/Source/platform/fonts/harfbuzz/HarfBuzzShaper.cpp |
@@ -627,9 +627,7 @@ bool HarfBuzzShaper::collectHarfBuzzRuns() |
nextScript = currentScript; |
currentCharacterPosition = iterator.characters(); |
} |
- unsigned numCharactersOfCurrentRun = iterator.currentCharacter() - startIndexOfCurrentRun; |
- hb_script_t script = hb_icu_script_to_script(currentScript); |
- m_harfBuzzRuns.append(HarfBuzzRun::create(currentFontData, startIndexOfCurrentRun, numCharactersOfCurrentRun, m_run.direction(), script)); |
+ addHarfBuzzRun(startIndexOfCurrentRun, iterator.currentCharacter(), currentFontData, currentScript); |
currentFontData = nextFontData; |
startIndexOfCurrentRun = iterator.currentCharacter(); |
} while (iterator.consume(character, clusterLength)); |
@@ -637,6 +635,17 @@ bool HarfBuzzShaper::collectHarfBuzzRuns() |
return !m_harfBuzzRuns.isEmpty(); |
} |
+void HarfBuzzShaper::addHarfBuzzRun(unsigned startCharacter, |
+ unsigned endCharacter, const SimpleFontData* fontData, |
+ UScriptCode script) |
+{ |
+ ASSERT(endCharacter > startCharacter); |
+ ASSERT(script != USCRIPT_INVALID_CODE); |
+ return m_harfBuzzRuns.append(HarfBuzzRun::create(fontData, |
+ startCharacter, endCharacter - startCharacter, |
+ m_run.direction(), hb_icu_script_to_script(script))); |
+} |
+ |
static const uint16_t* toUint16(const UChar* src) |
{ |
// FIXME: This relies on undefined behavior however it works on the |