summaryrefslogtreecommitdiffstats
path: root/external/skia/fontconfig-get-typeface.patch.0
blob: 20c3f5b9cbe09ef0c1d966054d49f39720b83211 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
diff --git a/include/ports/SkFontMgr_fontconfig.h b/include/ports/SkFontMgr_fontconfig.h
index 4b2bb2d297..2b82cbfedd 100644
--- include/ports/SkFontMgr_fontconfig.h
+++ include/ports/SkFontMgr_fontconfig.h
@@ -19,4 +19,9 @@ class SkFontMgr;
  */
 SK_API sk_sp<SkFontMgr> SkFontMgr_New_FontConfig(FcConfig* fc);
 
+struct _FcPattern;
+typedef struct _FcPattern FcPattern;
+class SkTypeface;
+SK_API sk_sp<SkTypeface> SkFontMgr_createTypefaceFromFcPattern(const sk_sp<SkFontMgr>& mgr, FcPattern* pattern);
+
 #endif // #ifndef SkFontMgr_fontconfig_DEFINED
diff --git a/src/ports/SkFontMgr_fontconfig.cpp b/src/ports/SkFontMgr_fontconfig.cpp
index c2da39b28f..28483faf02 100644
--- src/ports/SkFontMgr_fontconfig.cpp
+++ src/ports/SkFontMgr_fontconfig.cpp
@@ -690,6 +690,7 @@ class SkFontMgr_fontconfig : public SkFontMgr {
     /** Creates a typeface using a typeface cache.
      *  @param pattern a complete pattern from FcFontRenderPrepare.
      */
+public:
     sk_sp<SkTypeface> createTypefaceFromFcPattern(SkAutoFcPattern pattern) const {
         if (!pattern) {
             return nullptr;
@@ -1043,3 +1044,13 @@ protected:
 SK_API sk_sp<SkFontMgr> SkFontMgr_New_FontConfig(FcConfig* fc) {
     return sk_make_sp<SkFontMgr_fontconfig>(fc);
 }
+
+SK_API sk_sp<SkTypeface> SkFontMgr_createTypefaceFromFcPattern(const sk_sp<SkFontMgr>& mgr, FcPattern* pattern)
+{
+    SkAutoFcPattern p([pattern]() {
+        FCLocker lock;
+        FcPatternReference(pattern);
+        return pattern;
+    }());
+    return static_cast<SkFontMgr_fontconfig*>(mgr.get())->createTypefaceFromFcPattern(std::move(p));
+}