///|
fn SkiaRasterRenderer::draw_text(
  self : SkiaRasterRenderer,
  canvas : @skia_native.Canvas,
  run : @core.TextRun,
) -> Unit {
  if !skia_text_frame_can_draw(run.frame) {
    return ()
  }
  if run.text == "" {
    return ()
  }
  match
    self.text_shaping_cache.resolve(run.font, run.text, self.font_resolution, () => {
      skia_resolved_text_layout_for_resolution(
        run.font,
        run.text,
        self.font_resolution,
      )
    }) {
    Some(layout) => {
      let placement = skia_text_placement_for_layout(run, layout)
      let saved = canvas.save()
      canvas.clip_rect(skia_rect(placement.clip), anti_alias=true)
      for segment in layout.segments {
        let origin = skia_text_segment_origin(placement, segment.x_offset)
        ignore(
          skia_draw_text_segment(canvas, segment, origin, skia_paint(run.color)),
        )
      }
      canvas.restore_to_count(saved)
    }
    None =>
      self.record_unsupported_command(
        "DrawText", "Skia text layout unavailable; skipped text run",
      )
  }
}