static void apply_paint_typeface(const SkPaint& paint, Json::Value* target, bool sendBinaries) { SkTypeface* typeface = paint.getTypeface(); if (typeface != nullptr) { if (sendBinaries) { Json::Value jsonTypeface; SkDynamicMemoryWStream buffer; typeface->serialize(&buffer); void* data = sk_malloc_throw(buffer.bytesWritten()); buffer.copyTo(data); Json::Value bytes; encode_data(data, buffer.bytesWritten(), &bytes); jsonTypeface[SKJSONCANVAS_ATTRIBUTE_BYTES] = bytes; free(data); (*target)[SKJSONCANVAS_ATTRIBUTE_TYPEFACE] = jsonTypeface; } } }