def text(draw, xy, txt, fill=None, font=None):
    """
    Draw a legacy font starting at :py:attr:`x`, :py:attr:`y` using the
    prescribed fill and font.

    :param draw: A valid canvas to draw the text onto.
    :type draw: PIL.ImageDraw
    :param txt: The text string to display (must be ASCII only).
    :type txt: str
    :param xy: An ``(x, y)`` tuple denoting the top-left corner to draw the
        text.
    :type xy: tuple
    :param fill: The fill color to use (standard Pillow color name or RGB
        tuple).
    :param font: The font (from :py:mod:`luma.core.legacy.font`) to use.
    """
    font = font or DEFAULT_FONT
    x, y = xy
    for ch in txt:
        for byte in font[ord(ch)]:
            for j in range(8):
                if byte & 0x01 > 0:
                    draw.point((x, y + j), fill=fill)

                byte >>= 1
            x += 1