Go
golang
gxui

Google gxuiで日本語を扱う

完成品

手順

1: まずはgolangでgxuiセットアップする。

$ cd
$ go get -u github.com/google/gxui/...

2: 日本語ttfファイルをダウンロードして端末にインストールする。

  • githubのURL指定だとうまくいかないので端末からttfファイルをセットアップする方法となります。
  • Screen Shot 2017-07-17 at 0.11.07.png

3: mkfont.goファイル修正

$ cd go/src/github.com/google/gxui/gxfont
$ vim mkfont.go

↓こんな感じにgithub.comからttfファイルを取得するのではなくローカル端末から取得するように修正する。

var urls = map[string]string{
    //  "roboto_regular":  "https://github.com/google/fonts/raw/master/apache/roboto/Roboto-Regular.ttf",
    //  "droid_sans_mono": "https://github.com/google/fonts/raw/master/apache/droidsansmono/DroidSansMono.ttf",
    "sawarabi": "hogehoge",
}
func write(name, url string) {
    //  resp, err := http.Get(url)
    //  if err != nil {
    //      log.Fatal(err)
    //  }
    //  defer resp.Body.Close()
    //  data, err := ioutil.ReadAll(resp.Body)

    fp, err := os.OpenFile("/Download/SawarabiGothic-Regular.ttf", os.O_RDONLY, 0644)

4: mkfont.go実行

$ cd go/src/github.com/google/gxui/gxfont
$ go run mkfont.go

するとsawarabi.goファイルが生成される。

5: gxfont.go修正

$ vim go/src/github.com/google/gxui/gxfont/gxfont.go
var (
    // Default is the standard GXUI sans-serif font.
    Default []byte = inflate(roboto_regular)
    // Monospace is the standard GXUI fixed-width font.
    Monospace []byte = inflate(droid_sans_mono)

    Nihongo []byte = inflate(sawarabi)  追加
)

6: フォントを指定してあげると日本語になる。

// theme
theme := flags.CreateTheme(driver)
font, err := driver.CreateFont(gxfont.Nihongo, 30)
if err != nil {
    panic(err)
}
theme.SetDefaultFont(font)

以上