diff options
author | Antoine Brodin <antoine@FreeBSD.org> | 2021-01-01 10:11:34 +0000 |
---|---|---|
committer | Antoine Brodin <antoine@FreeBSD.org> | 2021-01-01 10:11:34 +0000 |
commit | 26b4c8f71f91d22e081b27814782686edde0c90a (patch) | |
tree | 1c321c39372c25d8634e75b5c8e08edc676b296d /www/iridium/files/patch-base_test_fontconfig__util__linux.cc | |
parent | New port: math/py-optuna: A hyperparameter optimization framework (diff) |
Revert r559792 to unbreak INDEX and bulk -a
It seems a lot of reverse dependencies were missed
With hat: portmgr
Diffstat (limited to 'www/iridium/files/patch-base_test_fontconfig__util__linux.cc')
-rw-r--r-- | www/iridium/files/patch-base_test_fontconfig__util__linux.cc | 406 |
1 files changed, 406 insertions, 0 deletions
diff --git a/www/iridium/files/patch-base_test_fontconfig__util__linux.cc b/www/iridium/files/patch-base_test_fontconfig__util__linux.cc new file mode 100644 index 000000000000..eb6ff5024c46 --- /dev/null +++ b/www/iridium/files/patch-base_test_fontconfig__util__linux.cc @@ -0,0 +1,406 @@ +--- base/test/fontconfig_util_linux.cc.orig 2020-02-03 21:52:37 UTC ++++ base/test/fontconfig_util_linux.cc +@@ -6,22 +6,397 @@ + + #include <fontconfig/fontconfig.h> + +-#include <memory> +- + #include "base/base_paths.h" + #include "base/environment.h" + #include "base/files/file_path.h" ++#include "base/files/file_util.h" + #include "base/logging.h" ++#include "base/macros.h" + #include "base/path_service.h" ++#include "base/strings/string_util.h" + + namespace base { + ++namespace { ++ ++const char kFontsConfTemplate[] = R"(<?xml version="1.0"?> ++<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> ++<fontconfig> ++ ++ <!-- Cache location. --> ++ <cachedir>$1</cachedir> ++ ++ <!-- GCS-synced fonts. --> ++ <dir>$2</dir> ++ ++ <!-- Default properties. --> ++ <match target="font"> ++ <edit name="embeddedbitmap" mode="append_last"> ++ <bool>false</bool> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>Times</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Tinos</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>sans</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>DejaVu Sans</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>sans serif</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ </match> ++ ++ <!-- Some layout tests specify Helvetica as a family and we need to make sure ++ that we don't fallback to Tinos for them --> ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>Helvetica</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>sans-serif</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>serif</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Tinos</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>mono</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Cousine</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>monospace</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Cousine</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>Courier</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Cousine</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>cursive</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Comic Sans MS</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>fantasy</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Impact</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>Monaco</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Tinos</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>Arial</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>Courier New</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Cousine</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>Georgia</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Gelasio</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>Times New Roman</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Tinos</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test qual="any" name="family"> ++ <string>Verdana</string> ++ </test> ++ <!-- NOT metrically compatible! --> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ </match> ++ ++ <!-- TODO(thomasanderson): Move these configs to be test-specific. --> ++ <match target="pattern"> ++ <test name="family" compare="eq"> ++ <string>NonAntiAliasedSans</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ <edit name="antialias" mode="assign"> ++ <bool>false</bool> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test name="family" compare="eq"> ++ <string>SlightHintedGeorgia</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Gelasio</string> ++ </edit> ++ <edit name="hintstyle" mode="assign"> ++ <const>hintslight</const> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test name="family" compare="eq"> ++ <string>NonHintedSans</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ <!-- These deliberately contradict each other. The 'hinting' preference ++ should take priority --> ++ <edit name="hintstyle" mode="assign"> ++ <const>hintfull</const> ++ </edit> ++ <edit name="hinting" mode="assign"> ++ <bool>false</bool> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test name="family" compare="eq"> ++ <string>AutohintedSerif</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ <edit name="autohint" mode="assign"> ++ <bool>true</bool> ++ </edit> ++ <edit name="hintstyle" mode="assign"> ++ <const>hintmedium</const> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test name="family" compare="eq"> ++ <string>HintedSerif</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ <edit name="autohint" mode="assign"> ++ <bool>false</bool> ++ </edit> ++ <edit name="hintstyle" mode="assign"> ++ <const>hintmedium</const> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test name="family" compare="eq"> ++ <string>FullAndAutoHintedSerif</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ <edit name="autohint" mode="assign"> ++ <bool>true</bool> ++ </edit> ++ <edit name="hintstyle" mode="assign"> ++ <const>hintfull</const> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test name="family" compare="eq"> ++ <string>SubpixelEnabledArial</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ <edit name="rgba" mode="assign"> ++ <const>rgb</const> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test name="family" compare="eq"> ++ <string>SubpixelDisabledArial</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Arimo</string> ++ </edit> ++ <edit name="rgba" mode="assign"> ++ <const>none</const> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <!-- FontConfig doesn't currently provide a well-defined way to turn on ++ subpixel positioning. This is just an arbitrary pattern to use after ++ turning subpixel positioning on globally to ensure that we don't have ++ issues with our style getting cached for other tests. --> ++ <test name="family" compare="eq"> ++ <string>SubpixelPositioning</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Tinos</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <!-- See comments above --> ++ <test name="family" compare="eq"> ++ <string>SubpixelPositioningAhem</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>ahem</string> ++ </edit> ++ </match> ++ ++ <match target="pattern"> ++ <test name="family" compare="eq"> ++ <string>SlightHintedTimesNewRoman</string> ++ </test> ++ <edit name="family" mode="assign"> ++ <string>Tinos</string> ++ </edit> ++ <edit name="hintstyle" mode="assign"> ++ <const>hintslight</const> ++ </edit> ++ </match> ++ ++ <!-- When we encounter a character that the current font doesn't ++ support, gfx::GetFallbackFontForChar() returns the first font ++ that does have a glyph for the character. The list of fonts is ++ sorted by a pattern that includes the current locale, but doesn't ++ include a font family (which means that the fallback font depends ++ on the locale but not on the current font). ++ ++ DejaVu Sans is commonly the only font that supports some ++ characters, such as "⇧", and even when other candidates are ++ available, DejaVu Sans is commonly first among them, because of ++ the way Fontconfig is ordinarily configured. For example, the ++ configuration in the Fonconfig source lists DejaVu Sans under the ++ sans-serif generic family, and appends sans-serif to patterns ++ that don't already include a generic family (such as the pattern ++ in gfx::GetFallbackFontForChar()). ++ ++ To get the same fallback font in the layout tests, we could ++ duplicate this configuration here, or more directly, simply ++ append DejaVu Sans to all patterns. --> ++ <match target="pattern"> ++ <edit name="family" mode="append_last"> ++ <string>DejaVu Sans</string> ++ </edit> ++ </match> ++ ++</fontconfig> ++)"; ++ ++} // namespace ++ + void SetUpFontconfig() { +- FilePath dir_module; +- CHECK(PathService::Get(DIR_MODULE, &dir_module)); ++ std::unique_ptr<Environment> env = Environment::Create(); ++ if (!env->HasVar("FONTCONFIG_FILE")) { ++ // fonts.conf must be generated on-the-fly since it contains absolute paths ++ // which may be different if ++ // 1. The user moves/renames their build directory (or any parent dirs). ++ // 2. The build directory is mapped on a swarming bot at a location ++ // different from the one the buildbot used. ++ FilePath dir_module; ++ PathService::Get(DIR_MODULE, &dir_module); ++ FilePath font_cache = dir_module.Append("fontconfig_caches"); ++ FilePath test_fonts = dir_module.Append("test_fonts"); ++ std::string fonts_conf = ReplaceStringPlaceholders( ++ kFontsConfTemplate, {font_cache.value(), test_fonts.value()}, nullptr); + +- std::unique_ptr<Environment> env(Environment::Create()); +- CHECK(env->SetVar("FONTCONFIG_SYSROOT", dir_module.value().c_str())); ++ // Write the data to a different file and then atomically rename it to ++ // fonts.conf. This avoids the file being in a bad state when different ++ // parallel tests call this function at the same time. ++ FilePath fonts_conf_file_temp; ++ if(!CreateTemporaryFileInDir(dir_module, &fonts_conf_file_temp)) ++ CHECK(CreateTemporaryFile(&fonts_conf_file_temp)); ++ CHECK( ++ WriteFile(fonts_conf_file_temp, fonts_conf.c_str(), fonts_conf.size())); ++ FilePath fonts_conf_file = dir_module.Append("fonts.conf"); ++ if (ReplaceFile(fonts_conf_file_temp, fonts_conf_file, nullptr)) ++ env->SetVar("FONTCONFIG_FILE", fonts_conf_file.value()); ++ else ++ env->SetVar("FONTCONFIG_FILE", fonts_conf_file_temp.value()); ++ } + } + + } // namespace base |