Bug 1880561: Return the allowlisted font lists on other platforms r=jfkthame

Differential Revision: https://phabricator.services.mozilla.com/D202020
This commit is contained in:
Tom Ritter 2024-03-07 14:57:26 +00:00
parent bb9c8b5fa2
commit 5f99999bb3
8 changed files with 88 additions and 0 deletions

View File

@ -1159,6 +1159,17 @@ FontVisibility gfxDWriteFontList::GetVisibilityForFamily(
return FontVisibility::User;
}
nsTArray<std::pair<const char**, uint32_t>>
gfxDWriteFontList::GetFilteredPlatformFontLists() {
nsTArray<std::pair<const char**, uint32_t>> fontLists;
fontLists.AppendElement(std::make_pair(kBaseFonts, ArrayLength(kBaseFonts)));
fontLists.AppendElement(
std::make_pair(kLangPackFonts, ArrayLength(kLangPackFonts)));
return fontLists;
}
void gfxDWriteFontList::AppendFamiliesFromCollection(
IDWriteFontCollection* aCollection,
nsTArray<fontlist::Family::InitData>& aFamilies,

View File

@ -436,6 +436,9 @@ class gfxDWriteFontList final : public gfxPlatformFontList {
FontFamily& aMatchedFamily)
MOZ_REQUIRES(mLock) override;
nsTArray<std::pair<const char**, uint32_t>> GetFilteredPlatformFontLists()
override;
private:
friend class gfxDWriteFontFamily;

View File

@ -1321,6 +1321,55 @@ FontVisibility gfxFT2FontList::GetVisibilityForFamily(
return FontVisibility::User;
}
nsTArray<std::pair<const char**, uint32_t>>
gfxFT2FontList::GetFilteredPlatformFontLists() {
static Device fontVisibilityDevice = Device::Unassigned;
if (fontVisibilityDevice == Device::Unassigned) {
nsCOMPtr<nsIGfxInfo> gfxInfo = components::GfxInfo::Service();
Unused << gfxInfo->GetFontVisibilityDetermination(&fontVisibilityDevice);
}
nsTArray<std::pair<const char**, uint32_t>> fontLists;
if (fontVisibilityDevice == Device::Android_Unknown_Release_Version ||
fontVisibilityDevice == Device::Android_Unknown_Peloton ||
fontVisibilityDevice == Device::Android_Unknown_vbox ||
fontVisibilityDevice == Device::Android_Unknown_mitv ||
fontVisibilityDevice == Device::Android_Chromebook ||
fontVisibilityDevice == Device::Android_Amazon) {
return fontLists;
}
// Sanity Check
if (fontVisibilityDevice != Device::Android_sub_9 &&
fontVisibilityDevice != Device::Android_9_11 &&
fontVisibilityDevice != Device::Android_12_plus) {
return fontLists;
}
fontLists.AppendElement(
std::make_pair(kBaseFonts_Android, ArrayLength(kBaseFonts_Android)));
if (fontVisibilityDevice == Device::Android_sub_9) {
fontLists.AppendElement(std::make_pair(kBaseFonts_Android5_8,
ArrayLength(kBaseFonts_Android5_8)));
} else {
fontLists.AppendElement(std::make_pair(
kBaseFonts_Android9_Higher, ArrayLength(kBaseFonts_Android9_Higher)));
if (fontVisibilityDevice == Device::Android_9_11) {
fontLists.AppendElement(std::make_pair(
kBaseFonts_Android9_11, ArrayLength(kBaseFonts_Android9_11)));
} else {
fontLists.AppendElement(
std::make_pair(kBaseFonts_Android12_Higher,
ArrayLength(kBaseFonts_Android12_Higher)));
}
}
return fontLists;
}
static void GetName(hb_face_t* aFace, hb_ot_name_id_t aNameID,
nsACString& aName) {
unsigned int n = 0;

View File

@ -210,6 +210,9 @@ class gfxFT2FontList final : public gfxPlatformFontList {
void CollectInitData(const FontListEntry& aFLE, const nsCString& aPSName,
const nsCString& aFullName, StandardFile aStdFile);
nsTArray<std::pair<const char**, uint32_t>> GetFilteredPlatformFontLists()
override;
/**
* Callback passed to AppendFacesFromCachedFaceList to collect family/face
* information in either the unshared or shared list we're building.

View File

@ -853,6 +853,13 @@ bool gfxGDIFontList::FindAndAddFamiliesLocked(
aDevToCssSize);
}
nsTArray<std::pair<const char**, uint32_t>>
gfxGDIFontList::GetFilteredPlatformFontLists() {
nsTArray<std::pair<const char**, uint32_t>> fontLists;
return fontLists;
}
FontFamily gfxGDIFontList::GetDefaultFontForPlatform(
nsPresContext* aPresContext, const gfxFontStyle* aStyle,
nsAtom* aLanguage) {

View File

@ -332,6 +332,9 @@ class gfxGDIFontList final : public gfxPlatformFontList {
nsAtom* aLanguage = nullptr)
MOZ_REQUIRES(mLock) override;
nsTArray<std::pair<const char**, uint32_t>> GetFilteredPlatformFontLists()
override;
private:
friend class gfxWindowsPlatform;

View File

@ -17,6 +17,9 @@ class gfxMacPlatformFontList final : public CoreTextFontList {
gfxPlatformFontList::PlatformFontList());
}
nsTArray<std::pair<const char**, uint32_t>> GetFilteredPlatformFontLists()
override;
static void LookupSystemFont(mozilla::LookAndFeel::FontID aSystemFontID,
nsACString& aSystemFontName,
gfxFontStyle& aFontStyle);

View File

@ -252,6 +252,15 @@ FontVisibility gfxMacPlatformFontList::GetVisibilityForFamily(
return FontVisibility::User;
}
nsTArray<std::pair<const char**, uint32_t>>
gfxMacPlatformFontList::GetFilteredPlatformFontLists() {
nsTArray<std::pair<const char**, uint32_t>> fontLists;
fontLists.AppendElement(std::make_pair(kBaseFonts, ArrayLength(kBaseFonts)));
return fontLists;
}
bool gfxMacPlatformFontList::DeprecatedFamilyIsAvailable(
const nsACString& aName) {
NSString* family = GetNSStringForString(NS_ConvertUTF8toUTF16(aName));