1 SkTextBlobBuilder Reference 2 === 3 4 5 <a name='SkTextBlobBuilder'></a> 6 7 --- 8 9 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 10 class <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> { 11 12 <a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>; 13 <a href='#SkTextBlobBuilder_destructor'>~SkTextBlobBuilder()</a>; 14 <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlobBuilder_make'>make()</a>; 15 const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, 16 const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr); 17 const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> y, 18 const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr); 19 const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, 20 const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr); 21 }; 22 23 </pre> 24 25 Helper class for constructing <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>. 26 27 <a name='SkTextBlobBuilder_RunBuffer'></a> 28 29 --- 30 31 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 32 struct <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> { 33 <a href='undocumented#SkGlyphID'>SkGlyphID</a>* <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>; 34 <a href='undocumented#SkScalar'>SkScalar</a>* <a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>; 35 char* <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>; 36 uint32_t* <a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a>; 37 }; 38 </pre> 39 40 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> supplies storage for <a href='undocumented#Glyph'>Glyphs</a> and positions within a run. 41 42 A run is a sequence of <a href='undocumented#Glyph'>Glyphs</a> sharing <a href='#Font_Metrics'>Font_Metrics</a> and positioning. 43 Each run may position its <a href='undocumented#Glyph'>Glyphs</a> in one of three ways: 44 by specifying where the first <a href='undocumented#Glyph'>Glyph</a> is drawn, and allowing <a href='#Font_Metrics'>Font_Metrics</a> to 45 determine the advance to subsequent <a href='undocumented#Glyph'>Glyphs</a>; by specifying a baseline, and 46 the position on that baseline for each <a href='undocumented#Glyph'>Glyph</a> in run; or by providing <a href='SkPoint_Reference#Point'>Point</a> 47 array, one per <a href='undocumented#Glyph'>Glyph</a>.<table style='border-collapse: collapse; width: 62.5em'> 48 49 <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Type</th> 50 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Member</th> 51 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> 52 <tr style='background-color: #f0f0f0; '> 53 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkGlyphID*</td> 54 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_glyphs'><code>glyphs</code></a></td> 55 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 56 <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> <a href='SkPoint_Reference#Point'>points</a> to memory for one or more <a href='undocumented#Glyph'>Glyphs</a>. <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> memory must be 57 written to by the caller. 58 </td> 59 </tr> 60 <tr> 61 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar*</td> 62 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_pos'><code>pos</code></a></td> 63 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 64 <a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a> <a href='SkPoint_Reference#Point'>points</a> to memory for <a href='undocumented#Glyph'>Glyph</a> positions. Depending on how <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> 65 is allocated, <a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a> may <a href='SkPoint_Reference#Point'>point</a> to zero bytes per <a href='undocumented#Glyph'>Glyph</a>, one <a href='undocumented#Scalar'>Scalar</a> per <a href='undocumented#Glyph'>Glyph</a>, 66 or one <a href='SkPoint_Reference#Point'>Point</a> per <a href='undocumented#Glyph'>Glyph</a>. 67 </td> 68 </tr> 69 <tr style='background-color: #f0f0f0; '> 70 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>char*</td> 71 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_utf8text'><code>utf8text</code></a></td> 72 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 73 Reserved for future use. <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a> should not be read or written. 74 </td> 75 </tr> 76 <tr> 77 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uint32_t*</td> 78 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_clusters'><code>clusters</code></a></td> 79 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 80 Reserved for future use. <a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should not be read or written. 81 </td> 82 </tr> 83 </table> 84 85 ### See Also 86 87 <a href='#SkTextBlobBuilder_allocRun'>allocRun</a> <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a> <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a> 88 89 <a name='SkTextBlobBuilder_empty_constructor'></a> 90 91 --- 92 93 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 94 <a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a> 95 </pre> 96 97 Constructs empty <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. By default, <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> has no runs. 98 99 ### Return Value 100 101 empty <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> 102 103 ### Example 104 105 <div><fiddle-embed name="d9dbabfe24aad92ee3c8144513e90d81"> 106 107 #### Example Output 108 109 ~~~~ 110 blob equals nullptr 111 ~~~~ 112 113 </fiddle-embed></div> 114 115 ### See Also 116 117 <a href='#SkTextBlobBuilder_make'>make</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>::<a href='#SkTextBlob_MakeFromText'>MakeFromText</a> 118 119 <a name='SkTextBlobBuilder_destructor'></a> 120 121 --- 122 123 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 124 <a href='#SkTextBlobBuilder_destructor'>~SkTextBlobBuilder()</a> 125 </pre> 126 127 Deletes <a href='undocumented#Data'>data</a> allocated internally by <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. 128 129 ### See Also 130 131 <a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a> 132 133 <a name='SkTextBlobBuilder_make'></a> 134 135 --- 136 137 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 138 <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlobBuilder_make'>make()</a> 139 </pre> 140 141 Returns <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> built from runs of <a href='undocumented#Glyph'>glyphs</a> added by builder. Returned 142 <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> is immutable; it may be copied, but its contents may not be altered. 143 Returns nullptr if no runs of <a href='undocumented#Glyph'>glyphs</a> were added by builder. 144 145 Resets <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> to its initial empty state, allowing it to be 146 reused to build a new set of runs. 147 148 ### Return Value 149 150 <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> or nullptr 151 152 ### Example 153 154 <div><fiddle-embed name="34c37c0212cc0aef670d96945d08fe24"> 155 156 #### Example Output 157 158 ~~~~ 159 blob equals nullptr 160 blob does not equal nullptr 161 blob equals nullptr 162 ~~~~ 163 164 </fiddle-embed></div> 165 166 ### See Also 167 168 <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>::<a href='#SkTextBlob_MakeFromText'>MakeFromText</a> 169 170 <a name='SkTextBlobBuilder_allocRun'></a> 171 172 --- 173 174 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 175 const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, 176 const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr) 177 </pre> 178 179 Returns run with storage for <a href='undocumented#Glyph'>glyphs</a>. Caller must write <a href='#SkTextBlobBuilder_allocRun_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> to 180 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> before next call to <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. 181 182 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored. 183 184 <a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRun_font'>font</a>. 185 186 <a href='undocumented#Glyph'>Glyphs</a> are positioned on a baseline at (<a href='#SkTextBlobBuilder_allocRun_x'>x</a>, <a href='#SkTextBlobBuilder_allocRun_y'>y</a>), using <a href='undocumented#Font_Metrics'>font metrics</a> to 187 determine their relative placement. 188 189 <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> 190 <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> does not intersect <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a>. If <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> is nullptr, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> 191 is computed from (<a href='#SkTextBlobBuilder_allocRun_x'>x</a>, <a href='#SkTextBlobBuilder_allocRun_y'>y</a>) and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics. 192 193 ### Parameters 194 195 <table> <tr> <td><a name='SkTextBlobBuilder_allocRun_font'><code><strong>font</strong></code></a></td> 196 <td><a href='SkFont_Reference#SkFont'>SkFont</a> used for this run</td> 197 </tr> 198 <tr> <td><a name='SkTextBlobBuilder_allocRun_count'><code><strong>count</strong></code></a></td> 199 <td>number of <a href='undocumented#Glyph'>glyphs</a></td> 200 </tr> 201 <tr> <td><a name='SkTextBlobBuilder_allocRun_x'><code><strong>x</strong></code></a></td> 202 <td>horizontal offset within the blob</td> 203 </tr> 204 <tr> <td><a name='SkTextBlobBuilder_allocRun_y'><code><strong>y</strong></code></a></td> 205 <td>vertical offset within the blob</td> 206 </tr> 207 <tr> <td><a name='SkTextBlobBuilder_allocRun_bounds'><code><strong>bounds</strong></code></a></td> 208 <td>optional run bounding box</td> 209 </tr> 210 </table> 211 212 ### Return Value 213 214 writable <a href='undocumented#Glyph'>glyph</a> buffer 215 216 ### Example 217 218 <div><fiddle-embed name="f0e584aec20eaee7a5bfed62aa885eee"></fiddle-embed></div> 219 220 ### See Also 221 222 <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a> <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a> 223 224 <a name='SkTextBlobBuilder_allocRunPosH'></a> 225 226 --- 227 228 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 229 const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> y, 230 const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr) 231 </pre> 232 233 Returns run with storage for <a href='undocumented#Glyph'>glyphs</a> and positions along baseline. Caller must 234 write <a href='#SkTextBlobBuilder_allocRunPosH_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, and <a href='#SkTextBlobBuilder_allocRunPosH_count'>count</a> <a href='undocumented#Scalar'>scalars</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>; 235 before next call to <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. 236 237 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored. 238 239 <a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRunPosH_font'>font</a>. 240 241 <a href='undocumented#Glyph'>Glyphs</a> are positioned on a baseline at <a href='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, using x-axis positions written by 242 caller to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>. 243 244 <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> 245 <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> does not intersect <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a>. If <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> is nullptr, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> 246 is computed from <a href='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics. 247 248 ### Parameters 249 250 <table> <tr> <td><a name='SkTextBlobBuilder_allocRunPosH_font'><code><strong>font</strong></code></a></td> 251 <td><a href='SkFont_Reference#SkFont'>SkFont</a> used for this run</td> 252 </tr> 253 <tr> <td><a name='SkTextBlobBuilder_allocRunPosH_count'><code><strong>count</strong></code></a></td> 254 <td>number of <a href='undocumented#Glyph'>glyphs</a></td> 255 </tr> 256 <tr> <td><a name='SkTextBlobBuilder_allocRunPosH_y'><code><strong>y</strong></code></a></td> 257 <td>vertical offset within the blob</td> 258 </tr> 259 <tr> <td><a name='SkTextBlobBuilder_allocRunPosH_bounds'><code><strong>bounds</strong></code></a></td> 260 <td>optional run bounding box</td> 261 </tr> 262 </table> 263 264 ### Return Value 265 266 writable <a href='undocumented#Glyph'>glyph</a> buffer and x-axis position buffer 267 268 ### Example 269 270 <div><fiddle-embed name="c77ac50f506106fdfef94d20bc1a6934"></fiddle-embed></div> 271 272 ### See Also 273 274 <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a> <a href='#SkTextBlobBuilder_allocRun'>allocRun</a> 275 276 <a name='SkTextBlobBuilder_allocRunPos'></a> 277 278 --- 279 280 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 281 const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count, const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr) 282 </pre> 283 284 Returns run with storage for <a href='undocumented#Glyph'>glyphs</a> and <a href='SkPoint_Reference#SkPoint'>SkPoint</a> positions. Caller must 285 write <a href='#SkTextBlobBuilder_allocRunPos_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, and <a href='#SkTextBlobBuilder_allocRunPos_count'>count</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>; 286 before next call to <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. 287 288 <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored. 289 290 <a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRunPos_font'>font</a>. 291 292 <a href='undocumented#Glyph'>Glyphs</a> are positioned using <a href='SkPoint_Reference#SkPoint'>SkPoint</a> written by caller to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, using 293 two <a href='undocumented#Scalar'>scalar</a> values for each <a href='SkPoint_Reference#SkPoint'>SkPoint</a>. 294 295 <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> 296 <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> does not intersect <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a>. If <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> is nullptr, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> 297 is computed from <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics. 298 299 ### Parameters 300 301 <table> <tr> <td><a name='SkTextBlobBuilder_allocRunPos_font'><code><strong>font</strong></code></a></td> 302 <td><a href='SkFont_Reference#SkFont'>SkFont</a> used for this run</td> 303 </tr> 304 <tr> <td><a name='SkTextBlobBuilder_allocRunPos_count'><code><strong>count</strong></code></a></td> 305 <td>number of <a href='undocumented#Glyph'>glyphs</a></td> 306 </tr> 307 <tr> <td><a name='SkTextBlobBuilder_allocRunPos_bounds'><code><strong>bounds</strong></code></a></td> 308 <td>optional run bounding box</td> 309 </tr> 310 </table> 311 312 ### Return Value 313 314 writable <a href='undocumented#Glyph'>glyph</a> buffer and <a href='SkPoint_Reference#SkPoint'>SkPoint</a> buffer 315 316 ### Example 317 318 <div><fiddle-embed name="da4fcb4a972b500996be9aff6c6c40e1"></fiddle-embed></div> 319 320 ### See Also 321 322 <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a> <a href='#SkTextBlobBuilder_allocRun'>allocRun</a> 323 324