Pier Angelo Vendrame pushed to branch tor-browser-128.5.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits:
-
aaf57ee1
by Pier Angelo Vendrame at 2024-12-16T18:52:26+01:00
-
5333f638
by Pier Angelo Vendrame at 2024-12-16T18:52:28+01:00
10 changed files:
- gfx/thebes/StandardFonts-linux.inc → gfx/thebes/StandardFonts-linux-upstream.inc
- + gfx/thebes/StandardFonts-macos-bb.inc
- gfx/thebes/StandardFonts-macos.inc → gfx/thebes/StandardFonts-macos-upstream.inc
- + gfx/thebes/StandardFonts-win10-bb.inc
- gfx/thebes/StandardFonts-win10.inc → gfx/thebes/StandardFonts-win10-upstream.inc
- gfx/thebes/gfxDWriteFontList.cpp
- gfx/thebes/gfxFcPlatformFontList.cpp
- gfx/thebes/gfxGDIFontList.cpp
- gfx/thebes/gfxMacPlatformFontList.mm
- toolkit/xre/nsXREDirProvider.cpp
Changes:
| 1 | +/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
| 2 | + * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
| 3 | + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
| 4 | + |
|
| 5 | +static const char* kBaseFonts[] = {
|
|
| 6 | + "Apple Color Emoji",
|
|
| 7 | + "AppleGothic",
|
|
| 8 | + "Arial",
|
|
| 9 | + "Arial Black",
|
|
| 10 | + "Arial Narrow",
|
|
| 11 | + "Courier",
|
|
| 12 | + "Courier New",
|
|
| 13 | + "Geneva",
|
|
| 14 | + "Georgia",
|
|
| 15 | + "Heiti TC",
|
|
| 16 | + "Helvetica",
|
|
| 17 | + "Helvetica Neue",
|
|
| 18 | + "Hiragino Kaku Gothic ProN",
|
|
| 19 | + "Kailasa",
|
|
| 20 | + "Lucida Grande",
|
|
| 21 | + "Menlo",
|
|
| 22 | + "Monaco",
|
|
| 23 | + "PingFang HK",
|
|
| 24 | + "PingFang SC",
|
|
| 25 | + "PingFang TC",
|
|
| 26 | + "Songti SC",
|
|
| 27 | + "Songti TC",
|
|
| 28 | + "Tahoma",
|
|
| 29 | + "Thonburi",
|
|
| 30 | + "Times",
|
|
| 31 | + "Times New Roman",
|
|
| 32 | + "Verdana",
|
|
| 33 | +}; |
| 1 | +/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
| 2 | + * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
| 3 | + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
| 4 | + |
|
| 5 | +static const char* kBaseFonts[] = {
|
|
| 6 | + "Arial",
|
|
| 7 | + "Cambria Math",
|
|
| 8 | + "Consolas",
|
|
| 9 | + "Courier New",
|
|
| 10 | + "Georgia",
|
|
| 11 | + "Lucida Console",
|
|
| 12 | + "Malgun Gothic",
|
|
| 13 | + "Microsoft Himalaya",
|
|
| 14 | + "Microsoft JhengHei",
|
|
| 15 | + "Microsoft YaHei",
|
|
| 16 | + "MS Gothic",
|
|
| 17 | + "MS PGothic",
|
|
| 18 | + "MV Boli",
|
|
| 19 | + "Segoe UI",
|
|
| 20 | + "SimSun",
|
|
| 21 | + "Sylfaen",
|
|
| 22 | + "Tahoma",
|
|
| 23 | + "Times New Roman",
|
|
| 24 | + "Verdana",
|
|
| 25 | +};
|
|
| 26 | + |
|
| 27 | +struct FontSubstitute {
|
|
| 28 | + const char* substituteName;
|
|
| 29 | + const char* actualFontName;
|
|
| 30 | +};
|
|
| 31 | + |
|
| 32 | +static const FontSubstitute kFontSubstitutes[] = {
|
|
| 33 | + // Common substitutions
|
|
| 34 | + {"Arabic Transparent", "Arial"},
|
|
| 35 | + {"Arabic Transparent Bold", "Arial Bold"},
|
|
| 36 | + {"Arial Baltic", "Arial"},
|
|
| 37 | + {"Arial CE", "Arial"},
|
|
| 38 | + {"Arial CYR", "Arial"},
|
|
| 39 | + {"Arial Greek", "Arial"},
|
|
| 40 | + {"Arial TUR", "Arial"},
|
|
| 41 | + {"Courier New Baltic", "Courier New"},
|
|
| 42 | + {"Courier New CE", "Courier New"},
|
|
| 43 | + {"Courier New CYR", "Courier New"},
|
|
| 44 | + {"Courier New Greek", "Courier New"},
|
|
| 45 | + {"Courier New TUR", "Courier New"},
|
|
| 46 | + {"Helv", "MS Sans Serif"},
|
|
| 47 | + {"Helvetica", "Arial"},
|
|
| 48 | + {"MS Shell Dlg 2", "Tahoma"},
|
|
| 49 | + {"Tahoma Armenian", "Tahoma"},
|
|
| 50 | + {"Times", "Times New Roman"},
|
|
| 51 | + {"Times New Roman Baltic", "Times New Roman"},
|
|
| 52 | + {"Times New Roman CE", "Times New Roman"},
|
|
| 53 | + {"Times New Roman CYR", "Times New Roman"},
|
|
| 54 | + {"Times New Roman Greek", "Times New Roman"},
|
|
| 55 | + {"Times New Roman TUR", "Times New Roman"},
|
|
| 56 | + {"Tms Rmn", "MS Serif"},
|
|
| 57 | + // Common, except Japanese (which uses MS UI Gothic, instead)
|
|
| 58 | + {"MS Shell Dlg", "Microsoft Sans Serif"},
|
|
| 59 | + // Arabic
|
|
| 60 | + {"Arial (Arabic)", "Arial"},
|
|
| 61 | + {"Courier New (Arabic)", "Courier New"},
|
|
| 62 | + {"Times New Roman (Arabic)", "Times New Roman"},
|
|
| 63 | + // Cyrillic + Greek
|
|
| 64 | + {"Courier", "Courier New"},
|
|
| 65 | + // Greek
|
|
| 66 | + {"Fixedsys Greek", "Fixedsys"},
|
|
| 67 | + {"MS Serif Greek", "MS Serif"},
|
|
| 68 | + {"MS Sans Serif Greek", "MS Sans Serif"},
|
|
| 69 | + {"Small Fonts Greek", "Small Fonts"},
|
|
| 70 | + {"System Greek", "System"},
|
|
| 71 | + // Hebrew
|
|
| 72 | + {"Arial (Hebrew)", "Arial"},
|
|
| 73 | + {"Courier New (Hebrew)", "Courier New"},
|
|
| 74 | + {"David Transparent", "David"},
|
|
| 75 | + {"Fixed Miriam Transparent", "Miriam Fixed"},
|
|
| 76 | + {"Miriam Transparent", "Miriam"},
|
|
| 77 | + {"Rod Transparent", "Rod"},
|
|
| 78 | + {"Times New Roman (Hebrew)", "Times New Roman"},
|
|
| 79 | + // Japanese
|
|
| 80 | + {"標準明朝", "MS 明朝"},
|
|
| 81 | + {"標準ゴシック", "MS ゴシック"},
|
|
| 82 | + {"ゴシック", "MS ゴシック"},
|
|
| 83 | + {"ゴシック", "MS ゴシック"},
|
|
| 84 | + {"クーリエ", "Courier"},
|
|
| 85 | + {"タイムズロマン", "Times New Roman"},
|
|
| 86 | + {"ヘルベチカ", "Arial"},
|
|
| 87 | + // Simplified Chinese
|
|
| 88 | + {"FangSong_GB2312", "FangSong"},
|
|
| 89 | + {"KaiTi_GB2312", "KaiTi"},
|
|
| 90 | +}; |
| ... | ... | @@ -200,68 +200,3 @@ static const char* kLangPackFonts[] = { |
| 200 | 200 | // "Rockwell Nova", // Pan-European Supplemental Fonts - EXCLUDED
|
| 201 | 201 | // "Verdana Pro", // Pan-European Supplemental Fonts - EXCLUDED
|
| 202 | 202 | }; |
| 203 | - |
|
| 204 | -struct FontSubstitute {
|
|
| 205 | - const char *substituteName;
|
|
| 206 | - const char *actualFontName;
|
|
| 207 | -};
|
|
| 208 | - |
|
| 209 | -static const FontSubstitute kFontSubstitutes[] = {
|
|
| 210 | - // Common substitutions
|
|
| 211 | - {"Arabic Transparent", "Arial"},
|
|
| 212 | - {"Arabic Transparent Bold", "Arial Bold"},
|
|
| 213 | - {"Arial Baltic", "Arial"},
|
|
| 214 | - {"Arial CE", "Arial"},
|
|
| 215 | - {"Arial CYR", "Arial"},
|
|
| 216 | - {"Arial Greek", "Arial"},
|
|
| 217 | - {"Arial TUR", "Arial"},
|
|
| 218 | - {"Courier New Baltic", "Courier New"},
|
|
| 219 | - {"Courier New CE", "Courier New"},
|
|
| 220 | - {"Courier New CYR", "Courier New"},
|
|
| 221 | - {"Courier New Greek", "Courier New"},
|
|
| 222 | - {"Courier New TUR", "Courier New"},
|
|
| 223 | - {"Helv", "MS Sans Serif"},
|
|
| 224 | - {"Helvetica", "Arial"},
|
|
| 225 | - {"MS Shell Dlg 2", "Tahoma"},
|
|
| 226 | - {"Tahoma Armenian", "Tahoma"},
|
|
| 227 | - {"Times", "Times New Roman"},
|
|
| 228 | - {"Times New Roman Baltic", "Times New Roman"},
|
|
| 229 | - {"Times New Roman CE", "Times New Roman"},
|
|
| 230 | - {"Times New Roman CYR", "Times New Roman"},
|
|
| 231 | - {"Times New Roman Greek", "Times New Roman"},
|
|
| 232 | - {"Times New Roman TUR", "Times New Roman"},
|
|
| 233 | - {"Tms Rmn", "MS Serif"},
|
|
| 234 | - // Common, except Japanese (which uses MS UI Gothic, instead)
|
|
| 235 | - {"MS Shell Dlg", "Microsoft Sans Serif"},
|
|
| 236 | - // Arabic
|
|
| 237 | - {"Arial (Arabic)", "Arial"},
|
|
| 238 | - {"Courier New (Arabic)", "Courier New"},
|
|
| 239 | - {"Times New Roman (Arabic)", "Times New Roman"},
|
|
| 240 | - // Cyrillic + Greek
|
|
| 241 | - {"Courier", "Courier New"},
|
|
| 242 | - // Greek
|
|
| 243 | - {"Fixedsys Greek", "Fixedsys"},
|
|
| 244 | - {"MS Serif Greek", "MS Serif"},
|
|
| 245 | - {"MS Sans Serif Greek", "MS Sans Serif"},
|
|
| 246 | - {"Small Fonts Greek", "Small Fonts"},
|
|
| 247 | - {"System Greek", "System"},
|
|
| 248 | - // Hebrew
|
|
| 249 | - {"Arial (Hebrew)", "Arial"},
|
|
| 250 | - {"Courier New (Hebrew)", "Courier New"},
|
|
| 251 | - {"David Transparent", "David"},
|
|
| 252 | - {"Fixed Miriam Transparent", "Miriam Fixed"},
|
|
| 253 | - {"Miriam Transparent", "Miriam"},
|
|
| 254 | - {"Rod Transparent", "Rod"},
|
|
| 255 | - {"Times New Roman (Hebrew)", "Times New Roman"},
|
|
| 256 | - // Japanese
|
|
| 257 | - {"標準明朝", "MS 明朝"},
|
|
| 258 | - {"標準ゴシック", "MS ゴシック"},
|
|
| 259 | - {"ゴシック", "MS ゴシック"},
|
|
| 260 | - {"ゴシック", "MS ゴシック"},
|
|
| 261 | - {"クーリエ", "Courier"},
|
|
| 262 | - {"タイムズロマン", "Times New Roman"},
|
|
| 263 | - {"ヘルベチカ", "Arial"},
|
|
| 264 | - // Simplified Chinese
|
|
| 265 | - {"FangSong_GB2312", "FangSong"},
|
|
| 266 | - {"KaiTi_GB2312", "KaiTi"},
|
|
| 267 | -}; |
| ... | ... | @@ -32,7 +32,7 @@ |
| 32 | 32 | |
| 33 | 33 | #include "harfbuzz/hb.h"
|
| 34 | 34 | |
| 35 | -#include "StandardFonts-win10.inc"
|
|
| 35 | +#include "StandardFonts-win10-bb.inc"
|
|
| 36 | 36 | |
| 37 | 37 | using namespace mozilla;
|
| 38 | 38 | using namespace mozilla::gfx;
|
| ... | ... | @@ -910,7 +910,9 @@ void gfxDWriteFontEntry::AddSizeOfIncludingThis(MallocSizeOf aMallocSizeOf, |
| 910 | 910 | |
| 911 | 911 | gfxDWriteFontList::gfxDWriteFontList() : mForceGDIClassicMaxFontSize(0.0) {
|
| 912 | 912 | CheckFamilyList(kBaseFonts);
|
| 913 | +#ifndef BASE_BROWSER_VERSION
|
|
| 913 | 914 | CheckFamilyList(kLangPackFonts);
|
| 915 | +#endif
|
|
| 914 | 916 | }
|
| 915 | 917 | |
| 916 | 918 | // bug 602792 - CJK systems default to large CJK fonts which cause excessive
|
| ... | ... | @@ -1153,9 +1155,11 @@ FontVisibility gfxDWriteFontList::GetVisibilityForFamily( |
| 1153 | 1155 | if (FamilyInList(aName, kBaseFonts)) {
|
| 1154 | 1156 | return FontVisibility::Base;
|
| 1155 | 1157 | }
|
| 1158 | +#ifndef BASE_BROWSER_VERSION
|
|
| 1156 | 1159 | if (FamilyInList(aName, kLangPackFonts)) {
|
| 1157 | 1160 | return FontVisibility::LangPack;
|
| 1158 | 1161 | }
|
| 1162 | +#endif
|
|
| 1159 | 1163 | return FontVisibility::User;
|
| 1160 | 1164 | }
|
| 1161 | 1165 | |
| ... | ... | @@ -1164,8 +1168,10 @@ gfxDWriteFontList::GetFilteredPlatformFontLists() { |
| 1164 | 1168 | nsTArray<std::pair<const char**, uint32_t>> fontLists;
|
| 1165 | 1169 | |
| 1166 | 1170 | fontLists.AppendElement(std::make_pair(kBaseFonts, ArrayLength(kBaseFonts)));
|
| 1171 | +#ifndef BASE_BROWSER_VERSION
|
|
| 1167 | 1172 | fontLists.AppendElement(
|
| 1168 | 1173 | std::make_pair(kLangPackFonts, ArrayLength(kLangPackFonts)));
|
| 1174 | +#endif
|
|
| 1169 | 1175 | |
| 1170 | 1176 | return fontLists;
|
| 1171 | 1177 | }
|
| ... | ... | @@ -32,7 +32,9 @@ |
| 32 | 32 | #include "nsCharSeparatedTokenizer.h"
|
| 33 | 33 | #include "nsXULAppAPI.h"
|
| 34 | 34 | #include "SharedFontList-impl.h"
|
| 35 | -#include "StandardFonts-linux.inc"
|
|
| 35 | +#ifndef BASE_BROWSER_VERSION
|
|
| 36 | +# include "StandardFonts-linux.inc"
|
|
| 37 | +#endif
|
|
| 36 | 38 | #include "mozilla/intl/Locale.h"
|
| 37 | 39 | |
| 38 | 40 | #include "mozilla/gfx/HelpersCairo.h"
|
| ... | ... | @@ -1352,45 +1354,20 @@ bool gfxFontconfigFont::ShouldHintMetrics() const { |
| 1352 | 1354 | return !GetStyle()->printerFont;
|
| 1353 | 1355 | }
|
| 1354 | 1356 | |
| 1355 | -static nsresult SetFontconfigConfigFile() {
|
|
| 1356 | - nsCOMPtr<nsIProperties> dirSvc(
|
|
| 1357 | - do_GetService("@mozilla.org/file/directory_service;1"));
|
|
| 1358 | - NS_ENSURE_TRUE(dirSvc, NS_ERROR_NOT_AVAILABLE);
|
|
| 1359 | - nsCOMPtr<nsIFile> appFile, confDir;
|
|
| 1360 | - nsresult rv = dirSvc->Get(XRE_EXECUTABLE_FILE, NS_GET_IID(nsIFile),
|
|
| 1361 | - getter_AddRefs(appFile));
|
|
| 1362 | - NS_ENSURE_SUCCESS(rv, rv);
|
|
| 1363 | - rv = appFile->GetParent(getter_AddRefs(confDir));
|
|
| 1364 | - NS_ENSURE_SUCCESS(rv, rv);
|
|
| 1365 | - rv = confDir->AppendNative("fonts"_ns);
|
|
| 1366 | - NS_ENSURE_SUCCESS(rv, rv);
|
|
| 1367 | - |
|
| 1368 | - nsAutoCString confPath;
|
|
| 1369 | - rv = confDir->GetNativePath(confPath);
|
|
| 1370 | - NS_ENSURE_SUCCESS(rv, rv);
|
|
| 1371 | - if (NS_WARN_IF(setenv("FONTCONFIG_PATH", confPath.BeginReading(), 1) != 0 ||
|
|
| 1372 | - setenv("FONTCONFIG_FILE", "fonts.conf", 1) != 0)) {
|
|
| 1373 | - return NS_ERROR_FAILURE;
|
|
| 1374 | - }
|
|
| 1375 | - return NS_OK;
|
|
| 1376 | -}
|
|
| 1377 | - |
|
| 1378 | 1357 | gfxFcPlatformFontList::gfxFcPlatformFontList()
|
| 1379 | 1358 | : mLocalNames(64),
|
| 1380 | 1359 | mGenericMappings(32),
|
| 1381 | 1360 | mFcSubstituteCache(64),
|
| 1382 | 1361 | mLastConfig(nullptr),
|
| 1383 | 1362 | mAlwaysUseFontconfigGenerics(true) {
|
| 1384 | - if (NS_FAILED(SetFontconfigConfigFile())) {
|
|
| 1385 | - NS_WARNING("Failed to set the fontconfig config file!");
|
|
| 1386 | - }
|
|
| 1387 | - |
|
| 1363 | +#ifndef BASE_BROWSER_VERSION
|
|
| 1388 | 1364 | CheckFamilyList(kBaseFonts_Ubuntu_22_04);
|
| 1389 | 1365 | CheckFamilyList(kLangFonts_Ubuntu_22_04);
|
| 1390 | 1366 | CheckFamilyList(kBaseFonts_Ubuntu_20_04);
|
| 1391 | 1367 | CheckFamilyList(kLangFonts_Ubuntu_20_04);
|
| 1392 | 1368 | CheckFamilyList(kBaseFonts_Fedora_39);
|
| 1393 | 1369 | CheckFamilyList(kBaseFonts_Fedora_38);
|
| 1370 | +#endif
|
|
| 1394 | 1371 | mLastConfig = FcConfigGetCurrent();
|
| 1395 | 1372 | if (XRE_IsParentProcess()) {
|
| 1396 | 1373 | // if the rescan interval is set, start the timer
|
| ... | ... | @@ -1704,11 +1681,14 @@ using Device = nsIGfxInfo::FontVisibilityDeviceDetermination; |
| 1704 | 1681 | static Device sFontVisibilityDevice = Device::Unassigned;
|
| 1705 | 1682 | |
| 1706 | 1683 | void AssignFontVisibilityDevice() {
|
| 1684 | + sFontVisibilityDevice = Device::Linux_Unknown;
|
|
| 1685 | +#ifndef BASE_BROWSER_VERSION
|
|
| 1707 | 1686 | if (sFontVisibilityDevice == Device::Unassigned) {
|
| 1708 | 1687 | nsCOMPtr<nsIGfxInfo> gfxInfo = components::GfxInfo::Service();
|
| 1709 | 1688 | NS_ENSURE_SUCCESS_VOID(
|
| 1710 | 1689 | gfxInfo->GetFontVisibilityDetermination(&sFontVisibilityDevice));
|
| 1711 | 1690 | }
|
| 1691 | +#endif
|
|
| 1712 | 1692 | }
|
| 1713 | 1693 | |
| 1714 | 1694 | // Per family array of faces.
|
| ... | ... | @@ -2029,6 +2009,7 @@ FontVisibility gfxFcPlatformFontList::GetVisibilityForFamily( |
| 2029 | 2009 | AssignFontVisibilityDevice();
|
| 2030 | 2010 | |
| 2031 | 2011 | switch (sFontVisibilityDevice) {
|
| 2012 | +#ifndef BASE_BROWSER_VERSION
|
|
| 2032 | 2013 | case Device::Linux_Ubuntu_any:
|
| 2033 | 2014 | case Device::Linux_Ubuntu_22:
|
| 2034 | 2015 | if (FamilyInList(aName, kBaseFonts_Ubuntu_22_04)) {
|
| ... | ... | @@ -2068,7 +2049,7 @@ FontVisibility gfxFcPlatformFontList::GetVisibilityForFamily( |
| 2068 | 2049 | return FontVisibility::Base;
|
| 2069 | 2050 | }
|
| 2070 | 2051 | return FontVisibility::User;
|
| 2071 | - |
|
| 2052 | +#endif
|
|
| 2072 | 2053 | default:
|
| 2073 | 2054 | // We don't know how to categorize fonts on this system
|
| 2074 | 2055 | return FontVisibility::Unknown;
|
| ... | ... | @@ -2081,6 +2062,7 @@ gfxFcPlatformFontList::GetFilteredPlatformFontLists() { |
| 2081 | 2062 | |
| 2082 | 2063 | nsTArray<std::pair<const char**, uint32_t>> fontLists;
|
| 2083 | 2064 | |
| 2065 | +#ifndef BASE_BROWSER_VERSION
|
|
| 2084 | 2066 | switch (sFontVisibilityDevice) {
|
| 2085 | 2067 | case Device::Linux_Ubuntu_any:
|
| 2086 | 2068 | case Device::Linux_Ubuntu_22:
|
| ... | ... | @@ -2114,6 +2096,7 @@ gfxFcPlatformFontList::GetFilteredPlatformFontLists() { |
| 2114 | 2096 | // We don't know how to categorize fonts on this system
|
| 2115 | 2097 | break;
|
| 2116 | 2098 | }
|
| 2099 | +#endif
|
|
| 2117 | 2100 | |
| 2118 | 2101 | return fontLists;
|
| 2119 | 2102 | }
|
| ... | ... | @@ -33,7 +33,7 @@ |
| 33 | 33 | |
| 34 | 34 | #include "nsContentUtils.h"
|
| 35 | 35 | |
| 36 | -#include "StandardFonts-win10.inc"
|
|
| 36 | +#include "StandardFonts-win10-bb.inc"
|
|
| 37 | 37 | |
| 38 | 38 | #include <usp10.h>
|
| 39 | 39 |
| ... | ... | @@ -46,7 +46,7 @@ |
| 46 | 46 | #include <time.h>
|
| 47 | 47 | #include <dlfcn.h>
|
| 48 | 48 | |
| 49 | -#include "StandardFonts-macos.inc"
|
|
| 49 | +#include "StandardFonts-macos-bb.inc"
|
|
| 50 | 50 | |
| 51 | 51 | using namespace mozilla;
|
| 52 | 52 | using namespace mozilla::gfx;
|
| ... | ... | @@ -153,7 +153,9 @@ void gfxSingleFaceMacFontFamily::ReadOtherFamilyNames( |
| 153 | 153 | |
| 154 | 154 | gfxMacPlatformFontList::gfxMacPlatformFontList() : CoreTextFontList() {
|
| 155 | 155 | CheckFamilyList(kBaseFonts);
|
| 156 | +#ifndef BASE_BROWSER_VERSION
|
|
| 156 | 157 | CheckFamilyList(kBaseFonts_13_Higher);
|
| 158 | +#endif
|
|
| 157 | 159 | |
| 158 | 160 | // cache this in a static variable so that gfxMacFontFamily objects
|
| 159 | 161 | // don't have to repeatedly look it up
|
| ... | ... | @@ -188,10 +190,12 @@ FontVisibility gfxMacPlatformFontList::GetVisibilityForFamily( |
| 188 | 190 | if (FamilyInList(aName, kBaseFonts)) {
|
| 189 | 191 | return FontVisibility::Base;
|
| 190 | 192 | }
|
| 193 | +#ifndef BASE_BROWSER_VERSION
|
|
| 191 | 194 | if (GetFontVisibilityDevice() == Device::MacOS_13_plus &&
|
| 192 | 195 | FamilyInList(aName, kBaseFonts_13_Higher)) {
|
| 193 | 196 | return FontVisibility::Base;
|
| 194 | 197 | }
|
| 198 | +#endif
|
|
| 195 | 199 | #ifdef MOZ_BUNDLED_FONTS
|
| 196 | 200 | if (mBundledFamilies.Contains(aName)) {
|
| 197 | 201 | return FontVisibility::Base;
|
| ... | ... | @@ -206,10 +210,12 @@ gfxMacPlatformFontList::GetFilteredPlatformFontLists() { |
| 206 | 210 | |
| 207 | 211 | fontLists.AppendElement(std::make_pair(kBaseFonts, std::size(kBaseFonts)));
|
| 208 | 212 | |
| 213 | +#ifndef BASE_BROWSER_VERSION
|
|
| 209 | 214 | if (GetFontVisibilityDevice() == Device::MacOS_13_plus) {
|
| 210 | 215 | fontLists.AppendElement(
|
| 211 | 216 | std::make_pair(kBaseFonts_13_Higher, std::size(kBaseFonts_13_Higher)));
|
| 212 | 217 | }
|
| 218 | +#endif
|
|
| 213 | 219 | |
| 214 | 220 | return fontLists;
|
| 215 | 221 | }
|
| ... | ... | @@ -744,6 +744,25 @@ void nsXREDirProvider::FinishInitializingUserPrefs() { |
| 744 | 744 | }
|
| 745 | 745 | }
|
| 746 | 746 | |
| 747 | +#ifdef MOZ_WIDGET_GTK
|
|
| 748 | +static nsresult SetFontconfigConfigFile(nsCOMPtr<nsIFile> appDir) {
|
|
| 749 | + NS_ENSURE_TRUE(appDir, NS_ERROR_NULL_POINTER);
|
|
| 750 | + nsCOMPtr<nsIFile> confDir;
|
|
| 751 | + nsresult rv = appDir->Clone(getter_AddRefs(confDir));
|
|
| 752 | + NS_ENSURE_SUCCESS(rv, rv);
|
|
| 753 | + rv = confDir->AppendNative("fonts"_ns);
|
|
| 754 | + NS_ENSURE_SUCCESS(rv, rv);
|
|
| 755 | + nsAutoCString confPath;
|
|
| 756 | + rv = confDir->GetNativePath(confPath);
|
|
| 757 | + NS_ENSURE_SUCCESS(rv, rv);
|
|
| 758 | + if (NS_WARN_IF(setenv("FONTCONFIG_PATH", confPath.BeginReading(), 1) != 0 ||
|
|
| 759 | + setenv("FONTCONFIG_FILE", "fonts.conf", 1) != 0)) {
|
|
| 760 | + return NS_ERROR_FAILURE;
|
|
| 761 | + }
|
|
| 762 | + return NS_OK;
|
|
| 763 | +}
|
|
| 764 | +#endif
|
|
| 765 | + |
|
| 747 | 766 | NS_IMETHODIMP
|
| 748 | 767 | nsXREDirProvider::DoStartup() {
|
| 749 | 768 | nsresult rv;
|
| ... | ... | @@ -762,6 +781,13 @@ nsXREDirProvider::DoStartup() { |
| 762 | 781 | */
|
| 763 | 782 | MOZ_ASSERT(mPrefsInitialized);
|
| 764 | 783 | |
| 784 | +#ifdef MOZ_WIDGET_GTK
|
|
| 785 | + // FontConfig might be initialized by GTK/Pango, so we need to define its
|
|
| 786 | + // config variables before doing anything.
|
|
| 787 | + rv = SetFontconfigConfigFile(mGREDir);
|
|
| 788 | + NS_ENSURE_SUCCESS(rv, rv);
|
|
| 789 | +#endif
|
|
| 790 | + |
|
| 765 | 791 | bool safeModeNecessary = false;
|
| 766 | 792 | nsCOMPtr<nsIAppStartup> appStartup(
|
| 767 | 793 | mozilla::components::AppStartup::Service());
|