func Fprintf(w io.Writer, format string, a ...interface{}) (int, error) {
	format = compile(format)
	return fmt.Fprintf(w, format, a...)
}
Fprintf is fmt.Fprintf which supports emoji
package emoji
import (
	"bytes"
	"errors"
	"fmt"
	"io"
	"unicode"
)
const (
	ReplacePadding = " "
)
func CodeMap() map[string]string {
	return emojiCodeMap
}
func emojize(x string) string {
	str, ok := emojiCodeMap[x]
	if ok {
		return str + ReplacePadding
	}
	return x
}
func replaseEmoji(input *bytes.Buffer) string {
	emoji := bytes.NewBufferString(":")
	for {
		i, _, err := input.ReadRune()
		if err != nil {
			return emoji.String()
		}
		if i == ':' && emoji.Len() == 1 {
			return emoji.String() + replaseEmoji(input)
		}
		emoji.WriteRune(i)
		switch {
		case unicode.IsSpace(i):
			return emoji.String()
		case i == ':':
			return emojize(emoji.String())
		}
	}
}
func compile(x string) string {
	if x == "" {
		return ""
	}
	input := bytes.NewBufferString(x)
	output := bytes.NewBufferString("")
	for {
		i, _, err := input.ReadRune()
		if err != nil {
			break
		}
		switch i {
		default:
			output.WriteRune(i)
		case ':':
			output.WriteString(replaseEmoji(input))
		}
	}
	return output.String()
}
func compileValues(a *[]interface{}) {
	for i, x := range *a {
		if str, ok := x.(string); ok {
			(*a)[i] = compile(str)
		}
	}
}
func Print(a ...interface{}) (int, error) {
	compileValues(&a)
	return fmt.Print(a...)
}
func Println(a ...interface{}) (int, error) {
	compileValues(&a)
	return fmt.Println(a...)
}
func Printf(format string, a ...interface{}) (int, error) {
	format = compile(format)
	return fmt.Printf(format, a...)
}
func Fprint(w io.Writer, a ...interface{}) (int, error) {
	compileValues(&a)
	return fmt.Fprint(w, a...)
}
func Fprintln(w io.Writer, a ...interface{}) (int, error) {
	compileValues(&a)
	return fmt.Fprintln(w, a...)
}