Make SkFontConfigInterface_direct and sysroot-aware

CL [1] adds support for setting the fontconfig sysroot with an environment
variable.  Chromium plans on using this in tests.

The string returned when getting the FC_FILE property is relative to the
sysroot, so to get the full path, the sysroot must be prepended.

[1] https://cgit.freedesktop.org/fontconfig/commit/?id=730deada8cf609157d07b7c2bf2985672614c4c0

Bug: chromium:822737,chromium:908463
R=bungeman
Change-Id: I6d9dfbb3bdc6bdcd2aab73e757dcef46ae9229e4
Reviewed-on: https://skia-review.googlesource.com/c/127108
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
diff --git a/src/ports/SkFontConfigInterface_direct.cpp b/src/ports/SkFontConfigInterface_direct.cpp
index 56c8466..bbfcfdf 100644
--- a/src/ports/SkFontConfigInterface_direct.cpp
+++ b/src/ports/SkFontConfigInterface_direct.cpp
@@ -539,6 +539,13 @@
     if (!c_filename) {
         return false;
     }
+    const char* sysroot = (const char*)FcConfigGetSysRoot(nullptr);
+    SkString resolvedFilename;
+    if (sysroot) {
+        resolvedFilename = sysroot;
+        resolvedFilename += c_filename;
+        c_filename = resolvedFilename.c_str();
+    }
     return this->isAccessible(c_filename);
 }
 
@@ -670,6 +677,13 @@
         FcFontSetDestroy(font_set);
         return false;
     }
+    const char* sysroot = (const char*)FcConfigGetSysRoot(nullptr);
+    SkString resolvedFilename;
+    if (sysroot) {
+        resolvedFilename = sysroot;
+        resolvedFilename += c_filename;
+        c_filename = resolvedFilename.c_str();
+    }
 
     int face_index = get_int(match, FC_INDEX, 0);