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