HarfBuzzFace::~HarfBuzzFace() { HarfBuzzFaceCache::iterator result = harfBuzzFaceCache()->find(m_uniqueID); ASSERT_WITH_SECURITY_IMPLICATION(result != harfBuzzFaceCache()->end()); ASSERT(result.get()->value->refCount() > 1); result.get()->value->deref(); if (result.get()->value->refCount() == 1) harfBuzzFaceCache()->remove(m_uniqueID); }
HarfBuzzFace::HarfBuzzFace(FontPlatformData* platformData, uint64_t uniqueID) : m_platformData(platformData) , m_uniqueID(uniqueID) , m_scriptForVerticalText(HB_SCRIPT_INVALID) { HarfBuzzFaceCache::AddResult result = harfBuzzFaceCache()->add(m_uniqueID, nullptr); if (result.isNewEntry) result.storedValue->value = FaceCacheEntry::create(createFace()); result.storedValue->value->ref(); m_face = result.storedValue->value->face(); m_glyphCacheForFaceCacheEntry = result.storedValue->value->glyphCache(); }