| Index: third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp
|
| diff --git a/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp b/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp
|
| index ac756abc58ab294dfec117abf26139096694d796..402642e974c814333b0c46c8c418127c5ec65c60 100644
|
| --- a/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp
|
| +++ b/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzFace.cpp
|
| @@ -43,6 +43,7 @@
|
| #include "platform/fonts/FontCache.h"
|
| #include "platform/fonts/FontPlatformData.h"
|
| #include "platform/fonts/SimpleFontData.h"
|
| +#include "platform/fonts/UnicodeRangeSet.h"
|
| #include "platform/fonts/shaping/HarfBuzzShaper.h"
|
| #include "wtf/HashMap.h"
|
| #include "wtf/MathExtras.h"
|
| @@ -114,13 +115,13 @@ struct HarfBuzzFontData {
|
| USING_FAST_MALLOC(HarfBuzzFontData);
|
| WTF_MAKE_NONCOPYABLE(HarfBuzzFontData);
|
| public:
|
| - HarfBuzzFontData(WTF::HashMap<uint32_t, uint16_t>* glyphCacheForFaceCacheEntry, hb_face_t* face, unsigned rangeFrom, unsigned rangeTo)
|
| + HarfBuzzFontData(WTF::HashMap<uint32_t, uint16_t>* glyphCacheForFaceCacheEntry, hb_face_t* face, PassRefPtr<UnicodeRangeSet> rangeSet)
|
| : m_glyphCacheForFaceCacheEntry(glyphCacheForFaceCacheEntry)
|
| , m_face(face)
|
| , m_hbOpenTypeFont(nullptr)
|
| - , m_rangeFrom(rangeFrom)
|
| - , m_rangeTo(rangeTo)
|
| - { }
|
| + , m_rangeSet(rangeSet)
|
| + {
|
| + }
|
|
|
| ~HarfBuzzFontData()
|
| {
|
| @@ -133,8 +134,7 @@ public:
|
| WTF::HashMap<uint32_t, uint16_t>* m_glyphCacheForFaceCacheEntry;
|
| hb_face_t* m_face;
|
| hb_font_t* m_hbOpenTypeFont;
|
| - unsigned m_rangeFrom;
|
| - unsigned m_rangeTo;
|
| + RefPtr<UnicodeRangeSet> m_rangeSet;
|
| };
|
|
|
| static hb_position_t SkiaScalarToHarfBuzzPosition(SkScalar value)
|
| @@ -184,7 +184,7 @@ static hb_bool_t harfBuzzGetGlyph(hb_font_t* hbFont, void* fontData, hb_codepoin
|
| HarfBuzzFontData* hbFontData = reinterpret_cast<HarfBuzzFontData*>(fontData);
|
|
|
| RELEASE_ASSERT(hbFontData);
|
| - if (unicode < hbFontData->m_rangeFrom || unicode > hbFontData->m_rangeTo)
|
| + if (hbFontData->m_rangeSet && !hbFontData->m_rangeSet->contains(unicode))
|
| return false;
|
|
|
| if (variationSelector) {
|
| @@ -350,9 +350,9 @@ hb_face_t* HarfBuzzFace::createFace()
|
| return face;
|
| }
|
|
|
| -hb_font_t* HarfBuzzFace::createFont(unsigned rangeFrom, unsigned rangeTo) const
|
| +hb_font_t* HarfBuzzFace::createFont(PassRefPtr<UnicodeRangeSet> rangeSet) const
|
| {
|
| - HarfBuzzFontData* hbFontData = new HarfBuzzFontData(m_glyphCacheForFaceCacheEntry, m_face, rangeFrom, rangeTo);
|
| + HarfBuzzFontData* hbFontData = new HarfBuzzFontData(m_glyphCacheForFaceCacheEntry, m_face, rangeSet);
|
| m_platformData->setupPaint(&hbFontData->m_paint);
|
| hbFontData->m_simpleFontData = FontCache::fontCache()->fontDataFromFontPlatformData(m_platformData);
|
| ASSERT(hbFontData->m_simpleFontData);
|
|
|