blob: d159c51005b59f3bf1e0c7c26f165636f78863c6 [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 Kleinea3f0142019-03-20 11:12:10 -05008#include "ToolUtils.h"
Hal Canaryea60b952018-08-21 11:45:46 -04009
Mike Klein88544fb2019-03-20 10:50:33 -050010#include "CommonFlags.h"
Ben Wagner483c7722018-02-20 17:06:07 -050011#include "Resources.h"
Ben Wagner483c7722018-02-20 17:06:07 -050012#include "SkFontMgr.h"
13#include "SkFontStyle.h"
14#include "SkMutex.h"
15#include "SkOSFile.h"
Hal Canaryea60b952018-08-21 11:45:46 -040016#include "SkTypeface.h"
17#include "SkUTF.h"
Mike Klein0cffcbf92019-03-20 11:08:46 -050018#include "TestFontMgr.h"
Ben Wagner483c7722018-02-20 17:06:07 -050019
Mike Kleinea3f0142019-03-20 11:12:10 -050020namespace ToolUtils {
Ben Wagner483c7722018-02-20 17:06:07 -050021
Ben Wagner8dce0542019-03-08 18:05:47 -050022sk_sp<SkTypeface> planet_typeface() {
Mike Kleinea3f0142019-03-20 11:12:10 -050023 static const sk_sp<SkTypeface> planetTypeface = []() {
Ben Wagner8dce0542019-03-08 18:05:47 -050024 const char* filename;
Ben Wagner483c7722018-02-20 17:06:07 -050025#if defined(SK_BUILD_FOR_WIN)
Ben Wagner8dce0542019-03-08 18:05:47 -050026 filename = "fonts/planetcolr.ttf";
Ben Wagner97182cc2018-02-15 10:20:04 -050027#elif defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
Ben Wagner8dce0542019-03-08 18:05:47 -050028 filename = "fonts/planetsbix.ttf";
Ben Wagner97182cc2018-02-15 10:20:04 -050029#else
Ben Wagner8dce0542019-03-08 18:05:47 -050030 filename = "fonts/planetcbdt.ttf";
Ben Wagner97182cc2018-02-15 10:20:04 -050031#endif
Ben Wagner8dce0542019-03-08 18:05:47 -050032 sk_sp<SkTypeface> typeface = MakeResourceAsTypeface(filename);
33 if (typeface) {
34 return typeface;
35 }
36 return SkTypeface::MakeFromName("Planet", SkFontStyle());
37 }();
38 return planetTypeface;
39}
40
41sk_sp<SkTypeface> emoji_typeface() {
Mike Kleinea3f0142019-03-20 11:12:10 -050042 static const sk_sp<SkTypeface> emojiTypeface = []() {
Ben Wagner8dce0542019-03-08 18:05:47 -050043 const char* filename;
44#if defined(SK_BUILD_FOR_WIN)
45 filename = "fonts/colr.ttf";
46#elif defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
47 filename = "fonts/sbix.ttf";
48#else
49 filename = "fonts/cbdt.ttf";
50#endif
51 sk_sp<SkTypeface> typeface = MakeResourceAsTypeface(filename);
52 if (typeface) {
53 return typeface;
54 }
55 return SkTypeface::MakeFromName("Emoji", SkFontStyle());
56 }();
57 return emojiTypeface;
Ben Wagner483c7722018-02-20 17:06:07 -050058}
59
60const char* emoji_sample_text() {
Mike Kleinea3f0142019-03-20 11:12:10 -050061 return "\xF0\x9F\x98\x80"
62 " "
63 "\xE2\x99\xA2"; // 😀 ♢
Ben Wagner483c7722018-02-20 17:06:07 -050064}
Ben Wagner83c6b962018-07-10 19:40:15 -040065static sk_sp<SkTypeface> create_font(const char* name, SkFontStyle style) {
66 static sk_sp<SkFontMgr> portableFontMgr = MakePortableFontMgr();
67 return portableFontMgr->legacyMakeTypeface(name, style);
68}
69
Ben Wagner483c7722018-02-20 17:06:07 -050070sk_sp<SkTypeface> create_portable_typeface(const char* name, SkFontStyle style) {
71 return create_font(name, style);
72}
Mike Kleinea3f0142019-03-20 11:12:10 -050073} // namespace ToolUtils