1 SkTextBlob Reference 2 === 3 4 5 <a name='SkTextBlob'></a> 6 7 --- 8 9 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 10 class <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> final : public <a href='undocumented#SkNVRefCnt'>SkNVRefCnt</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> { 11 12 const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkTextBlob_bounds'>bounds()</a> const; 13 uint32_t <a href='#SkTextBlob_uniqueID'>uniqueID</a>() const; 14 int <a href='#SkTextBlob_getIntercepts'>getIntercepts</a>(const <a href='undocumented#SkScalar'>SkScalar</a> bounds[2], <a href='undocumented#SkScalar'>SkScalar</a> intervals[], 15 const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a> = nullptr) const; 16 static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_MakeFromText'>MakeFromText</a>(const void* <a href='undocumented#Text'>text</a>, size_t byteLength, const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, 17 <a href='undocumented#SkTextEncoding'>SkTextEncoding</a> encoding = <a href='undocumented#kUTF8_SkTextEncoding'>kUTF8_SkTextEncoding</a>); 18 static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_MakeFromString'>MakeFromString</a>(const char* <a href='undocumented#String'>string</a>, const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, 19 <a href='undocumented#SkTextEncoding'>SkTextEncoding</a> encoding = <a href='undocumented#kUTF8_SkTextEncoding'>kUTF8_SkTextEncoding</a>); 20 size_t <a href='#SkTextBlob_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& procs, void* memory, size_t memory_size) const; 21 <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkData'>SkData</a>> <a href='#SkTextBlob_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& procs) const; 22 static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_Deserialize'>Deserialize</a>(const void* <a href='undocumented#Data'>data</a>, size_t <a href='undocumented#Size'>size</a>, 23 const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>& procs); 24 }; 25 26 </pre> 27 28 <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> combines multiple <a href='undocumented#Text'>text</a> runs into an immutable container. Each <a href='undocumented#Text'>text</a> 29 run consists of <a href='undocumented#Glyph'>Glyphs</a>, <a href='SkPaint_Reference#Paint'>Paint</a>, and position. Only parts of <a href='SkPaint_Reference#Paint'>Paint</a> related to 30 fonts and <a href='undocumented#Text'>text</a> rendering are used by run. 31 32 <a name='SkTextBlob_bounds'></a> 33 34 --- 35 36 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 37 const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkTextBlob_bounds'>bounds()</a>const 38 </pre> 39 40 Returns conservative bounding box. Uses <a href='SkPaint_Reference#SkPaint'>SkPaint</a> associated with each <a href='undocumented#Glyph'>glyph</a> to 41 determine <a href='undocumented#Glyph'>glyph</a> bounds, and unions all bounds. Returned bounds may be 42 larger than the bounds of all <a href='undocumented#Glyph'>glyphs</a> in runs. 43 44 ### Return Value 45 46 conservative bounding box 47 48 ### Example 49 50 <div><fiddle-embed name="fb8b2502bbe52d2029aecdf569dd9fdb"></fiddle-embed></div> 51 52 ### See Also 53 54 <a href='SkPath_Reference#SkPath'>SkPath</a>::<a href='#SkPath_getBounds'>getBounds</a> 55 56 <a name='SkTextBlob_uniqueID'></a> 57 58 --- 59 60 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 61 uint32_t <a href='#SkTextBlob_uniqueID'>uniqueID</a>()const 62 </pre> 63 64 Returns a non-zero value unique among all <a href='undocumented#Text'>text</a> blobs. 65 66 ### Return Value 67 68 identifier for <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> 69 70 ### Example 71 72 <div><fiddle-embed name="6e12cceca981ddabc0fc18c380543f34"></fiddle-embed></div> 73 74 ### See Also 75 76 <a href='undocumented#SkRefCnt'>SkRefCnt</a> 77 78 <a name='Text_Intercepts'></a> 79 80 <a href='#Text_Blob_Text_Intercepts'>Text_Intercepts</a> describe the intersection of drawn <a href='undocumented#Text'>text</a> <a href='undocumented#Glyph'>Glyphs</a> with a pair 81 of <a href='undocumented#Line'>lines</a> parallel to the <a href='undocumented#Text'>text</a> advance. <a href='#Text_Blob_Text_Intercepts'>Text_Intercepts</a> permits creating a 82 underline that skips Descenders. 83 84 <a name='SkTextBlob_getIntercepts'></a> 85 86 --- 87 88 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 89 int <a href='#SkTextBlob_getIntercepts'>getIntercepts</a>(const <a href='undocumented#SkScalar'>SkScalar</a> bounds[2], <a href='undocumented#SkScalar'>SkScalar</a> intervals[], const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a> = nullptr) const; 90 </pre> 91 92 Returns the number of <a href='#SkTextBlob_getIntercepts_intervals'>intervals</a> that intersect <a href='#SkTextBlob_getIntercepts_bounds'>bounds</a>. 93 <a href='#SkTextBlob_getIntercepts_bounds'>bounds</a> describes a pair of <a href='undocumented#Line'>lines</a> parallel to the <a href='undocumented#Text'>text</a> advance. 94 The return count is zero or a multiple of two, and is at most twice the number of <a href='undocumented#Glyph'>glyphs</a> in 95 the the blob. 96 97 Pass nullptr for <a href='#SkTextBlob_getIntercepts_intervals'>intervals</a> to determine the <a href='undocumented#Size'>size</a> of the interval array. 98 99 Runs within the blob that contain <a href='undocumented#SkRSXform'>SkRSXform</a> are ignored when computing intercepts. 100 101 ### Parameters 102 103 <table> <tr> <td><a name='SkTextBlob_getIntercepts_bounds'><code><strong>bounds</strong></code></a></td> 104 <td>lower and upper <a href='undocumented#Line'>line</a> parallel to the advance</td> 105 </tr> 106 <tr> <td><a name='SkTextBlob_getIntercepts_intervals'><code><strong>intervals</strong></code></a></td> 107 <td>returned intersections; may be nullptr</td> 108 </tr> 109 <tr> <td><a name='SkTextBlob_getIntercepts_paint'><code><strong>paint</strong></code></a></td> 110 <td>specifies stroking, <a href='undocumented#SkPathEffect'>SkPathEffect</a> that affects the result; may be nullptr</td> 111 </tr> 112 </table> 113 114 ### Return Value 115 116 number of intersections; may be zero 117 118 ### Example 119 120 <div><fiddle-embed name="e9d4eb8ece521b1329e7433d4b243fdf"></fiddle-embed></div> 121 122 <a name='SkTextBlob_MakeFromText'></a> 123 124 --- 125 126 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 127 static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_MakeFromText'>MakeFromText</a>(const void* <a href='undocumented#Text'>text</a>, size_t byteLength, const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, 128 <a href='undocumented#SkTextEncoding'>SkTextEncoding</a> encoding = <a href='undocumented#kUTF8_SkTextEncoding'>kUTF8_SkTextEncoding</a>) 129 </pre> 130 131 Creates <a href='#Text_Blob'>Text_Blob</a> with a single run. <a href='#SkTextBlob_MakeFromText_text'>text</a> meaning depends on <a href='#Text_Encoding'>Text_Encoding</a>; 132 by default, <a href='#SkTextBlob_MakeFromText_text'>text</a> is encoded as UTF-8. 133 134 <a href='#SkTextBlob_MakeFromText_font'>font</a> contains attributes used to define the run <a href='#SkTextBlob_MakeFromText_text'>text</a>: <a href='undocumented#Typeface'>Typeface</a>, <a href='#Font_Size'>Font_Size</a>, <a href='#Font_Scale_X'>Font_Scale_X</a>, 135 <a href='#Font_Skew_X'>Font_Skew_X</a>, <a href='#Font_Hinting'>Font_Hinting</a>, <a href='#Paint_Anti_Alias'>Paint_Anti_Alias</a>, <a href='#Font_Embolden'>Font_Embolden</a>, <a href='#Font_Force_Hinting'>Font_Force_Hinting</a>, 136 <a href='#Font_Embedded_Bitmaps'>Font_Embedded_Bitmaps</a>, <a href='#Font_Hinting_Spacing'>Font_Hinting_Spacing</a>, <a href='#Font_Anti_Alias'>Font_Anti_Alias</a>, <a href='#Font_Linear'>Font_Linear</a>, 137 and <a href='#Font_Subpixel'>Font_Subpixel</a> 138 . 139 140 ### Parameters 141 142 <table> <tr> <td><a name='SkTextBlob_MakeFromText_text'><code><strong>text</strong></code></a></td> 143 <td>character code <a href='SkPoint_Reference#Point'>points</a> or <a href='undocumented#Glyph'>Glyphs</a> drawn</td> 144 </tr> 145 <tr> <td><a name='SkTextBlob_MakeFromText_byteLength'><code><strong>byteLength</strong></code></a></td> 146 <td>byte length of <a href='#SkTextBlob_MakeFromText_text'>text</a> array</td> 147 </tr> 148 <tr> <td><a name='SkTextBlob_MakeFromText_font'><code><strong>font</strong></code></a></td> 149 <td><a href='#SkTextBlob_MakeFromText_text'>text</a> <a href='undocumented#Size'>size</a>, <a href='undocumented#Typeface'>typeface</a>, <a href='#SkTextBlob_MakeFromText_text'>text scale</a>, and so on, used to draw</td> 150 </tr> 151 <tr> <td><a name='SkTextBlob_MakeFromText_encoding'><code><strong>encoding</strong></code></a></td> 152 <td>one of: <a href='undocumented#kUTF8_SkTextEncoding'>kUTF8_SkTextEncoding</a>, <a href='undocumented#kUTF16_SkTextEncoding'>kUTF16_SkTextEncoding</a>, 153 <a href='undocumented#kUTF32_SkTextEncoding'>kUTF32_SkTextEncoding</a>, <a href='undocumented#kGlyphID_SkTextEncoding'>kGlyphID_SkTextEncoding</a> 154 </td> 155 </tr> 156 </table> 157 158 ### Return Value 159 160 <a href='#Text_Blob'>Text_Blob</a> constructed from one run 161 162 ### Example 163 164 <div><fiddle-embed name="bec2252bc36dc8fd023015629d60c405"></fiddle-embed></div> 165 166 ### See Also 167 168 <a href='#SkTextBlob_MakeFromString'>MakeFromString</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> 169 170 <a name='SkTextBlob_MakeFromString'></a> 171 172 --- 173 174 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 175 static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_MakeFromString'>MakeFromString</a>(const char* <a href='undocumented#String'>string</a>, const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, 176 <a href='undocumented#SkTextEncoding'>SkTextEncoding</a> encoding = <a href='undocumented#kUTF8_SkTextEncoding'>kUTF8_SkTextEncoding</a>) 177 </pre> 178 179 Creates <a href='#Text_Blob'>Text_Blob</a> with a single run. <a href='#SkTextBlob_MakeFromString_string'>string</a> meaning depends on <a href='#Text_Encoding'>Text_Encoding</a>; 180 by default, <a href='#SkTextBlob_MakeFromString_string'>string</a> is encoded as UTF-8. 181 182 <a href='#SkTextBlob_MakeFromString_font'>font</a> contains <a href='#Font_Metrics'>Font_Metrics</a> used to define the run <a href='undocumented#Text'>text</a>: <a href='undocumented#Typeface'>Typeface</a>, <a href='#Font_Size'>Font_Size</a>, <a href='#Font_Scale_X'>Font_Scale_X</a>, 183 <a href='#Font_Skew_X'>Font_Skew_X</a>, <a href='#Font_Hinting'>Font_Hinting</a>, <a href='#Paint_Anti_Alias'>Paint_Anti_Alias</a>, <a href='#Font_Embolden'>Font_Embolden</a>, <a href='#Font_Force_Hinting'>Font_Force_Hinting</a>, 184 <a href='#Font_Embedded_Bitmaps'>Font_Embedded_Bitmaps</a>, <a href='#Font_Hinting_Spacing'>Font_Hinting_Spacing</a>, <a href='#Font_Anti_Alias'>Font_Anti_Alias</a>, <a href='#Font_Linear'>Font_Linear</a>, 185 and <a href='#Font_Subpixel'>Font_Subpixel</a> 186 . 187 188 ### Parameters 189 190 <table> <tr> <td><a name='SkTextBlob_MakeFromString_string'><code><strong>string</strong></code></a></td> 191 <td>character code <a href='SkPoint_Reference#Point'>points</a> or <a href='undocumented#Glyph'>Glyphs</a> drawn</td> 192 </tr> 193 <tr> <td><a name='SkTextBlob_MakeFromString_font'><code><strong>font</strong></code></a></td> 194 <td><a href='undocumented#Text'>text</a> <a href='undocumented#Size'>size</a>, <a href='undocumented#Typeface'>typeface</a>, <a href='undocumented#Text'>text scale</a>, and so on, used to draw</td> 195 </tr> 196 <tr> <td><a name='SkTextBlob_MakeFromString_encoding'><code><strong>encoding</strong></code></a></td> 197 <td>one of: <a href='undocumented#kUTF8_SkTextEncoding'>kUTF8_SkTextEncoding</a>, <a href='undocumented#kUTF16_SkTextEncoding'>kUTF16_SkTextEncoding</a>, 198 <a href='undocumented#kUTF32_SkTextEncoding'>kUTF32_SkTextEncoding</a>, <a href='undocumented#kGlyphID_SkTextEncoding'>kGlyphID_SkTextEncoding</a> 199 </td> 200 </tr> 201 </table> 202 203 ### Return Value 204 205 <a href='#Text_Blob'>Text_Blob</a> constructed from one run 206 207 ### Example 208 209 <div><fiddle-embed name="a5af182e793eed3f2bb3b0efc2cf4852"></fiddle-embed></div> 210 211 ### See Also 212 213 <a href='#SkTextBlob_MakeFromText'>MakeFromText</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> 214 215 <a name='SkTextBlob_serialize'></a> 216 217 --- 218 219 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 220 size_t <a href='#SkTextBlob_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& procs, void* memory, size_t memory_size)const 221 </pre> 222 223 Writes <a href='undocumented#Data'>data</a> to allow later reconstruction of <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>. <a href='#SkTextBlob_serialize_memory'>memory</a> <a href='SkPoint_Reference#Point'>points</a> to storage 224 to receive the encoded <a href='undocumented#Data'>data</a>, and <a href='#SkTextBlob_serialize_memory_size'>memory_size</a> describes the <a href='undocumented#Size'>size</a> of storage. 225 Returns bytes used if provided storage is large enough to hold all <a href='undocumented#Data'>data</a>; 226 otherwise, returns zero. 227 228 <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> permits supplying a custom function to encode <a href='undocumented#SkTypeface'>SkTypeface</a>. 229 If <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> is nullptr, default encoding is used. <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceCtx'>fTypefaceCtx</a> 230 may be used to provide user context to <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>; <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> 231 is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> and user context. 232 233 ### Parameters 234 235 <table> <tr> <td><a name='SkTextBlob_serialize_procs'><code><strong>procs</strong></code></a></td> 236 <td>custom serial <a href='undocumented#Data'>data</a> encoders; may be nullptr</td> 237 </tr> 238 <tr> <td><a name='SkTextBlob_serialize_memory'><code><strong>memory</strong></code></a></td> 239 <td>storage for <a href='undocumented#Data'>data</a></td> 240 </tr> 241 <tr> <td><a name='SkTextBlob_serialize_memory_size'><code><strong>memory_size</strong></code></a></td> 242 <td><a href='undocumented#Size'>size</a> of storage</td> 243 </tr> 244 </table> 245 246 ### Return Value 247 248 bytes written, or zero if required storage is larger than <a href='#SkTextBlob_serialize_memory_size'>memory_size</a> 249 250 ### Example 251 252 <div><fiddle-embed name="90ce8c327d407b1faac73baa2ebd0378"></fiddle-embed></div> 253 254 ### See Also 255 256 <a href='#SkTextBlob_Deserialize'>Deserialize</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a> 257 258 <a name='SkTextBlob_serialize_2'></a> 259 260 --- 261 262 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 263 <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkData'>SkData</a>> <a href='#SkTextBlob_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& procs)const 264 </pre> 265 266 Returns storage containing <a href='undocumented#SkData'>SkData</a> describing <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>, using optional custom 267 encoders. 268 269 <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> permits supplying a custom function to encode <a href='undocumented#SkTypeface'>SkTypeface</a>. 270 If <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> is nullptr, default encoding is used. <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceCtx'>fTypefaceCtx</a> 271 may be used to provide user context to <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>; <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> 272 is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> and user context. 273 274 ### Parameters 275 276 <table> <tr> <td><a name='SkTextBlob_serialize_2_procs'><code><strong>procs</strong></code></a></td> 277 <td>custom serial <a href='undocumented#Data'>data</a> encoders; may be nullptr</td> 278 </tr> 279 </table> 280 281 ### Return Value 282 283 storage containing serialized <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> 284 285 ### Example 286 287 <div><fiddle-embed name="464201a828f7e94fc01cd57facfcd2f4"></fiddle-embed></div> 288 289 ### See Also 290 291 <a href='#SkTextBlob_Deserialize'>Deserialize</a> <a href='undocumented#SkData'>SkData</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a> 292 293 <a name='SkTextBlob_Deserialize'></a> 294 295 --- 296 297 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 298 static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_Deserialize'>Deserialize</a>(const void* <a href='undocumented#Data'>data</a>, size_t <a href='undocumented#Size'>size</a>, const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>& procs) 299 </pre> 300 301 Recreates <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> that was serialized into <a href='#SkTextBlob_Deserialize_data'>data</a>. Returns constructed <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> 302 if successful; otherwise, returns nullptr. Fails if <a href='#SkTextBlob_Deserialize_size'>size</a> is smaller than 303 required <a href='#SkTextBlob_Deserialize_data'>data</a> length, or if <a href='#SkTextBlob_Deserialize_data'>data</a> does not permit constructing valid <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>. 304 305 <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a> permits supplying a custom function to decode <a href='undocumented#SkTypeface'>SkTypeface</a>. 306 If <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a> is nullptr, default decoding is used. <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceCtx'>fTypefaceCtx</a> 307 may be used to provide user context to <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a>; <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a> 308 is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> <a href='#SkTextBlob_Deserialize_data'>data</a>, <a href='#SkTextBlob_Deserialize_data'>data</a> byte length, and user context. 309 310 ### Parameters 311 312 <table> <tr> <td><a name='SkTextBlob_Deserialize_data'><code><strong>data</strong></code></a></td> 313 <td>pointer for serial <a href='#SkTextBlob_Deserialize_data'>data</a></td> 314 </tr> 315 <tr> <td><a name='SkTextBlob_Deserialize_size'><code><strong>size</strong></code></a></td> 316 <td><a href='#SkTextBlob_Deserialize_size'>size</a> of <a href='#SkTextBlob_Deserialize_data'>data</a></td> 317 </tr> 318 <tr> <td><a name='SkTextBlob_Deserialize_procs'><code><strong>procs</strong></code></a></td> 319 <td>custom serial <a href='#SkTextBlob_Deserialize_data'>data</a> decoders; may be nullptr</td> 320 </tr> 321 </table> 322 323 ### Return Value 324 325 <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> constructed from <a href='#SkTextBlob_Deserialize_data'>data</a> in memory 326 327 ### Example 328 329 <div><fiddle-embed name="68b6d0208eb0b4de67fc152381af7a58"><div><a href='undocumented#Text'>Text</a> "Hacker" replaces "World!", but does not update its metrics. 330 When drawn, "Hacker" uses the spacing computed for "World!". 331 </div></fiddle-embed></div> 332 333 ### See Also 334 335 <a href='#SkTextBlob_serialize'>serialize</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a> 336 337