Otra recurso que nos permite la clase Canvas es el de graficar texto.
1 - Creamos un proyecto llamado: Proyecto039
Borramos el TextView que agrega automáticamente el Android Studio y definimos el id del ConstraintLayout con el valor: layout1:

Ahora codificamos la clase en Kotlin donde se encuentra toda la lógica:
package com.tutorialesprogramacionya.proyecto039
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.Typeface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val fondo = Lienzo(this)
        val layout1=findViewById<ConstraintLayout>(R.id.layout1)
        layout1.addView(fondo)
    }
    class Lienzo(context: Context) : View(context) {
        @SuppressLint("WrongConstant")
        override fun onDraw(canvas: Canvas) {
            canvas.drawRGB(0, 0, 255)
            val pincel1 = Paint()
            pincel1.setARGB(255, 255, 0, 0)
            pincel1.setTextSize(30f)
            pincel1.setTypeface(Typeface.SERIF)
            canvas.drawText("Hola Mundo (SERIF)", 0f, 70f, pincel1)
            pincel1.setTypeface(Typeface.SANS_SERIF)
            canvas.drawText("Hola Mundo (SANS SERIF)", 0f, 100f, pincel1)
            pincel1.setTypeface(Typeface.MONOSPACE)
            canvas.drawText("Hola Mundo (MONOSPACE)", 0f, 140f, pincel1)
            var tf = Typeface.create(Typeface.SERIF, Typeface.ITALIC)
            pincel1.setTypeface(tf)
            canvas.drawText("Hola Mundo (SERIF ITALIC)", 0f, 180f, pincel1)
            tf = Typeface.create(Typeface.SERIF, Typeface.BOLD or Typeface.ITALIC)
            pincel1.setTypeface(tf)
            canvas.drawText("Hola Mundo (SERIF ITALIC BOLD)", 0f, 220f, pincel1)
        }
    }
}
Para graficar texto disponemos del método drawText que nos permite imprimir un String en una determinada columna, fila con un determinado pincel que podemos definir su color:
            val pincel1 = Paint()
            pincel1.setARGB(255, 255, 0, 0)
El tamaño de la letra:
            pincel1.setTextSize(30f)
El estilo de la letra:
            pincel1.setTypeface(Typeface.SERIF)
La interfaz del programa es:

Este proyecto lo puede descargar en un zip desde este enlace: proyecto039.zip