Fyne를 이용해 GUI를 만들던 중 한글 출력이 안된다는 것을 뒤늦게 알게 되었네요.(아래 화면 참조). 오늘은 한글 설정하는 방법에 대해 알아보겠습니다. 샘플로 간단한 메모장 앱을 만들어보겠습니다.
1. main.go
위 샘플로 만든 앱의 코드는 아래와 같습니다.
package main
import (
"fmt"
"image/color"
_ "unicode/utf8"
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/canvas"
"fyne.io/fyne/layout"
"fyne.io/fyne/theme"
"fyne.io/fyne/widget"
)
func main() {
f := app.New()
//f.Settings().SetTheme(theme.LightTheme())
f.Settings().SetTheme(theme.DarkTheme())
w := f.NewWindow("")
//상단에 넣을 위젯 및 레이아웃 - NewFormLayout
qry := widget.NewEntry()
btn_go := widget.NewButton("New Memo", New_btn)
text := canvas.NewText("Text Object", color.White)
text.Alignment = fyne.TextAlignTrailing
text.TextStyle = fyne.TextStyle{Italic: true}
ret := fyne.NewContainerWithLayout(layout.NewFormLayout())
ret.AddObject(btn_go)
ret.AddObject(qry)
//하단에 넣을 위젯 및 전체 레이아웃 구성 - NewBorderLayout
label2 := widget.NewLabel("Simple Memo")
labox2 := fyne.NewContainerWithLayout(layout.NewCenterLayout(), label2)
b1 := widget.NewButton("Go1", func() { fmt.Println("Go1 Button") })
b1.ExtendBaseWidget(b1)
b2 := widget.NewButton("Go2", func() { fmt.Println("Go2 Button") })
b2.ExtendBaseWidget(b2)
out_entry := widget.NewMultiLineEntry()
out_entry.SetPlaceHolder("결과...")
out_entry.ExtendBaseWidget(out_entry)
frm := fyne.NewContainerWithLayout(layout.NewBorderLayout(ret, labox2, nil, nil)) //상, 하, 좌(없음), 우(없음)
frm.AddObject(ret) //상단
frm.AddObject(labox2) //하단
frm.AddObject(out_entry) //좌-우가 없으므로 5번째에(center) 추가됨
w.SetContent(frm)
w.Resize(fyne.Size{Height: 640, Width: 480})
w.ShowAndRun()
}
2. 한글 폰트파일 다운로드
네이버에서 '나눔고딕 다운' 으로 검색하면 무료로 다운받을 수 있는 폰트 링크들이 나타납니다.
기본이 되는 폰트를 다운받아서 현재의 프로젝트 폴더에 위치시킵니다.
3. IDELite 환경설정
다음으로 환경설정에 변수를 추가해주도록 하겠습니다. Tools -> Edit current environment 메뉴로 가서..
FYNE_FONT=NanumGothic.ttf 라고 한줄을 추가해 넣습니다.
비교적 간단하네요. 이렇게 설정하고 실행해봅시다.
네,,,잘~ 나옵니다.
그럼 모두 건승하세요~
~~끝~~