1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef UI_GFX_TEST_FONTCONFIG_UTIL_LINUX_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define UI_GFX_TEST_FONTCONFIG_UTIL_LINUX_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <string> 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/files/file_path.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace gfx { 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Array of paths to font files that are expected to exist on machines where 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// tests are run. 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochextern const char* const kSystemFontsForFontconfig[]; 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochextern const size_t kNumSystemFontsForFontconfig; 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Strings appearing at the beginning and end of Fontconfig XML files. 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochextern const char kFontconfigFileHeader[]; 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochextern const char kFontconfigFileFooter[]; 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Strings appearing at the beginning and end of Fontconfig <match> stanzas. 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdochextern const char kFontconfigMatchHeader[]; 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdochextern const char kFontconfigMatchFooter[]; 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Initializes Fontconfig and creates and swaps in a new, empty config. 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid SetUpFontconfig(); 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Deinitializes Fontconfig. 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TearDownFontconfig(); 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Loads the font file at |path| into the current config, returning true on 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// success. 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool LoadFontIntoFontconfig(const base::FilePath& path); 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Instructs Fontconfig to load |path|, an XML configuration file, into the 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// current config, returning true on success. 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool LoadConfigFileIntoFontconfig(const base::FilePath& path); 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Writes |data| to a file in |temp_dir| and passes it to 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// LoadConfigFileIntoFontconfig(). 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool LoadConfigDataIntoFontconfig(const base::FilePath& temp_dir, 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& data); 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Returns a Fontconfig <edit> stanza. 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstd::string CreateFontconfigEditStanza(const std::string& name, 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& type, 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& value); 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Returns a Fontconfig <test> stanza. 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstd::string CreateFontconfigTestStanza(const std::string& name, 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& op, 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& type, 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& value); 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Returns a Fontconfig <alias> stanza. 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)std::string CreateFontconfigAliasStanza(const std::string& original_family, 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& preferred_family); 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace gfx 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // UI_GFX_TEST_FONTCONFIG_UTIL_LINUX_H_ 64