Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1197)

Unified Diff: chrome/browser/android/vr_shell/textures/ui_texture.cc

Issue 2863693002: Fallback Font Cache and Character Hinting for VRShell (Closed)
Patch Set: SkTypeface complete type Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/android/vr_shell/font_fallback.cc ('k') | ui/gfx/platform_font_linux.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/vr_shell/textures/ui_texture.cc
diff --git a/chrome/browser/android/vr_shell/textures/ui_texture.cc b/chrome/browser/android/vr_shell/textures/ui_texture.cc
index 4c68b42b6b057299a96ff3cf5d60b91d913f5536..6d14ae5cb676b73045bd062227a2fd91cf4c5bdd 100644
--- a/chrome/browser/android/vr_shell/textures/ui_texture.cc
+++ b/chrome/browser/android/vr_shell/textures/ui_texture.cc
@@ -12,9 +12,10 @@
#include "base/i18n/rtl.h"
#include "base/memory/ptr_util.h"
#include "base/strings/string_util.h"
+#include "chrome/browser/android/vr_shell/font_fallback.h"
#include "chrome/browser/browser_process.h"
+#include "third_party/icu/source/common/unicode/uscript.h"
#include "third_party/skia/include/core/SkCanvas.h"
-#include "third_party/skia/include/ports/SkFontMgr.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/font_list.h"
#include "ui/gl/gl_bindings.h"
@@ -25,6 +26,14 @@ namespace {
static constexpr char kDefaultFontFamily[] = "sans-serif";
+std::set<UChar32> CollectDifferentChars(base::string16 text) {
+ std::set<UChar32> characters;
+ for (base::i18n::UTF16CharIterator it(&text); !it.end(); it.Advance()) {
+ characters.insert(it.get());
+ }
+ return characters;
+}
+
} // namespace
UiTexture::UiTexture() = default;
@@ -48,28 +57,11 @@ gfx::FontList UiTexture::GetFontList(int size, base::string16 text) {
gfx::Font default_font(kDefaultFontFamily, size);
std::vector<gfx::Font> fonts{default_font};
- std::set<wchar_t> characters;
- for (base::i18n::UTF16CharIterator it(&text); !it.end(); it.Advance()) {
- characters.insert(it.get());
- }
- // TODO(acondor): Obtain fallback fonts with gfx::GetFallbackFonts
- // (which is not implemented for android yet) in order to avoid
- // querying per character.
-
- sk_sp<SkFontMgr> font_mgr(SkFontMgr::RefDefault());
std::set<std::string> names;
// TODO(acondor): Query BrowserProcess to obtain the application locale.
- for (wchar_t character : characters) {
- sk_sp<SkTypeface> tf(font_mgr->matchFamilyStyleCharacter(
- kDefaultFontFamily, SkFontStyle(), nullptr, 0, character));
-
- // TODO(acondor): How should we handle no matching font?
- if (!tf)
- continue;
- SkString sk_name;
- tf->getFamilyName(&sk_name);
- std::string name(sk_name.c_str());
- if (name != kDefaultFontFamily)
+ for (UChar32 c : CollectDifferentChars(text)) {
+ std::string name = GetFallbackFontNameForChar(default_font, c, "");
+ if (!name.empty())
names.insert(name);
}
for (const auto& name : names)
« no previous file with comments | « chrome/browser/android/vr_shell/font_fallback.cc ('k') | ui/gfx/platform_font_linux.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698