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

Unified Diff: src/ports/SkFontConfigInterface_direct.cpp

Issue 2280053002: Restrict supported font formats in Chrome context (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: Created 4 years, 4 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
« gyp/skia_for_chromium_defines.gypi ('K') | « gyp/skia_for_chromium_defines.gypi ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/ports/SkFontConfigInterface_direct.cpp
diff --git a/src/ports/SkFontConfigInterface_direct.cpp b/src/ports/SkFontConfigInterface_direct.cpp
index 345544724695a1729e1644693199f45f49913148..e4b7ede0faaaca573b892628cb182f2b0f08e5a1 100644
--- a/src/ports/SkFontConfigInterface_direct.cpp
+++ b/src/ports/SkFontConfigInterface_direct.cpp
@@ -496,6 +496,10 @@ static void fcpattern_from_skfontstyle(SkFontStyle style, FcPattern* pattern) {
///////////////////////////////////////////////////////////////////////////////
#define kMaxFontFamilyLength 2048
+#ifdef SK_RESTRICT_FONT_FORMATS_OPENTYPE
+const char* kFontFormatTrueType = "TrueType";
+const char* kFontFormatCFF = "CFF";
+#endif
SkFontConfigInterfaceDirect::SkFontConfigInterfaceDirect() {
FCLocker lock;
@@ -524,6 +528,16 @@ bool SkFontConfigInterfaceDirect::isValidPattern(FcPattern* pattern) {
}
#endif
+#ifdef SK_RESTRICT_FONT_FORMATS_OPENTYPE
+ char* font_format;
+ if (FcPatternGetString(pattern, FC_FONTFORMAT, 0, reinterpret_cast<FcChar8**>(&font_format)) ==
+ FcResultMatch
+ && strcmp(font_format, kFontFormatTrueType) != 0
+ && strcmp(font_format, kFontFormatCFF) != 0) {
+ return false;
bungeman-skia 2016/08/26 15:52:36 nit: Skia uses four space indents. I think I woul
drott 2016/08/26 16:19:04 Reformatted according to your suggestion.
+ }
+#endif
+
// fontconfig can also return fonts which are unreadable
const char* c_filename = get_name(pattern, FC_FILE);
if (!c_filename) {
@@ -593,6 +607,11 @@ bool SkFontConfigInterfaceDirect::matchFamilyName(const char familyName[],
FcPatternAddBool(pattern, FC_SCALABLE, FcTrue);
+#ifdef SK_RESTRICT_FONT_FORMATS_OPENTYPE
+ FcPatternAddString(pattern, FC_FONTFORMAT, reinterpret_cast<const FcChar8*>(kFontFormatTrueType));
+ FcPatternAddString(pattern, FC_FONTFORMAT, reinterpret_cast<const FcChar8*>(kFontFormatCFF));
+#endif
+
FcConfigSubstitute(nullptr, pattern, FcMatchPattern);
FcDefaultSubstitute(pattern);
« gyp/skia_for_chromium_defines.gypi ('K') | « gyp/skia_for_chromium_defines.gypi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698