Verified Commit aaf57ee1 authored by Pier Angelo Vendrame's avatar Pier Angelo Vendrame 🎃
Browse files

fixup! Bug 43140: Tighten up fonts on Linux.

Bug 43330: Move the previous fix earlier in the startup.
parent 7f8c1d43
Loading
Loading
Loading
Loading
+0 −27
Original line number Diff line number Diff line
@@ -1352,39 +1352,12 @@ bool gfxFontconfigFont::ShouldHintMetrics() const {
  return !GetStyle()->printerFont;
}

static nsresult SetFontconfigConfigFile() {
  nsCOMPtr<nsIProperties> dirSvc(
      do_GetService("@mozilla.org/file/directory_service;1"));
  NS_ENSURE_TRUE(dirSvc, NS_ERROR_NOT_AVAILABLE);
  nsCOMPtr<nsIFile> appFile, confDir;
  nsresult rv = dirSvc->Get(XRE_EXECUTABLE_FILE, NS_GET_IID(nsIFile),
                            getter_AddRefs(appFile));
  NS_ENSURE_SUCCESS(rv, rv);
  rv = appFile->GetParent(getter_AddRefs(confDir));
  NS_ENSURE_SUCCESS(rv, rv);
  rv = confDir->AppendNative("fonts"_ns);
  NS_ENSURE_SUCCESS(rv, rv);

  nsAutoCString confPath;
  rv = confDir->GetNativePath(confPath);
  NS_ENSURE_SUCCESS(rv, rv);
  if (NS_WARN_IF(setenv("FONTCONFIG_PATH", confPath.BeginReading(), 1) != 0 ||
                 setenv("FONTCONFIG_FILE", "fonts.conf", 1) != 0)) {
    return NS_ERROR_FAILURE;
  }
  return NS_OK;
}

gfxFcPlatformFontList::gfxFcPlatformFontList()
    : mLocalNames(64),
      mGenericMappings(32),
      mFcSubstituteCache(64),
      mLastConfig(nullptr),
      mAlwaysUseFontconfigGenerics(true) {
  if (NS_FAILED(SetFontconfigConfigFile())) {
    NS_WARNING("Failed to set the fontconfig config file!");
  }

  CheckFamilyList(kBaseFonts_Ubuntu_22_04);
  CheckFamilyList(kLangFonts_Ubuntu_22_04);
  CheckFamilyList(kBaseFonts_Ubuntu_20_04);
+26 −0
Original line number Diff line number Diff line
@@ -744,6 +744,25 @@ void nsXREDirProvider::FinishInitializingUserPrefs() {
  }
}

#ifdef MOZ_WIDGET_GTK
static nsresult SetFontconfigConfigFile(nsCOMPtr<nsIFile> appDir) {
  NS_ENSURE_TRUE(appDir, NS_ERROR_NULL_POINTER);
  nsCOMPtr<nsIFile> confDir;
  nsresult rv = appDir->Clone(getter_AddRefs(confDir));
  NS_ENSURE_SUCCESS(rv, rv);
  rv = confDir->AppendNative("fonts"_ns);
  NS_ENSURE_SUCCESS(rv, rv);
  nsAutoCString confPath;
  rv = confDir->GetNativePath(confPath);
  NS_ENSURE_SUCCESS(rv, rv);
  if (NS_WARN_IF(setenv("FONTCONFIG_PATH", confPath.BeginReading(), 1) != 0 ||
                 setenv("FONTCONFIG_FILE", "fonts.conf", 1) != 0)) {
    return NS_ERROR_FAILURE;
  }
  return NS_OK;
}
#endif

NS_IMETHODIMP
nsXREDirProvider::DoStartup() {
  nsresult rv;
@@ -762,6 +781,13 @@ nsXREDirProvider::DoStartup() {
    */
    MOZ_ASSERT(mPrefsInitialized);

#ifdef MOZ_WIDGET_GTK
    // FontConfig might be initialized by GTK/Pango, so we need to define its
    // config variables before doing anything.
    rv = SetFontconfigConfigFile(mGREDir);
    NS_ENSURE_SUCCESS(rv, rv);
#endif

    bool safeModeNecessary = false;
    nsCOMPtr<nsIAppStartup> appStartup(
        mozilla::components::AppStartup::Service());