mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-27 02:20:17 +00:00
This allows us to get identical metrics on macOS and Linux. Without this, Skia will use CoreText on macOS and give us slightly different text metrics. That causes layout tests to be slightly different on different platforms, which is a huge headache. So let's not do that. You can now launch Ladybird and headless-browser with --force-fontconfig to load fonts through fontconfig. Tests run in this mode by default.
42 lines
1,018 B
C++
42 lines
1,018 B
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/ByteString.h>
|
|
#include <AK/FlyString.h>
|
|
#include <AK/Function.h>
|
|
#include <AK/HashMap.h>
|
|
#include <AK/OwnPtr.h>
|
|
#include <LibGfx/Font/FontWeight.h>
|
|
#include <LibGfx/Font/Typeface.h>
|
|
#include <LibGfx/Forward.h>
|
|
|
|
namespace Gfx {
|
|
|
|
class FontDatabase {
|
|
public:
|
|
static FontDatabase& the();
|
|
|
|
RefPtr<Gfx::Font> get(FlyString const& family, float point_size, unsigned weight, unsigned width, unsigned slope);
|
|
RefPtr<Gfx::Font> get(FlyString const& family, FlyString const& variant, float point_size);
|
|
|
|
void for_each_typeface_with_family_name(FlyString const& family_name, Function<void(Typeface const&)>);
|
|
|
|
void load_all_fonts_from_uri(StringView);
|
|
|
|
void set_force_fontconfig(bool);
|
|
[[nodiscard]] bool should_force_fontconfig() const;
|
|
|
|
private:
|
|
FontDatabase();
|
|
~FontDatabase() = default;
|
|
|
|
struct Private;
|
|
OwnPtr<Private> m_private;
|
|
};
|
|
|
|
}
|