이 글에서는 Go언어 및 gohwp 라이브러리를 이용하여 한글 HWP 글꼴(폰트) 변경을 하는 방법을 보여드리도록 하겠습니다.
문서 작성 과정에서 글꼴 변경은 필수적인 작업 중 하나입니다. 특히 여러 사람이 작성한 문서를 취합해서 편집할 때 서로 다른 글꼴과 문단 모양 등으로 어려움을 겪을 수 있습니다.
한글 오토메이션에서 글자 모양을 바꾸는 것은 기본적으로 CharShape 액션을 이용하면 됩니다. CharShape로 다룰 수 있는 글자 모양 옵션은 글꼴, 크기, 장평, 자간, 글자색, 등등 정말 다양합니다. 하지만 여기에서는 우선 글꼴(폰트)만 설명하겠습니다. 뒤에서 언급하겠지만, Go언어에서만 해당되는 문제인지 글꼴 변경에 제약이 있다보니 내용을 한정 지었습니다.
우선 gohwp를 이용한 글꼴 바꾸는 코드는 아래와 같습니다.
HWP 글꼴 바꾸기 예제
package main
import (
"github.com/b612nightsky/gohwp"
)
func main() {
hwp := gohwp.Initialize()
defer hwp.UnInitialize()
hwp.ShowWindow(true)
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModuleExample")
// 처음 기본 글꼴
hwp.ActionWithParameters("InsertText", "Text", "안녕하세요(시작 기본 글꼴)\r\n")
// SetFont로 글꼴 바꾸기
hwp.SetFont("맑은 고딕")
hwp.InsertText("안녕하세요(맑은 고딕)\r\n")
// CreateAction메서드로 글꼴 바꾸기
act := hwp.CreateAction("CharShape")
set := act.CreateSet()
act.GetDefault(set)
set.SetItem("FaceNameHangul", "궁서체")
act.Execute(set)
hwp.InsertText("안녕하세요(궁서체)\r\n")
// HAction메서드로 글꼴 바꾸기
hact := hwp.HAction()
hset := hwp.HParameterSet().HCharShape()
hact.GetDefault("CharShape", hset.HSet())
hset.FaceNameHangul("굴림체")
hact.Execute("CharShape", hset.HSet())
hwp.InsertText("안녕하세요(굴림체)")
}
위의 코드를 실행하면 다음과 같은 문서창이 나타납니다.
위에서 3가지 방법으로 글꼴(폰트)를 바꾸었습니다.
SetFont("글꼴 이름") 메서드
첫 번째 방법은 SetFont("맑은 고딕")으로 "맑은 고딕" 글꼴로 변경하였습니다. SetFont는 제가 편의상 만들어놓은 메서드입니다. 다른 글자 모양은 다루지 않고, 오로지 글꼴을 바꾸는 데 사용됩니다.
CreateAction 메서드 활용
HAction 메서드 활용
두 번째와 세 번째 방법을 유심히 보시면 됩니다. 차이가 있는 듯 하지만 두 방법 모두 전체 흐름은 똑같습니다. 액션 및 파라미터 세트를 정의하고, 파라미터 세트를 초기화하고, 값을 넣어주고 실행하기까지 표현하는 방법이 다를 뿐 똑같은 행위를 하고 있습니다. 이 두 가지 방법을 눈에 익히셔야 합니다. 모든 액션들을 다루는 기본적인 방법입니다.
위에서 3가지 방법만 보였지만 다음과 같은 방법을 쓸 수 있습니다.
hwp.ActionWithParameters("CharShape","FaceNameHangul","맑은 고딕")
hwp.ActionObject().ActionShape().CharShape("FaceNameHangul","맑은 고딕")
한글, 영어, 일본어 등 문자별 글꼴 설정
위 예제 잘 살펴보시면 FaceNameHangul이라는 파라미터 값에 글꼴 이름을 넣어주었습니다. FaceNameHangul은 한글 문자에 대한 글꼴을 나타냅니다. 여기에서는 간단하게 보여드리기 위해서 FaceNameHangul만 보여드렸습니다.
문자에 따라 FaceNameHangul, FaceNameLatin, FaceNameHanja, FaceNameJapanese, FaceNameOther, FaceNameSymbol, FaceNameUser가 있습니다.
영문자나 한자, 기호 등까지 변경된 글꼴을 적용하려면 -Latin, -Hanja, -Symbol 등도 다 변경해야 합니다. 이게 귀찮아서 첫 번째 방법인 SetFont 메서드를 만들어 놓은 겁니다...(하지만 한글과 영어를 각각 다른 글꼴을 사용한다면 그리 유용하지 않을 경우도 있습니다.)
글꼴 목록 : 단일 목록으로 표시
아래 그림과 같이 "도구" → "환경설정" → "글꼴" 탭에서 "글꼴 목록"에서 "단일 목록으로 표시"를 하셔야 합니다. 탭별 목록으로 되어 있을 경우, 시스템 글꼴만 변경 가능합니다.
- 글자 모양은CharShape 액션을 이용
- 한글, 영어, 일본어 등 문자에 따라 글꼴 지정을 달리할 수 있음
- "도구" → "환경설정" → "글꼴" 탭에서 "글꼴 목록"에서 "단일 목록으로 표시"
유의 사항: 시스템 글꼴만 가능합니다. (24.05.07. 삭제)
위 그림은 HWP에서 글꼴을 변경할 때 볼 수 있는 글꼴 목록입니다. 앞서 보여드린 코드에서 글꼴 변경은 "시스템글꼴" 목록에 있는 글꼴(폰트)로만 변경 가능합니다. 그럼, 몇개 안되는 시스템글꼴만 사용해야 하는가 의문이 생기시겠지만, 방법이 있습니다. 시스템글꼴 목록을 수정해놓으면 됩니다.
시스템글꼼 목록 수정하기
"도구" → "환경설정" → "글꼴" 탭
위 그림을 보시면 환경설정 글꼴 탭에 "글꼴 목록 설정..."버튼이 있습니다. 해당 버튼을 누르면 아래와 같이 글꼴 목록을 설정할 수 있습니다.