blob: f30e584c9b20bc3950796d0135e98e45203e45e4 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/gfx/platform_font_pango.h"
#include <cairo/cairo.h>
#include <fontconfig/fontconfig.h>
#include <glib-object.h>
#include <pango/pangocairo.h>
#include <pango/pangofc-fontmap.h>
#include <string>
#include "base/memory/ref_counted.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/pango_util.h"
namespace gfx {
// Test that PlatformFontPango is able to cope with PangoFontDescriptions
// containing multiple font families. The first family should be preferred.
TEST(PlatformFontPangoTest, FamilyList) {
// Needed for GLib versions prior to 2.36, but deprecated starting 2.35.
#if !GLIB_CHECK_VERSION(2, 35, 0)
g_type_init();
#endif
ScopedPangoFontDescription desc(
pango_font_description_from_string("Arial,Times New Roman, 13px"));
scoped_refptr<gfx::PlatformFontPango> font(
new gfx::PlatformFontPango(desc.get()));
EXPECT_EQ("Arial", font->GetFontName());
EXPECT_EQ(13, font->GetFontSize());
ScopedPangoFontDescription desc2(
pango_font_description_from_string("Times New Roman,Arial, 15px"));
scoped_refptr<gfx::PlatformFontPango> font2(
new gfx::PlatformFontPango(desc2.get()));
EXPECT_EQ("Times New Roman", font2->GetFontName());
EXPECT_EQ(15, font2->GetFontSize());
// Free memory allocated by FontConfig (http://crbug.com/114750).
pango_fc_font_map_cache_clear(
PANGO_FC_FONT_MAP(pango_cairo_font_map_get_default()));
cairo_debug_reset_static_data();
FcFini();
}
} // namespace gfx