Bug 1640816 - Record base font-family name in family alias records. r=jwatt

Differential Revision: https://phabricator.services.mozilla.com/D77909
This commit is contained in:
Jonathan Kew 2020-06-04 11:48:46 +00:00
Родитель 43735ce93e
Коммит 26a8e4ceec
4 изменённых файлов: 9 добавлений и 6 удалений

Просмотреть файл

@ -34,13 +34,15 @@ namespace fontlist {
*/
struct AliasData {
nsTArray<Pointer> mFaces;
nsCString mBaseFamily;
uint32_t mIndex = 0;
FontVisibility mVisibility = FontVisibility::Unknown;
bool mBundled = false;
bool mBadUnderline = false;
bool mForceClassic = false;
void InitFromFamily(const Family* aFamily) {
void InitFromFamily(const Family* aFamily, const nsCString& aBaseFamily) {
mBaseFamily = aBaseFamily;
mIndex = aFamily->Index();
mVisibility = aFamily->Visibility();
mBundled = aFamily->IsBundled();

Просмотреть файл

@ -705,7 +705,7 @@ void FontList::SetAliases(
aliasArray.SetCapacity(aAliasTable.Count());
for (auto i = aAliasTable.Iter(); !i.Done(); i.Next()) {
aliasArray.AppendElement(Family::InitData(
i.Key(), i.Key(), i.Data()->mIndex, i.Data()->mVisibility,
i.Key(), i.Data()->mBaseFamily, i.Data()->mIndex, i.Data()->mVisibility,
i.Data()->mBundled, i.Data()->mBadUnderline, i.Data()->mForceClassic));
}
aliasArray.Sort();
@ -722,9 +722,9 @@ void FontList::SetAliases(
(void)new (&aliases[i]) Family(this, aliasArray[i]);
LOG_FONTLIST(("(shared-fontlist) alias family %u (%s)", (unsigned)i,
aliasArray[i].mName.get()));
aliases[i].SetFacePtrs(this, aAliasTable.Get(aliasArray[i].mName)->mFaces);
aliases[i].SetFacePtrs(this, aAliasTable.Get(aliasArray[i].mKey)->mFaces);
if (LOG_FONTLIST_ENABLED()) {
const auto& faces = aAliasTable.Get(aliasArray[i].mName)->mFaces;
const auto& faces = aAliasTable.Get(aliasArray[i].mKey)->mFaces;
for (unsigned j = 0; j < faces.Length(); j++) {
auto face = static_cast<const fontlist::Face*>(faces[j].ToPtr(this));
const nsCString& desc = face->mDescriptor.AsString(this);

Просмотреть файл

@ -1247,7 +1247,7 @@ void gfxDWriteFontList::ReadFaceNamesForFamily(
nsAutoCString key(alias);
ToLowerCase(key);
auto aliasData = mAliasTable.LookupOrAdd(key);
aliasData->InitFromFamily(aFamily);
aliasData->InitFromFamily(aFamily, familyName);
aliasData->mFaces.AppendElement(facePtrs[i]);
}

Просмотреть файл

@ -1060,6 +1060,7 @@ void gfxMacPlatformFontList::InitAliasesForSingleFaceList() {
// The "alias" here isn't based on an existing family, so we don't call
// aliasData->InitFromFamily(); the various flags are left as defaults.
aliasData->mFaces.AppendElement(facePtrs[i]);
aliasData->mBaseFamily = familyName;
break;
}
}
@ -1777,7 +1778,7 @@ void gfxMacPlatformFontList::ReadFaceNamesForFamily(fontlist::Family* aFamily,
nsAutoCString key;
GenerateFontListKey(alias, key);
auto aliasData = mAliasTable.LookupOrAdd(key);
aliasData->InitFromFamily(aFamily);
aliasData->InitFromFamily(aFamily, canonicalName);
aliasData->mFaces.AppendElement(facePtrs[i]);
}
}