<ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> combines multiple <ahref='undocumented#Text'>text</a> runs into an immutable container. Each <ahref='undocumented#Text'>text</a>
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
fonts and <ahref='undocumented#Text'>text</a> rendering are used by run.
Creates <ahref='#Text_Blob'>Text_Blob</a> with a single run. <ahref='#SkTextBlob_MakeFromText_text'>text</a> meaning depends on <ahref='#Paint_Text_Encoding'>Paint_Text_Encoding</a>;
by default, <ahref='#SkTextBlob_MakeFromText_text'>text</a> is encoded as UTF-8.
<ahref='#SkTextBlob_MakeFromText_font'>font</a> contains attributes used to define the run <ahref='#SkTextBlob_MakeFromText_text'>text</a>: <ahref='undocumented#Typeface'>Typeface</a>, <ahref='#Paint_Text_Size'>Paint_Text_Size</a>, <ahref='#Paint_Text_Scale_X'>Paint_Text_Scale_X</a>,
<td><ahref='#SkTextBlob_MakeFromText_text'>text</a><ahref='undocumented#Size'>size</a>, <ahref='undocumented#Typeface'>typeface</a>, <ahref='#SkTextBlob_MakeFromText_text'>text scale</a>, and so on, used to draw</td>
Creates <ahref='#Text_Blob'>Text_Blob</a> with a single run. <ahref='#SkTextBlob_MakeFromString_string'>string</a> meaning depends on <ahref='#Paint_Text_Encoding'>Paint_Text_Encoding</a>;
by default, <ahref='#SkTextBlob_MakeFromString_string'>string</a> is encoded as UTF-8.
<ahref='#SkTextBlob_MakeFromString_font'>font</a> contains <ahref='#Paint_Font_Metrics'>Paint_Font_Metrics</a> used to define the run <ahref='undocumented#Text'>text</a>: <ahref='undocumented#Typeface'>Typeface</a>, <ahref='#Paint_Text_Size'>Paint_Text_Size</a>, <ahref='#Paint_Text_Scale_X'>Paint_Text_Scale_X</a>,
<td><ahref='undocumented#Text'>text</a><ahref='undocumented#Size'>size</a>, <ahref='undocumented#Typeface'>typeface</a>, <ahref='undocumented#Text'>text scale</a>, and so on, used to draw</td>
Writes <ahref='undocumented#Data'>data</a> to allow later reconstruction of <ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>. <ahref='#SkTextBlob_serialize_memory'>memory</a><ahref='SkPoint_Reference#Point'>points</a> to storage
to receive the encoded <ahref='undocumented#Data'>data</a>, and <ahref='#SkTextBlob_serialize_memory_size'>memory_size</a> describes the <ahref='undocumented#Size'>size</a> of storage.
<ahref='#SkTextBlob_serialize_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> permits supplying a custom function to encode <ahref='undocumented#SkTypeface'>SkTypeface</a>.
If <ahref='#SkTextBlob_serialize_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> is nullptr, default encoding is used. <ahref='#SkTextBlob_serialize_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceCtx'>fTypefaceCtx</a>
may be used to provide user context to <ahref='#SkTextBlob_serialize_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>; <ahref='#SkTextBlob_serialize_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>
<ahref='#SkTextBlob_serialize_2_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> permits supplying a custom function to encode <ahref='undocumented#SkTypeface'>SkTypeface</a>.
If <ahref='#SkTextBlob_serialize_2_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> is nullptr, default encoding is used. <ahref='#SkTextBlob_serialize_2_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceCtx'>fTypefaceCtx</a>
may be used to provide user context to <ahref='#SkTextBlob_serialize_2_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>; <ahref='#SkTextBlob_serialize_2_procs'>procs</a>.<ahref='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>
Recreates <ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> that was serialized into <ahref='#SkTextBlob_Deserialize_data'>data</a>. Returns constructed <ahref='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</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='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>.
<ahref='#SkTextBlob_Deserialize_procs'>procs</a>.<ahref='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a> permits supplying a custom function to decode <ahref='undocumented#SkTypeface'>SkTypeface</a>.
If <ahref='#SkTextBlob_Deserialize_procs'>procs</a>.<ahref='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a> is nullptr, default decoding is used. <ahref='#SkTextBlob_Deserialize_procs'>procs</a>.<ahref='#SkDeserialProcs_fTypefaceCtx'>fTypefaceCtx</a>
may be used to provide user context to <ahref='#SkTextBlob_Deserialize_procs'>procs</a>.<ahref='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a>; <ahref='#SkTextBlob_Deserialize_procs'>procs</a>.<ahref='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a>
is called with a pointer to <ahref='undocumented#SkTypeface'>SkTypeface</a><ahref='#SkTextBlob_Deserialize_data'>data</a>, <ahref='#SkTextBlob_Deserialize_data'>data</a> byte length, and user context.
<div><fiddle-embedname="68b6d0208eb0b4de67fc152381af7a58"><div><ahref='undocumented#Text'>Text</a> "Hacker" replaces "World!", but does not update its metrics.
When drawn, "Hacker" uses the spacing computed for "World!".