| Index: third_party/WebKit/Source/platform/fonts/GlyphBuffer.h
|
| diff --git a/third_party/WebKit/Source/platform/fonts/GlyphBuffer.h b/third_party/WebKit/Source/platform/fonts/GlyphBuffer.h
|
| index f05a0d5ad37ac87f4aa576a7161b1a416c8aaee5..b52bd1d58ed49b4a0fe3bbc814ad2fbcb0bdf8bc 100644
|
| --- a/third_party/WebKit/Source/platform/fonts/GlyphBuffer.h
|
| +++ b/third_party/WebKit/Source/platform/fonts/GlyphBuffer.h
|
| @@ -92,16 +92,24 @@ class GlyphBuffer {
|
| return m_offsets[index * 2 + 1];
|
| }
|
|
|
| - void add(Glyph glyph, const SimpleFontData* font, float x) {
|
| + void add(Glyph glyph,
|
| + const SimpleFontData* font,
|
| + float x,
|
| + unsigned characterIndex = 0) {
|
| // cannot mix x-only/xy offsets
|
| ASSERT(!hasVerticalOffsets());
|
|
|
| m_fontData.append(font);
|
| m_glyphs.append(glyph);
|
| m_offsets.append(x);
|
| + if (m_characterIndexes)
|
| + m_characterIndexes->append(characterIndex);
|
| }
|
|
|
| - void add(Glyph glyph, const SimpleFontData* font, const FloatPoint& offset) {
|
| + void add(Glyph glyph,
|
| + const SimpleFontData* font,
|
| + const FloatPoint& offset,
|
| + unsigned characterIndex = 0) {
|
| // cannot mix x-only/xy offsets
|
| ASSERT(isEmpty() || hasVerticalOffsets());
|
|
|
| @@ -109,6 +117,8 @@ class GlyphBuffer {
|
| m_glyphs.append(glyph);
|
| m_offsets.append(offset.x());
|
| m_offsets.append(offset.y());
|
| + if (m_characterIndexes)
|
| + m_characterIndexes->append(characterIndex);
|
| }
|
|
|
| void reverseForSimpleRTL(float afterOffset, float totalWidth) {
|
| @@ -141,6 +151,15 @@ class GlyphBuffer {
|
| m_offsets.reverse();
|
| }
|
|
|
| + void saveCharacterIndexes() {
|
| + m_characterIndexes.reset(new Vector<unsigned, 2048>());
|
| + }
|
| +
|
| + unsigned characterIndex(unsigned index) const {
|
| + DCHECK(m_characterIndexes);
|
| + return (*m_characterIndexes)[index];
|
| + }
|
| +
|
| protected:
|
| Vector<const SimpleFontData*, 2048> m_fontData;
|
| Vector<Glyph, 2048> m_glyphs;
|
| @@ -149,6 +168,8 @@ class GlyphBuffer {
|
| // (depending on the buffer-wide positioning mode). This matches the
|
| // glyph positioning format used by Skia.
|
| Vector<float, 2048> m_offsets;
|
| +
|
| + std::unique_ptr<Vector<unsigned, 2048>> m_characterIndexes;
|
| };
|
|
|
| } // namespace blink
|
|
|