mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-23 09:22:30 +00:00
the goal is to rely on fontconfig for font directory resolution. it doesn't seem like it would be appropritate to call to fontconfig funcs from within the LibCore. i'm not 100% confident that FontDatabase is the correct place.. seems okay?
44 lines
1.2 KiB
C++
44 lines
1.2 KiB
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <andreas@ladybird.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/FlyString.h>
|
|
#include <AK/Function.h>
|
|
#include <AK/OwnPtr.h>
|
|
#include <LibGfx/Font/Typeface.h>
|
|
#include <LibGfx/Forward.h>
|
|
|
|
namespace Gfx {
|
|
|
|
class SystemFontProvider {
|
|
public:
|
|
virtual ~SystemFontProvider();
|
|
|
|
virtual StringView name() const = 0;
|
|
virtual RefPtr<Gfx::Font> get_font(FlyString const& family, float point_size, unsigned weight, unsigned width, unsigned slope) = 0;
|
|
virtual void for_each_typeface_with_family_name(FlyString const& family_name, Function<void(Typeface const&)>) = 0;
|
|
};
|
|
|
|
class FontDatabase {
|
|
public:
|
|
static FontDatabase& the();
|
|
SystemFontProvider& install_system_font_provider(NonnullOwnPtr<SystemFontProvider>);
|
|
|
|
RefPtr<Gfx::Font> get(FlyString const& family, float point_size, unsigned weight, unsigned width, unsigned slope);
|
|
void for_each_typeface_with_family_name(FlyString const& family_name, Function<void(Typeface const&)>);
|
|
[[nodiscard]] StringView system_font_provider_name() const;
|
|
|
|
static ErrorOr<Vector<String>> font_directories();
|
|
|
|
private:
|
|
FontDatabase();
|
|
~FontDatabase() = default;
|
|
|
|
OwnPtr<SystemFontProvider> m_system_font_provider;
|
|
};
|
|
|
|
}
|