diff --git a/captcha.go b/captcha.go index 2c88a51..cbfc396 100644 --- a/captcha.go +++ b/captcha.go @@ -78,6 +78,13 @@ func init() { } } +// LoadFont let you load an external font +func LoadFont(fontData []byte) error { + var err error + ttfFont, err = freetype.ParseFont(fontData) + return err +} + // New creates a new captcha. // It returns captcha data and any freetype drawing error encountered func New(width int, height int, option ...SetOption) (*Data, error) { diff --git a/captcha_test.go b/captcha_test.go index 0f1d3d1..eaebc66 100644 --- a/captcha_test.go +++ b/captcha_test.go @@ -2,6 +2,7 @@ package captcha import ( "bytes" + "golang.org/x/image/font/gofont/goregular" "image/color" "testing" ) @@ -36,3 +37,15 @@ func TestCovNilFontError(t *testing.T) { ttfFont = temp } + +func TestLoadFont(t *testing.T) { + err := LoadFont(goregular.TTF) + if err != nil { + t.Fatal("Fail to load go font") + } + + err = LoadFont([]byte("invalid")) + if err == nil { + t.Fatal("LoadFont incorrecly parse an invalid font") + } +}