code: func (a *Atlas) DrawRune(prevR, r rune, dot pixel.Vec) (rect, frame, bounds pixel.Rect, newDot pixel.Vec) {
  	if !a.Contains(r) {
  		r = unicode.ReplacementChar
  	}
  	if !a.Contains(unicode.ReplacementChar) {
  		return pixel.Rect{}, pixel.Rect{}, pixel.Rect{}, dot
  	}
  	if !a.Contains(prevR) {
  		prevR = unicode.ReplacementChar
  	}
  
  	if prevR >= 0 {
  		dot.X += a.Kern(prevR, r)
  	}
  
  	glyph := a.Glyph(r)
  
  	rect = glyph.Frame.Moved(dot.Sub(glyph.Dot))
  	bounds = rect
  
  	if bounds.W()*bounds.H() != 0 {
  		bounds = pixel.R(
  			bounds.Min.X,
  			dot.Y-a.Descent(),
  			bounds.Max.X,
  			dot.Y+a.Ascent(),
  		)
  	}
  
  	dot.X += glyph.Advance
  
  	return rect, glyph.Frame, bounds, dot
  }
docs: // DrawRune returns parameters necessary for drawing a rune glyph.
  //
  // Rect is a rectangle where the glyph should be positioned. Frame is the glyph frame inside the
  // Atlas's Picture. NewDot is the new position of the dot.