Added more default fonts, and fixed issue with font selector at different GUI scales
This commit is contained in:
parent
e451e8b181
commit
5e8016b504
19 changed files with 438 additions and 21 deletions
|
|
@ -15,6 +15,10 @@
|
|||
#include <include/ports/SkFontScanner_FreeType.h>
|
||||
#endif
|
||||
|
||||
#include <src/base/SkUTF.h>
|
||||
|
||||
bool fallbackOnEmoji = false;
|
||||
|
||||
FontData::FontData()
|
||||
{
|
||||
#ifdef __EMSCRIPTEN__
|
||||
|
|
@ -34,8 +38,14 @@ FontData::FontData()
|
|||
map["Roboto"] = defaultFontMgr->makeFromFile("data/fonts/Roboto-variable.ttf");
|
||||
|
||||
collection = sk_make_sp<skia::textlayout::FontCollection>();
|
||||
collection->setDefaultFontManager(defaultFontMgr, {SkString{"Roboto"}});
|
||||
collection->setDefaultFontManager(defaultFontMgr, std::vector<SkString>{SkString{"Roboto"}, SkString{"Noto Emoji"}, SkString{"Noto Kufi Arabic"}});
|
||||
collection->setDynamicFontManager(localFontMgr);
|
||||
std::string s = "🙂";
|
||||
const char* sPtr = s.data();
|
||||
SkFontStyle defaultStyle;
|
||||
SkString defaultLocale("en");
|
||||
auto defaultEmojiFallback = collection->defaultEmojiFallback(SkUTF::NextUTF8(&sPtr, s.c_str() + s.length()), defaultStyle, defaultLocale);
|
||||
fallbackOnEmoji = !defaultEmojiFallback;
|
||||
}
|
||||
|
||||
FontData::~FontData() {
|
||||
|
|
@ -47,3 +57,21 @@ Vector2f get_str_font_bounds(const SkFont& font, const std::string& str) {
|
|||
float nextText = font.measureText(str.data(), str.length(), SkTextEncoding::kUTF8, nullptr);
|
||||
return Vector2f{nextText, - metrics.fAscent + metrics.fDescent};
|
||||
}
|
||||
|
||||
const std::vector<SkString>& get_default_font_families() {
|
||||
static std::vector<SkString> defaultFontFamilies;
|
||||
if(defaultFontFamilies.empty()) {
|
||||
defaultFontFamilies.emplace_back("Roboto");
|
||||
if(fallbackOnEmoji)
|
||||
defaultFontFamilies.emplace_back("Noto Emoji");
|
||||
defaultFontFamilies.emplace_back("Noto Kufi Arabic");
|
||||
}
|
||||
return defaultFontFamilies;
|
||||
}
|
||||
|
||||
void push_default_font_families(std::vector<SkString>& fontFamilies) {
|
||||
fontFamilies.emplace_back("Roboto");
|
||||
if(fallbackOnEmoji)
|
||||
fontFamilies.emplace_back("Noto Emoji");
|
||||
fontFamilies.emplace_back("Noto Kufi Arabic");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue