12211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner/* 22211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner * Copyright 2009-2015 Google Inc. 32211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner * 42211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner * Use of this source code is governed by a BSD-style license that can be 52211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner * found in the LICENSE file. 62211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner */ 72211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner 82211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner/* migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp */ 92211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner 102211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "google_font_file_buffering.h" 112211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner 122211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "SkFontConfigInterface_direct_google3.h" 132211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "SkStream.h" 142211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "SkString.h" 152211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner#include "SkTypes.h" 162211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner 172211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagnerbool SkFontConfigInterfaceDirectGoogle3::isAccessible(const char* filename) { 182211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner // Check if this font has been pre-loaded into memory. 192211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner const char* unused; 202211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner if (GoogleFreeType::GoogleFt2ReadFontFromMemory(filename, &unused) >= 0) { 212211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner return true; 222211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner } 232211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner return this->INHERITED::isAccessible(filename); 242211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner} 252211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner 262211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagnerSkStreamAsset* SkFontConfigInterfaceDirectGoogle3::openStream(const FontIdentity& identity) { 272211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner const char* c_filename = identity.fString.c_str(); 282211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner // Read the system fonts from the fonts we've pre-loaded into memory. 292211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner const char* buffer; 302211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner int length = GoogleFreeType::GoogleFt2ReadFontFromMemory( 312211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner c_filename, &buffer); 322211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner if (length >= 0) return new SkMemoryStream(buffer, length); 332211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner return this->INHERITED::openStream(identity); 342211a7bdd1680003a4decbebef76f153cd0a28fabenjaminwagner} 35