35#include "include/core/SkFontMgr.h"
36#include "include/core/SkFontStyle.h"
37#include "include/core/SkRefCnt.h"
38#include "include/core/SkTypeface.h"
40namespace skia {
namespace textlayout {
42class TypefaceFontProvider;
47class TextFontContext {
52 TextFontContext(
const TextFontContext&) =
delete;
53 TextFontContext& operator=(
const TextFontContext&) =
delete;
58 static std::shared_ptr<TextFontContext>
shared();
62 sk_sp<SkFontMgr> font_manager()
const {
return font_mgr_; }
66 sk_sp<skia::textlayout::FontCollection> font_collection()
const;
71 std::unique_lock<std::mutex> lock_font_collection_use()
const {
72 return std::unique_lock<std::mutex>(font_collection_use_mutex_);
79 std::string emoji_family_name()
const;
83 void set_emoji_typeface(sk_sp<SkTypeface> face);
86 sk_sp<SkTypeface> emoji_typeface()
const;
90 bool has_emoji_typeface()
const;
97 sk_sp<SkTypeface> typeface_for_run(FontRunRole role,
98 const sk_sp<SkTypeface>& primary)
const;
101 sk_sp<SkFontMgr> font_mgr_;
102 sk_sp<SkTypeface> emoji_typeface_;
103 std::string emoji_family_name_;
105 mutable std::mutex mutex_;
106 mutable std::mutex font_collection_use_mutex_;
107 mutable sk_sp<skia::textlayout::FontCollection> font_collection_;
108 mutable sk_sp<skia::textlayout::TypefaceFontProvider> typeface_provider_;
109 mutable std::uint64_t collection_generation_ = 0;
@ shared
Definition device.hpp:32
Definition affine_transform.hpp:24
bool register_bundled_noto_color_emoji()
Definition text_font_context.hpp:153
bool register_emoji_fallback(...)
Definition text_font_context.hpp:151
bool register_best_available_emoji_fallback()
Definition text_font_context.hpp:154
bool register_platform_emoji_fallback()
Definition text_font_context.hpp:152
@ skia
CPU Skia raster (SkSurfaces::Raster).
Definition screenshot.hpp:15