15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/platform_font_pango.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <cairo/cairo.h> 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <fontconfig/fontconfig.h> 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <glib-object.h> 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <pango/pangocairo.h> 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <pango/pangofc-fontmap.h> 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/pango_util.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that PlatformFontPango is able to cope with PangoFontDescriptions 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// containing multiple font families. The first family should be preferred. 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST(PlatformFontPangoTest, FamilyList) { 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Needed for GLib versions prior to 2.36, but deprecated starting 2.35. 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if !GLIB_CHECK_VERSION(2, 35, 0) 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) g_type_init(); 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ScopedPangoFontDescription desc("Arial,Times New Roman, 13px"); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<gfx::PlatformFontPango> font( 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new gfx::PlatformFontPango(desc.get())); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("Arial", font->GetFontName()); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(13, font->GetFontSize()); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ScopedPangoFontDescription desc2("Times New Roman,Arial, 15px"); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<gfx::PlatformFontPango> font2( 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new gfx::PlatformFontPango(desc2.get())); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("Times New Roman", font2->GetFontName()); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(15, font2->GetFontSize()); 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Free memory allocated by FontConfig (http://crbug.com/114750). 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) pango_fc_font_map_cache_clear( 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) PANGO_FC_FONT_MAP(pango_cairo_font_map_get_default())); 44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) cairo_debug_reset_static_data(); 45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FcFini(); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gfx 49