| Index: Source/core/paint/ListMarkerPainter.cpp
|
| diff --git a/Source/core/paint/ListMarkerPainter.cpp b/Source/core/paint/ListMarkerPainter.cpp
|
| index 7caf6846ae117194f5e9f4208554c3ce2c8ffcc6..66008efbb4aa96e45666791fb568dd2464d42b1e 100644
|
| --- a/Source/core/paint/ListMarkerPainter.cpp
|
| +++ b/Source/core/paint/ListMarkerPainter.cpp
|
| @@ -79,12 +79,8 @@ void ListMarkerPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pai
|
| return;
|
| case NoneListStyle:
|
| return;
|
| - case Afar:
|
| - case Amharic:
|
| - case AmharicAbegede:
|
| case ArabicIndic:
|
| case Armenian:
|
| - case BinaryListStyle:
|
| case Bengali:
|
| case Cambodian:
|
| case CJKIdeographic:
|
| @@ -93,28 +89,16 @@ void ListMarkerPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pai
|
| case DecimalLeadingZero:
|
| case DecimalListStyle:
|
| case Devanagari:
|
| - case Ethiopic:
|
| - case EthiopicAbegede:
|
| - case EthiopicAbegedeAmEt:
|
| - case EthiopicAbegedeGez:
|
| - case EthiopicAbegedeTiEr:
|
| - case EthiopicAbegedeTiEt:
|
| - case EthiopicHalehameAaEr:
|
| - case EthiopicHalehameAaEt:
|
| - case EthiopicHalehameAmEt:
|
| - case EthiopicHalehameGez:
|
| - case EthiopicHalehameOmEt:
|
| - case EthiopicHalehameSidEt:
|
| - case EthiopicHalehameSoEt:
|
| + case EthiopicHalehame:
|
| + case EthiopicHalehameAm:
|
| case EthiopicHalehameTiEr:
|
| case EthiopicHalehameTiEt:
|
| - case EthiopicHalehameTig:
|
| case Georgian:
|
| case Gujarati:
|
| case Gurmukhi:
|
| + case Hebrew:
|
| case Hangul:
|
| case HangulConsonant:
|
| - case Hebrew:
|
| case Hiragana:
|
| case HiraganaIroha:
|
| case Kannada:
|
| @@ -125,37 +109,21 @@ void ListMarkerPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pai
|
| case LowerAlpha:
|
| case LowerArmenian:
|
| case LowerGreek:
|
| - case LowerHexadecimal:
|
| case LowerLatin:
|
| - case LowerNorwegian:
|
| case LowerRoman:
|
| case Malayalam:
|
| case Mongolian:
|
| case Myanmar:
|
| - case Octal:
|
| case Oriya:
|
| - case Oromo:
|
| case Persian:
|
| - case Sidama:
|
| - case Somali:
|
| case Telugu:
|
| case Thai:
|
| case Tibetan:
|
| - case Tigre:
|
| - case TigrinyaEr:
|
| - case TigrinyaErAbegede:
|
| - case TigrinyaEt:
|
| - case TigrinyaEtAbegede:
|
| case UpperAlpha:
|
| case UpperArmenian:
|
| - case UpperGreek:
|
| - case UpperHexadecimal:
|
| case UpperLatin:
|
| - case UpperNorwegian:
|
| case UpperRoman:
|
| case Urdu:
|
| - case Asterisks:
|
| - case Footnotes:
|
| break;
|
| }
|
| if (m_layoutListMarker.text().isEmpty())
|
| @@ -179,38 +147,34 @@ void ListMarkerPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pai
|
| textRunPaintInfo.bounds = marker;
|
| IntPoint textOrigin = IntPoint(marker.x(), marker.y() + m_layoutListMarker.style()->fontMetrics().ascent());
|
|
|
| - if (type == Asterisks || type == Footnotes) {
|
| + // Text is not arbitrary. We can judge whether it's RTL from the first character,
|
| + // and we only need to handle the direction RightToLeft for now.
|
| + bool textNeedsReversing = WTF::Unicode::direction(m_layoutListMarker.text()[0]) == WTF::Unicode::RightToLeft;
|
| + StringBuilder reversedText;
|
| + if (textNeedsReversing) {
|
| + unsigned length = m_layoutListMarker.text().length();
|
| + reversedText.reserveCapacity(length);
|
| + for (int i = length - 1; i >= 0; --i)
|
| + reversedText.append(m_layoutListMarker.text()[i]);
|
| + ASSERT(reversedText.length() == length);
|
| + textRun.setText(reversedText.toString());
|
| + }
|
| +
|
| + const UChar suffix = m_layoutListMarker.listMarkerSuffix(type, m_layoutListMarker.listItem()->value());
|
| + UChar suffixStr[2] = {
|
| + m_layoutListMarker.style()->isLeftToRightDirection() ? suffix : static_cast<UChar>(' '),
|
| + m_layoutListMarker.style()->isLeftToRightDirection() ? static_cast<UChar>(' ') : suffix
|
| + };
|
| + TextRun suffixRun = constructTextRun(&m_layoutListMarker, font, suffixStr, 2, m_layoutListMarker.styleRef(), m_layoutListMarker.style()->direction());
|
| + TextRunPaintInfo suffixRunInfo(suffixRun);
|
| + suffixRunInfo.bounds = marker;
|
| +
|
| + if (m_layoutListMarker.style()->isLeftToRightDirection()) {
|
| context->drawText(font, textRunPaintInfo, textOrigin);
|
| + context->drawText(font, suffixRunInfo, textOrigin + IntSize(font.width(textRun), 0));
|
| } else {
|
| - // Text is not arbitrary. We can judge whether it's RTL from the first character,
|
| - // and we only need to handle the direction RightToLeft for now.
|
| - bool textNeedsReversing = WTF::Unicode::direction(m_layoutListMarker.text()[0]) == WTF::Unicode::RightToLeft;
|
| - StringBuilder reversedText;
|
| - if (textNeedsReversing) {
|
| - unsigned length = m_layoutListMarker.text().length();
|
| - reversedText.reserveCapacity(length);
|
| - for (int i = length - 1; i >= 0; --i)
|
| - reversedText.append(m_layoutListMarker.text()[i]);
|
| - ASSERT(reversedText.length() == length);
|
| - textRun.setText(reversedText.toString());
|
| - }
|
| -
|
| - const UChar suffix = m_layoutListMarker.listMarkerSuffix(type, m_layoutListMarker.listItem()->value());
|
| - UChar suffixStr[2] = {
|
| - m_layoutListMarker.style()->isLeftToRightDirection() ? suffix : static_cast<UChar>(' '),
|
| - m_layoutListMarker.style()->isLeftToRightDirection() ? static_cast<UChar>(' ') : suffix
|
| - };
|
| - TextRun suffixRun = constructTextRun(&m_layoutListMarker, font, suffixStr, 2, m_layoutListMarker.styleRef(), m_layoutListMarker.style()->direction());
|
| - TextRunPaintInfo suffixRunInfo(suffixRun);
|
| - suffixRunInfo.bounds = marker;
|
| -
|
| - if (m_layoutListMarker.style()->isLeftToRightDirection()) {
|
| - context->drawText(font, textRunPaintInfo, textOrigin);
|
| - context->drawText(font, suffixRunInfo, textOrigin + IntSize(font.width(textRun), 0));
|
| - } else {
|
| - context->drawText(font, suffixRunInfo, textOrigin);
|
| - context->drawText(font, textRunPaintInfo, textOrigin + IntSize(font.width(suffixRun), 0));
|
| - }
|
| + context->drawText(font, suffixRunInfo, textOrigin);
|
| + context->drawText(font, textRunPaintInfo, textOrigin + IntSize(font.width(suffixRun), 0));
|
| }
|
| }
|
|
|
|
|