이번에는 Go언어와 gohwp를 이용하여 HWP 글자 모양을 어떻게 다루는지 보이도록 하겠습니다.
글자 모양은 한글 HWP 에서 Alt+L 을 누르면 보이는 다음 그림을 이야기 합니다.
앞선 "글꼴 바꾸기" 포스팅에서 언급하였듯이 글자 모양을 바꾸는 것은 CharShape라는 액션을 이용합니다. 위 그림에서 보인 설정 창에 있는 옵션들을 다루는 액션입니다.
파라미터는 HCharShape 입니다. 워낙 옵션이 많은 액션이다보니, ParameterSetObject.pdf 파일을 참조하셔야 합니다. 근데, 다르게 생각하면 일반적인 문서 편집 과정에서 글자 모양에서 다루는 기능은 많지 않습니다.
글씨 크기, 자간, Bold, Italic, 윗첨자, 아랫첨자, 밑줄, 취소선 등이 그나마 자주 다루는 것이 아닐까 싶습니다. 이들에 대한 예제 코드는 아래와 같습니다.
package main
import (
"fmt"
"github.com/b612nightsky/gohwp"
)
func main() {
hwp := gohwp.Initialize()
defer hwp.UnInitialize()
hwp.ShowWindow(true)
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModuleExample")
// 처음 기본
hwp.ActionWithParameters("InsertText", "Text", "기본 글씨 크기 10p\r\n")
// HAction메서드로 글자 모양 바꾸기
act := hwp.HAction()
set := hwp.HParameterSet().HCharShape()
act.GetDefault("CharShape", set.HSet())
set.Height(hwp.PointToHwpUnit(20)) // 글자 크기 20p
act.Execute("CharShape", set.HSet())
hwp.InsertText("글씨 크기 20p\r\n")
set.Height(hwp.PointToHwpUnit(10)) //글자 크기 10p 되돌리기
set.SpacingHangul(-50) // 한글 자간 -50%
act.Execute("CharShape", set.HSet())
hwp.InsertText("한글 자간 -50%\r\n")
set.SpacingHangul(0) // 한글 자간 0%
act.Execute("CharShape", set.HSet())
hwp.ActionObject().ActionShape().CharShapeBold() // Bold 적용
hwp.InsertText("Bold 적용\r\n")
hwp.Run("CharShapeBold") // Bold 해제
hwp.Run("CharShapeItalic") // Italic 적용
hwp.InsertText("Italic 적용")
set.Italic(0) // Italic 해제
act.Execute("CharShape", set.HSet())
hwp.ActionObject().ActionShape().CharShapeSuperscript()
hwp.InsertText("윗 첨자")
hwp.ActionObject().ActionShape().CharShapeSubscript()
hwp.InsertText("아랫 첨자\r\n")
hwp.ActionObject().ActionShape().CharShapeSuperSubscript()
hwp.ActionObject().ActionShape().CharShapeUnderline()
hwp.InsertText("밑줄 \r\n")
hwp.ActionObject().ActionShape().CharShapeUnderline()
hwp.ActionObject().ActionShape().CharShapeCenterline()
hwp.InsertText("취소선 \r\n")
}
위 코드를 실행하면 다음과 같이 출력됩니다.
하나씩 살펴보겠습니다.
act := hwp.HAction()
set := hwp.HParameterSet().HCharShape()
act.GetDefault("CharShape", set.HSet())
set.Height(hwp.PointToHwpUnit(20)) // 글자 크기 20p
act.Execute("CharShape", set.HSet())
여기서는 HAction을 이용했습니다. 앞서 말씀드렸듯이 글자 모양의 액션은 CharShape, 파라미터 세트는 HCharShape입니다.
글자 크기를 나타내는 변수는 Height로 20 point 크기로 지정하였습니다. 본래 Height 등 HWP의 많은 숫자 값은 HwpUnit이라는 자체 단위를 쓰고 있습니다. 이게 직관적이지 않기 때문에 PointToHwpUnit() 메서드로 변환시킵니다.
set.SpacingHangul(-50) // 한글 자간 -50%
act.Execute("CharShape", set.HSet())
자간을 -50%로 줄였습니다. 앞서 액션 act와 파라미터 세트 set을 선언하였기 때문에 그냥 가져다 썼습니다. SpacingHangul()은 "한글"의 자간입니다. 영문 등 알파벳은 SpacingLatin이고 일본어, 한자, 기호마다 각각 적용해줘야 합니다.
앞서 파라미터 세트에서 Bold라는 변수가 있어 0 또는 1로 Bold를 적용하거나 취소할 수 있습니다. 하지만 아래와 같이 편하게 한 줄로 적용할 수 있습니다.
hwp.ActionObject().ActionShape().CharShapeBold() // Bold 적용
또는 아래 Italic 적용을 하는 것처럼 Run()메서드를 사용해도 됩니다.
hwp.Run("CharShapeItalic") // Italic 적용
이와 같은 방법으로 윗 첨자, 아랫 첨자, 밑줄, 취소선을 다음과 같이 각각
- CharShapeSuperscript
- CharShapeSubscript
- CharShapeUnderline
- CharShapeCenterline
HWP를 사용하시는 분들 상당수는 정부 기관이나 공공기관, 공기업, 교육기관, 연구기관 등에서 근무하시는 분들, 혹은 이와 관련된 분들이 아닐까 싶습니다. 이 곳에 종사하시는 분들의 문서를 가만히 살펴보면 특징이 있습니다. 자간 조정으로 단어가 줄바꿈으로 끊기지 않고 가독성을 높이고 있습니다. 그리고 절대 장난스러운 글꼴을 쓰지 않고 명조, 고딕 계열의 글꼴을 주로 씁니다.
한글 HWP와 같은 문서 편집기에서는 글자 모양을 편집하는 다양한 옵션을 제공하고 있습니다. 적절한 글꼴, 크기, 색상 등을 선택하여 글자를 시각적으로 표현함으로써 가독성, 전문성 및 설득력 등의 효과를 가져올 수 있기에 아주 중요한 기능이니, 잘 활용하시기 바랍니다.