<ahref='#Text_Blob'>Text Blob</a> holds one or more runs of text. Each run associates a string of <ahref='undocumented#Glyph'>Glyphs</a>
with a position and <ahref='SkPaint_Reference#Paint'>Paint</a>. Each <ahref='SkPaint_Reference#Paint'>Paint</a> contains attributes used
to define the run text: <ahref='undocumented#Typeface'>Typeface</a>, <ahref='SkPaint_Reference#Text_Size'>Paint Text Size</a>, <ahref='SkPaint_Reference#Text_Scale_X'>Paint Text Scale X</a>,
<ahref='SkPaint_Reference#Text_Skew_X'>Paint Text Skew X</a>, <ahref='SkPaint_Reference#Text_Align'>Paint Text Align</a>, <ahref='SkPaint_Reference#Hinting'>Paint Hinting</a>, <ahref='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <ahref='SkPaint_Reference#Fake_Bold'>Paint Fake Bold</a>,
and <ahref='SkPaint_Reference#Subpixel_Text'>Subpixel Text</a>.
<ahref='#Text_Blob'>Text Blob</a> runs of text use <ahref='undocumented#ID'>Glyph ID</a> encoding; each run <ahref='SkPaint_Reference#Paint'>Paint</a> must set
<ahref='SkPaint_Reference#Text_Encoding'>Paint Text Encoding</a> to <ahref='SkPaint_Reference#SkPaint_kGlyphID_TextEncoding'>SkPaint::kGlyphID TextEncoding</a>.
<ahref='#Text_Blob'>Text Blob</a> is constructed with <ahref='#SkTextBlob_MakeFromText'>SkTextBlob::MakeFromText</a> or <ahref='SkTextBlobBuilder_Reference#Text_Blob_Builder'>Text Blob Builder</a>.
Once created, <ahref='#Text_Blob'>Text Blob</a> can not be modified.
<ahref='#SkTextBlob'>SkTextBlob</a> combines multiple text runs into an immutable container. Each text
run consists of <ahref='undocumented#Glyph'>Glyphs</a>, <ahref='SkPaint_Reference#Paint'>Paint</a>, and position. Only parts of <ahref='SkPaint_Reference#Paint'>Paint</a> related to
Creates <ahref='#Text_Blob'>Text Blob</a> with a single run. <ahref='#SkTextBlob_MakeFromText_text'>text</a> meaning depends on <ahref='SkPaint_Reference#Text_Encoding'>Paint Text Encoding</a>;
by default, <ahref='#SkTextBlob_MakeFromText_text'>text</a> is encoded as UTF-8.
<ahref='#SkTextBlob_MakeFromText_paint'>paint</a> contains attributes used to define the run <ahref='#SkTextBlob_MakeFromText_text'>text</a>: <ahref='undocumented#Typeface'>Typeface</a>, <ahref='SkPaint_Reference#Text_Size'>Paint Text Size</a>, <ahref='SkPaint_Reference#Text_Scale_X'>Paint Text Scale X</a>,
<ahref='SkPaint_Reference#Text_Skew_X'>Paint Text Skew X</a>, <ahref='SkPaint_Reference#Text_Align'>Paint Text Align</a>, <ahref='SkPaint_Reference#Hinting'>Paint Hinting</a>, <ahref='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <ahref='SkPaint_Reference#Fake_Bold'>Paint Fake Bold</a>,
<td><ahref='#SkTextBlob_MakeFromText_text'>text</a> size, typeface, <ahref='#SkTextBlob_MakeFromText_text'>text</a> scale, and so on, used to draw</td>
</tr>
</table>
### Return Value
<ahref='#Text_Blob'>Text Blob</a> constructed from one run
Creates <ahref='#Text_Blob'>Text Blob</a> with a single run. <ahref='#SkTextBlob_MakeFromString_string'>string</a> meaning depends on <ahref='SkPaint_Reference#Text_Encoding'>Paint Text Encoding</a>;
by default, <ahref='#SkTextBlob_MakeFromString_string'>string</a> is encoded as UTF-8.
<ahref='#SkTextBlob_MakeFromString_paint'>paint</a> contains <ahref='SkPaint_Reference#Font_Metrics'>Paint Font Metrics</a> used to define the run text: <ahref='undocumented#Typeface'>Typeface</a>, <ahref='SkPaint_Reference#Text_Size'>Paint Text Size</a>, <ahref='SkPaint_Reference#Text_Scale_X'>Paint Text Scale X</a>,
<ahref='SkPaint_Reference#Text_Skew_X'>Paint Text Skew X</a>, <ahref='SkPaint_Reference#Text_Align'>Paint Text Align</a>, <ahref='SkPaint_Reference#Hinting'>Paint Hinting</a>, <ahref='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <ahref='SkPaint_Reference#Fake_Bold'>Paint Fake Bold</a>,
Writes data to allow later reconstruction of <ahref='#Text_Blob'>Text Blob</a>. <ahref='#SkTextBlob_serialize_memory'>memory</a> points to storage
to receive the encoded data, and memory_size describes the <ahref='#SkTextBlob_serialize_size'>size</a> of storage.
Returns bytes used if provided storage is large enough to hold all data;
otherwise, returns zero.
<ahref='#SkTextBlob_serialize_procs'>procs</a>.fTypefaceProc permits supplying a custom function to encode <ahref='undocumented#Typeface'>Typeface</a>.
If <ahref='#SkTextBlob_serialize_procs'>procs</a>.fTypefaceProc is nullptr, default encoding is used. <ahref='#SkTextBlob_serialize_procs'>procs</a>.fTypefaceCtx
may be used to provide user context to <ahref='#SkTextBlob_serialize_procs'>procs</a>.fTypefaceProc; <ahref='#SkTextBlob_serialize_procs'>procs</a>.fTypefaceProc
is called with a pointer to <ahref='undocumented#Typeface'>Typeface</a> and user context.
Returns storage containing <ahref='undocumented#Data'>Data</a> describing <ahref='#Text_Blob'>Text Blob</a>, using optional custom
encoders.
<ahref='#SkTextBlob_serialize_2_procs'>procs</a>.fTypefaceProc permits supplying a custom function to encode <ahref='undocumented#Typeface'>Typeface</a>.
If <ahref='#SkTextBlob_serialize_2_procs'>procs</a>.fTypefaceProc is nullptr, default encoding is used. <ahref='#SkTextBlob_serialize_2_procs'>procs</a>.fTypefaceCtx
may be used to provide user context to <ahref='#SkTextBlob_serialize_2_procs'>procs</a>.fTypefaceProc; <ahref='#SkTextBlob_serialize_2_procs'>procs</a>.fTypefaceProc
is called with a pointer to <ahref='undocumented#Typeface'>Typeface</a> and user context.
Recreates <ahref='#Text_Blob'>Text Blob</a> that was serialized into <ahref='#SkTextBlob_Deserialize_data'>data</a>. Returns constructed <ahref='#Text_Blob'>Text Blob</a>
if successful; otherwise, returns nullptr. Fails if <ahref='#SkTextBlob_Deserialize_size'>size</a> is smaller than
required <ahref='#SkTextBlob_Deserialize_data'>data</a> length, or if <ahref='#SkTextBlob_Deserialize_data'>data</a> does not permit constructing valid <ahref='#Text_Blob'>Text Blob</a>.
<ahref='#SkTextBlob_Deserialize_procs'>procs</a>.fTypefaceProc permits supplying a custom function to decode <ahref='undocumented#Typeface'>Typeface</a>.
If <ahref='#SkTextBlob_Deserialize_procs'>procs</a>.fTypefaceProc is nullptr, default decoding is used. <ahref='#SkTextBlob_Deserialize_procs'>procs</a>.fTypefaceCtx
may be used to provide user context to <ahref='#SkTextBlob_Deserialize_procs'>procs</a>.fTypefaceProc; <ahref='#SkTextBlob_Deserialize_procs'>procs</a>.fTypefaceProc
is called with a pointer to <ahref='undocumented#Typeface'>Typeface</a><ahref='#SkTextBlob_Deserialize_data'>data</a>, <ahref='#SkTextBlob_Deserialize_data'>data</a> byte length, and user context.
<div><fiddle-embedname="9feac5842eaac425a062754097eb7b7b"><div><ahref='undocumented#Text'>Text</a> "" replaces "World!", but does not update its metrics.