raycast(raycaster, intersects) {
    const {textRenderInfo, curveRadius} = this
    if (textRenderInfo) {
      const bounds = textRenderInfo.blockBounds
      const raycastMesh = curveRadius ? getCurvedRaycastMesh() : getFlatRaycastMesh()
      const geom = raycastMesh.geometry
      const {position, uv} = geom.attributes
      for (let i = 0; i < uv.count; i++) {
        let x = bounds[0] + (uv.getX(i) * (bounds[2] - bounds[0]))
        const y = bounds[1] + (uv.getY(i) * (bounds[3] - bounds[1]))
        let z = 0
        if (curveRadius) {
          z = curveRadius - Math.cos(x / curveRadius) * curveRadius
          x = Math.sin(x / curveRadius) * curveRadius
        }
        position.setXYZ(i, x, y, z)
      }
      geom.boundingSphere = this.geometry.boundingSphere
      geom.boundingBox = this.geometry.boundingBox
      raycastMesh.matrixWorld = this.matrixWorld
      raycastMesh.material.side = this.material.side
      tempArray.length = 0
      raycastMesh.raycast(raycaster, tempArray)
      for (let i = 0; i < tempArray.length; i++) {
        tempArray[i].object = this
        intersects.push(tempArray[i])
      }
    }
  }
@override Custom raycasting to test against the whole text block's max rectangular bounds
TODO is there any reason to make this more granular, like within individual line or glyph rects?