export.h
            
            
              cpp
              
              
            
          
          #define FONTVIEW_API __declspec(dllimport)
typedef void* GoFontSetPtr;
#ifdef __cplusplus
extern "C"{
#endif
FONTVIEW_API GoFontSetPtr openFontSet(const char* stream,size_t size);
FONTVIEW_API void freeFontSet(GoFontSetPtr fontset);
#ifdef __cplusplus
}
#endiffontview.go
            
            
              Go
              
              
            
          
          /*
#cgo CXXFLAGS: -std=c++11
#cgo CFLAGS: -I${SRCDIR}/include
#cgo LDFLAGS: -L${SRCDIR}/lib -lstdc++ -lfontview_d -lfreetyped -lharfbuzz_d
#include "export.h"
#include <stdlib.h>
*/
import "C"
import (
	"encoding/json"
	"errors"
	"fmt"
	"io/ioutil"
	"path/filepath"
	"strings"
	"unsafe"
)
func parseFont(path string) (err error) {
	if len(path) == 0 {
		return
	}
	// file name
	_, fileName := filepath.Split(path)
	// read file
	b, err := ioutil.ReadFile(path)
	if err != nil {
		fmt.Printf("FontType.ReadFile err: %v, fileName: %v\n", err, fileName)
		return
	}
	// 解析字体集
	cData := (*C.char)(unsafe.Pointer(&(b[0])))
	cDataLen := GoIntToCInt(len(b))
	fontSet := C.openFontSet(cData, cDataLen)
	if fontSet == nil {
		fmt.Printf("open font return nil, fileName: %v\n", fileName)
		err = errors.New("open font return nil")
		return
	}
	defer C.freeFontSet(fontSet)
	return
}输出
parse FontType path: C:\Windows\Fonts\kartikab.ttf
parse FontType path: C:\Windows\Fonts\kokila.ttf
parse FontType path: C:\Windows\Fonts\kokilab.ttf
parse FontType path: C:\Windows\Fonts\kokilabi.ttf
parse FontType path: C:\Windows\Fonts\kokilai.ttf
parse FontType path: C:\Windows\Fonts\l_10646.ttf
参考
创作不易,小小的支持一下吧!

