// The easiest (?) way to handle vertical text placement is // not to use gravity at all because then you know that all the text is // placed relative to ImageMagick's (0,0) coordinate which is the top left of // the screen and the baseline will be y=0. func draw_metrics(mw *imagick.MagickWand, dw *imagick.DrawingWand, dx *float64, dy, sx float64, text string) { mw.AnnotateImage(dw, *dx, dy, 0, text) mw.DrawImage(dw) // get the font metrics fm := mw.QueryFontMetrics(dw, text) if fm != nil { // Adjust the new x coordinate *dx += fm.TextWidth + sx } }
func drawMetrics(mw *imagick.MagickWand, dw *imagick.DrawingWand, dx *float64, text string) { rotation := float64(random(-30, 30)) mw.AnnotateImage(dw, *dx, 35, rotation, text) mw.DrawImage(dw) // get the font metrics fm := mw.QueryFontMetrics(dw, text) if fm != nil { // Adjust the new x coordinate *dx += fm.TextWidth + 2 } }