372 {
374
376 if (
nullptr == data || !
data->hasStream()) {
377 return nullptr;
378 }
379
380 std::unique_ptr<FaceRec> rec(
new FaceRec(
data->detachStream()));
381
384 const void* memoryBase = rec->fSkStream->getMemoryBase();
385 if (memoryBase) {
386 args.flags = FT_OPEN_MEMORY;
387 args.memory_base = (
const FT_Byte*)memoryBase;
388 args.memory_size = rec->fSkStream->getLength();
389 } else {
390 args.flags = FT_OPEN_STREAM;
391 args.stream = &rec->fFTStream;
392 }
393
394 {
397 if (err) {
399 return nullptr;
400 }
401 rec->fFace.reset(rawFace);
402 }
404
405 rec->setupAxes(*data);
406 rec->setupPalette(*data);
407
408
409
410
411
412
413
414 if (!rec->fFace->charmap) {
415 FT_Select_Charmap(rec->fFace.get(), FT_ENCODING_MS_SYMBOL);
416 }
417
418 return rec;
419}
static FreeTypeLibrary * gFTLibrary
#define SK_TRACEFTR(ERR,...)
struct FT_FaceRec_ * FT_Face
std::unique_ptr< SkFontData > makeFontData() const
SkTypefaceID uniqueID() const
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data