絵文字が豆腐になる。どうすればいいのかは要調査
package main import ( "bytes" "fmt" "image" "image/png" "io/ioutil" "os" "github.com/golang/freetype/truetype" "golang.org/x/image/font" "golang.org/x/image/math/fixed" ) func main() { f, err := os.Open("Cica-Regular.ttf") if err != nil { panic(err) } defer f.Close() ttfBytes, err := ioutil.ReadAll(f) if err != nil { panic(err) } ft, err := truetype.Parse(ttfBytes) if err != nil { panic(err) } opt := truetype.Options{ Size: 24, DPI: 0, Hinting: 0, GlyphCacheEntries: 0, SubPixelsX: 0, SubPixelsY: 0, } text := "abcdefghijklmnopqrstuvwxyzあ亜!薔薇😀" face := truetype.NewFace(ft, &opt) b, a := font.BoundString(face, text) w := b.Max.X - b.Min.X + fixed.I(1) h := b.Max.Y - b.Min.Y + fixed.I(1) img := image.NewRGBA(image.Rect(0, 0, w.Ceil(), h.Ceil())) // draw.Draw(img, img.Bounds(), &image.Uniform{image.Black}, image.ZP, draw.Src) dr := &font.Drawer{ Dst: img, Src: image.Black, Face: face, Dot: fixed.Point26_6{}, } dr.Dot.X = (w - a) / 2 dr.Dot.Y = h - b.Max.Y dr.DrawString(text) buf := &bytes.Buffer{} err = png.Encode(buf, img) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } file, err := os.Create(`test.png`) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } defer file.Close() file.Write(buf.Bytes()) }
追記:
絵文字は出るやつと出ないやつがあるようだ。
↓以下のissueではまだ完全には絵文字は対応できていなさそう。