code: func (captcha *CaptchaImage) DrawTextNoise(complex CaptchaComplex) *CaptchaImage {
  	if captcha.Error != nil {
  		return captcha
  	}
  	density := 1500
  	if complex == CaptchaComplexLower {
  		density = 2000
  	} else if complex == CaptchaComplexMedium {
  		density = 1500
  	} else if complex == CaptchaComplexHigh {
  		density = 1000
  	}
  
  	maxSize := (captcha.height * captcha.width) / density
  
  	r := rand.New(rand.NewSource(time.Now().UnixNano()))
  
  	c := freetype.NewContext()
  	c.SetDPI(*dpi)
  
  	c.SetClip(captcha.nrgba.Bounds())
  	c.SetDst(captcha.nrgba)
  	c.SetHinting(font.HintingFull)
  	rawFontSize := float64(captcha.height) / (1 + float64(r.Intn(7))/float64(10))
  
  	for i := 0; i < maxSize; i++ {
  
  		rw := r.Intn(captcha.width)
  		rh := r.Intn(captcha.height)
  
  		text := RandText(1)
  		fontSize := rawFontSize/2 + float64(r.Intn(5))
  
  		c.SetSrc(image.NewUniform(RandLightColor()))
  		c.SetFontSize(fontSize)
  		f, err := RandFontFamily()
  
  		if err != nil {
  			captcha.Error = err
  			return captcha
  		}
  		c.SetFont(f)
  		pt := freetype.Pt(rw, rh)
  
  		_, err = c.DrawString(text, pt)
  		if err != nil {
  			captcha.Error = err
  			return captcha
  		}
  	}
  	return captcha
  }
docs: //画文字噪点.