diff options
-rw-r--r-- | skia/ext/SkFontHost_fontconfig_direct.cpp | 8 | ||||
-rw-r--r-- | webkit/api/public/gtk/WebFontInfo.h | 3 | ||||
-rw-r--r-- | webkit/api/src/gtk/WebFontInfo.cpp | 8 |
3 files changed, 19 insertions, 0 deletions
diff --git a/skia/ext/SkFontHost_fontconfig_direct.cpp b/skia/ext/SkFontHost_fontconfig_direct.cpp index 7f7be08..fe4dc36 100644 --- a/skia/ext/SkFontHost_fontconfig_direct.cpp +++ b/skia/ext/SkFontHost_fontconfig_direct.cpp @@ -134,6 +134,14 @@ bool FontConfigDirect::Match(std::string* result_family, continue; } + // fontconfig can also return fonts which are unreadable + FcChar8* c_filename; + if (FcPatternGetString(current, FC_FILE, 0, &c_filename) != FcResultMatch) + continue; + + if (access(reinterpret_cast<char*>(c_filename), R_OK) != 0) + continue; + match = current; break; } diff --git a/webkit/api/public/gtk/WebFontInfo.h b/webkit/api/public/gtk/WebFontInfo.h index d77ce68..b5543c2 100644 --- a/webkit/api/public/gtk/WebFontInfo.h +++ b/webkit/api/public/gtk/WebFontInfo.h @@ -33,6 +33,9 @@ #include "../WebString.h" +#include <string.h> +#include <unistd.h> + namespace WebKit { class WebFontInfo { diff --git a/webkit/api/src/gtk/WebFontInfo.cpp b/webkit/api/src/gtk/WebFontInfo.cpp index 60fdde4..059ad4b 100644 --- a/webkit/api/src/gtk/WebFontInfo.cpp +++ b/webkit/api/src/gtk/WebFontInfo.cpp @@ -83,6 +83,14 @@ WebString WebFontInfo::familyForChars(const WebUChar* characters, size_t numChar || !isScalable) continue; + // fontconfig can also return fonts which are unreadable + FcChar8* cFilename; + if (FcPatternGetString(current, FC_FILE, 0, &cFilename) != FcResultMatch) + continue; + + if (access(reinterpret_cast<char*>(cFilename), R_OK) != 0) + continue; + FcChar8* family; WebString result; if (FcPatternGetString(current, FC_FAMILY, 0, &family) == FcResultMatch) { |