| 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
|
|
|