зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
43735ce93e
Коммит
26a8e4ceec
|
@ -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]);
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче