blob: ad68785f530272e58a082e983b89c1fa7d92db62 [file] [log] [blame]
Ben Wagner483c7722018-02-20 17:06:07 -05001/*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
Mike Kleinc0bd9f92019-04-23 12:05:21 -05008#include "tools/ToolUtils.h"
Hal Canaryea60b952018-08-21 11:45:46 -04009
Mike Kleinc0bd9f92019-04-23 12:05:21 -050010#include "include/core/SkFontMgr.h"
11#include "include/core/SkFontStyle.h"
12#include "include/core/SkTypeface.h"
13#include "include/private/SkMutex.h"
14#include "src/core/SkOSFile.h"
15#include "src/utils/SkUTF.h"
16#include "tools/Resources.h"
17#include "tools/fonts/TestFontMgr.h"
Ben Wagner483c7722018-02-20 17:06:07 -050018
Mike Kleinea3f0142019-03-20 11:12:10 -050019namespace ToolUtils {
Ben Wagner483c7722018-02-20 17:06:07 -050020
Ben Wagner8dce0542019-03-08 18:05:47 -050021sk_sp<SkTypeface> planet_typeface() {
Mike Kleinea3f0142019-03-20 11:12:10 -050022 static const sk_sp<SkTypeface> planetTypeface = []() {
Ben Wagner8dce0542019-03-08 18:05:47 -050023 const char* filename;
Ben Wagner483c7722018-02-20 17:06:07 -050024#if defined(SK_BUILD_FOR_WIN)
Ben Wagner8dce0542019-03-08 18:05:47 -050025 filename = "fonts/planetcolr.ttf";
Ben Wagner97182cc2018-02-15 10:20:04 -050026#elif defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
Ben Wagner8dce0542019-03-08 18:05:47 -050027 filename = "fonts/planetsbix.ttf";
Ben Wagner97182cc2018-02-15 10:20:04 -050028#else
Ben Wagner8dce0542019-03-08 18:05:47 -050029 filename = "fonts/planetcbdt.ttf";
Ben Wagner97182cc2018-02-15 10:20:04 -050030#endif
Ben Wagner8dce0542019-03-08 18:05:47 -050031 sk_sp<SkTypeface> typeface = MakeResourceAsTypeface(filename);
32 if (typeface) {
33 return typeface;
34 }
35 return SkTypeface::MakeFromName("Planet", SkFontStyle());
36 }();
37 return planetTypeface;
38}
39
40sk_sp<SkTypeface> emoji_typeface() {
Mike Kleinea3f0142019-03-20 11:12:10 -050041 static const sk_sp<SkTypeface> emojiTypeface = []() {
Ben Wagner8dce0542019-03-08 18:05:47 -050042 const char* filename;
43#if defined(SK_BUILD_FOR_WIN)
44 filename = "fonts/colr.ttf";
45#elif defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
46 filename = "fonts/sbix.ttf";
47#else
48 filename = "fonts/cbdt.ttf";
49#endif
50 sk_sp<SkTypeface> typeface = MakeResourceAsTypeface(filename);
51 if (typeface) {
52 return typeface;
53 }
54 return SkTypeface::MakeFromName("Emoji", SkFontStyle());
55 }();
56 return emojiTypeface;
Ben Wagner483c7722018-02-20 17:06:07 -050057}
58
59const char* emoji_sample_text() {
Mike Kleinea3f0142019-03-20 11:12:10 -050060 return "\xF0\x9F\x98\x80"
61 " "
62 "\xE2\x99\xA2"; // 😀 ♢
Ben Wagner483c7722018-02-20 17:06:07 -050063}
Ben Wagner83c6b962018-07-10 19:40:15 -040064static sk_sp<SkTypeface> create_font(const char* name, SkFontStyle style) {
65 static sk_sp<SkFontMgr> portableFontMgr = MakePortableFontMgr();
66 return portableFontMgr->legacyMakeTypeface(name, style);
67}
68
Ben Wagner483c7722018-02-20 17:06:07 -050069sk_sp<SkTypeface> create_portable_typeface(const char* name, SkFontStyle style) {
70 return create_font(name, style);
71}
Mike Kleinea3f0142019-03-20 11:12:10 -050072} // namespace ToolUtils