가지고 있는 ttf 혹은 hft 파일로 글꼴 적용하기

        int fontType = 1;
        string fontName = "양재와당체M";

HWPCONTROLLib.DHwpAction dact = (HWPCONTROLLib.DHwpAction)axHwpCtrl1.CreateAction(“CharShape”);
HWPCONTROLLib.DHwpParameterSet dset = (HWPCONTROLLib.DHwpParameterSet)dact.CreateSet();
dact.GetDefault(dset);
dset.SetItem(“FaceNameUser”, fontName);
dset.SetItem(“FontTypeUser”, fontType);
dset.SetItem(“FaceNameSymbol”, fontName);
dset.SetItem(“FontTypeSymbol”, fontType);
dset.SetItem(“FaceNameOther”, fontName);
dset.SetItem(“FontTypeOther”, fontType);
dset.SetItem(“FaceNameJapanese”, fontName);
dset.SetItem(“FontTypeJapanese”, fontType);
dset.SetItem(“FaceNameHanja”, fontName);
dset.SetItem(“FontTypeHanja”, fontType);
dset.SetItem(“FaceNameLatin”, fontName);
dset.SetItem(“FontTypeLatin”, fontType);
dset.SetItem(“FaceNameHangul”, fontName);
dset.SetItem(“FontTypeHangul”, fontType);
dset.SetItem(“TextColor”, 0x0000FF);
dset.SetItem(“Height”, 8000);
dact.Execute(dset);

현재 위와 같은 코드로 글꼴을 적용하고 있습니다.
그런데 시스템 상에서 제공하는 글꼴들 뿐만 아니라 제가 현재 가지고 있는 다른 ttf 혹은 hft 파일을 통해 그 폰트를 적용하려면 어떻게 해야하는지 알고 싶습니다! (특히 hft 파일!) ttf 혹은 hft 파일 경로를 통해 글꼴을 적용하거나 하는 방법이 있을까요?

감사합니다.

안녕하세요. 한컴디벨로퍼입니다.

현재 담당자가 내용을 확인하고 있습니다. 조금만 기다려 주세요.
아울러 동일한 내용의 문의글을 다시 게시해주신 바, 운영상 착오를 방지하기 위해 해당 문의글은 숨김 처리하도록 하겠습니다. 이점 부디 너른 양해 부탁 드립니다.

한컴디벨로퍼를 이용해 주셔서 감사합니다.

1개의 좋아요

안녕하세요

아직 답변이 달리지 않아서 댓글 남깁니다. 확인 후 해당 질문에 대한 답변 남겨주시면 정말 감사하겠습니다…!

안녕하세요. 답변이 늦어 죄송합니다.

질문이 hft나 ttf폰트의 경로를 주고 컨트롤로 폰트 설정을 하고 싶으신 걸까요?

한글컨트롤에서는 폰트 경로를 통해 폰트 설정을 할 수 있는 API는 제공되지 않습니다.

폰트가 설치되어야 해당 폰트를 사용할 수 있습니다.

더 궁금한 점 있으시면 언제든지 문의주세요.

답변 정말 감사합니다!

말씀해주신대로 수동 폰트 설치를 하기 위해 현재 한컴오피스에서 제공하지 않는 HFT 폰트 파일을 설치하고자 합니다.
(예를 들면 한글2.0(옛날)의 HANGT.HFT, HANMJ.HFT, HANPG.HFT, HANSM.HFT(파일 수정 날짜 1992년) 등등이요…! 현재 소지하고 있는 파일입니다.)

이 파일들을 ‘C:\Program Files (x86)\Hnc\Office 2020\HOffice110\Shared\Fonts’ 와 같은 파일 경로에 넣으면 자동으로 적용이 되나요? 어떠한 작업을 추가로 해주어야 하는지, 그리고 “HANGT.HFT, HANMJ.HFT, HANPG.HFT, HANSM.HFT” 각각의 파일들의 폰트명을 어떻게 확인할 수 있는지 알려주시면 감사하겠습니다…! (오래전 폰트여서 그런지 한컴오피스 제공 글꼴 pdf에서 이게 어떤 글꼴 파일인지 이름을 찾을 수가 없습니다ㅠㅠ)

+) 추가적인 질문이며 메일로 문의드렸는데 답장을 받지 못해서 여기서 여쭤봅니다. 12월 31일 부로 hwpctrl의 서비스가 종료된다는 공지를 보았는데 그렇다면 이미 기존의 hwpctrl를 이용하여 빌드/배포되어진 window c# 프로그램의 동작도 멈추게 되는건가요?

감사합니다!

안녕하세요.

해당 폰트 목록 파일로 첨부 부탁드려도 될까요?

저도 테스트를 좀 해봐야 할 것 같습니다.

폰트 zip파일 첨부해드립니다! 링크가 제대로 동작하지 않는다면 말씀해주세요!

+) 추가적인 질문이며 메일로 문의드렸는데 답장을 받지 못해서 여기서 여쭤봅니다. 12월 31일 부로 hwpctrl의 서비스가 종료된다는 공지를 보았는데 그렇다면 이미 기존의 hwpctrl를 이용하여 빌드/배포되어진 window c# 프로그램의 동작도 멈추게 되는건가요?

위 질문에 대한 답변도 부탁드려요…! 감사합니다ㅠㅠ

사내시스템에서 구글 드라이버 접근이 안됩니다 ㅠ
댓글에 파일 첨부하기 있으니 여기서 첨부 부탁드립니다.

한글컨트롤은 12월 31일부로 서비스가 종료되긴하나 기존에 배포되어있는 프로그램이나 추가적인 개발은 가능합니다.

*.zip 이나 폰트 파일은 허용되는 확장자가 아니어서 첨부가 어려운 것 같습니다…!

드롭박스도 사내 내부망에서 동작 안할 수도 있을 것 같긴 한데 안되신다면 이메일 주소 알려주시면 보내드리겠습니다…!

답변 감사합니다 :slight_smile:

안되네요…

이메일은 개인정보라 여기에 적는건 포럼 정책에 위배됩니다.

압축 후 확장자만 txt로 변경해서 첨부 가능 할 듯 합니다.

그럼 제가 받아서 변경 후 압축 해제하면 될 거 같아요

HANGT.txt (195.9 KB)

첨부하였습니다! 확장자를 zip으로 바꿔주시면 됩니다!

안녕하세요.

해당 폰트들을 현재 버전의 한/글에서 사용할 수 있는지 확인해봤는데

현재 한/글 구조에서는 호환되지 않는 형태로 폰트가 만들어져 있는지 폰트 추가가 되지 않습니다.
(워낙 구 버전 폰트라… 현재 한/글 엔진은 많이 바뀌어서 해당 폰트 정보를 읽지를 못하네요 )

도움을 드리지 못해 죄송합니다.

다른 추가 문의사항 있으시면 언제든지 문의주세요.

1개의 좋아요

답변 감사드립니다!

그렇다면 구 버전 htf 파일 적용을 돕는 별도의 유틸리티나 방법이 혹시 있을까요? (hwpctrl x)

오직 한글 프로그램에 최적화된 폰트 파일이라 레퍼런스를 찾는 것이 쉽지 않아 계속 문의드려 번거롭게 해드려서 죄송합니다ㅠㅠ

안녕하세요.

워낙 오래된 폰트라 회사 내에서도 기록을 찾을 수가 없네요…

기다리셨을텐데 만족스러운 답변을 드리지 못해 죄송합니다.

아닙니다. 함께 고민해주셔서 감사합니다!
한가지 질문이 더 있습니다.
C:\Program Files (x86)\Hnc\Office 2020\HOffice110\Shared\Fonts
위의 파일 경로에 ‘강낭콩’ 글씨체인 ‘HGKDNYBN.HFT’ 파일이 있습니다.
그리고 실제로 한글 2020을 실행시키면 강낭콩 글씨체가 폰트 드롭박스에서 ‘TH’ 아이콘으로 뜨면서 폰트적용이 잘 되는 것을 확인할 수 있습니다. 또한 해당 파일을 ‘axHwpCtrl1.Open()’ 메소드를 통해 호출하면 c# 코드로 짜여진 프로그램 내에서도 폰트가 적용된 채로 잘 로드되는 것을 확인할 수 있습니다.
이 때,

HWPCONTROLLib.DHwpAction dact = (HWPCONTROLLib.DHwpAction)axHwpCtrl1.CreateAction("CharShape");
HWPCONTROLLib.DHwpParameterSet dset = (HWPCONTROLLib.DHwpParameterSet)dact.CreateSet();
            dact.GetDefault(dset);
dset.SetItem("FaceNameUser", "강낭콩");
dset.SetItem("FontTypeUser", 2);

이렇게 폰트타입을 2로 지정(HTF)해서 폰트를 적용하는 것이 안됩니다. 어떻게 하면 되나요?

  1. 폰트타입을 1로 지정하고 window에 설치된 ttf 폰트를 적용하는 것은 문제없이 잘 작동합니다.
  2. "FaceNameUser"의 fontName으로 들어가는 인자의 값을 어떻게 알 수 있습니까? 예를 들어 HGKDNYBN.HFT 폰트를 적용하기 위해 dset.SetItem(“FaceNameUser”, “강낭콩체”);가 아닌 dset.SetItem(“FaceNameUser”, “강낭콩”);이 들어가야 한다는 것을 어떻게 알 수 있나요? 그냥 아래와 같은 pdf 문서를 참고하여 글꼴명을 지정해주면 되나요?
    20190429111921708001.txt (113.6 KB)
    위 txt 파일 확장자를 수동으로 pdf로 바꿔주시면 됩니다.

여러번 질문드려 죄송합니다ㅠㅠ

아직 답변이 달리지 않아서 댓글 남깁니다. 확인 후 해당 질문에 대한 답변 남겨주시면 정말 감사하겠습니다…!ㅠㅠ
폰트의 늪에 빠뜨려 죄송합니다…

안녕하세요. 답변이 늦어 죄송합니다.

  1. 일반적으로 한글에서 폰트를 설정하게 되면"대표 폰트"로 폰트를 설정하게 되며 이는 문자의 각 영역별로 어울리는 폰트 집합을 지정해둔 것을 의미합니다.
    한컴오피스 2022 한/글 도움말

각 영역은 "한글, 영문, 한자, 일어, 외국어, 기호, 사용자"의 영역으로 나누어져 있으며 질문자께서 작성하신 샘플코드는 "사용자"영역에만 지정을 했기 때문에 폰트적용이 되지 않을 것으로 보였을 수도 있습니다(아마 한글문자열을 입력하셨을거라고 예상합니다)

예를 들어 대표폰트로 강낭콩을 지정하게 되면 각 영역에는
“한글” : “강남콩”
“영어” : “오이”
“한자” : “한양중고딕”
“일어” : “한양중고딕”
“외국어” : " 한양신명조"
“기호” : " 한양중고딕"
“사용자” : “명조”
가 기본으로 설정되어있으며 한글을 실행 후 대표폰트로 강낭콩을 적용한 뒤 드롭박스로 폰트 영역을 변경해보면 위에 나열한대로 바뀌는것을 확인하실 수 있습니다.

따라서 “한글 문자열” 영역에 강낭콩 폰트를 지정하려면
SetItem(“FaceNameUser”, “강낭콩”)이 아니라
SetItem(“FaceNameHangul”, “강낭콩”)로 지정했으면 아마 확인이 가능하셨을 겁니다.

하지만 일반적으로 폰트를 적용하고 다양한 문자열을 입력할 수도 있으니 폰트를 설정할때는 모든 영역에 사용하고자 하는 폰트를 같이 설정합니다.

HWPCONTROLLib.DHwpAction dAction = (HWPCONTROLLib.DHwpAction)axHwpCtrl1.CreateAction(“CharShape”);
HWPCONTROLLib.HwpParameterSet dSet = (HWPCONTROLLib.HwpParameterSet)dAction.CreateSet();
dAction.GetDefault(dSet);

dSet.SetItem(“FaceNameHangul”, “강낭콩”);
dSet.SetItem(“FontTypeHangul”, 2);
dSet.SetItem(“FaceNameLatin”, “오이”);
dSet.SetItem(“FontTypeLatin”, 2);
dSet.SetItem(“FaceNameHanja”, “한양중고딕”);
dSet.SetItem(“FontTypeHanja”, 2);
dSet.SetItem(“FaceNameJapanese”, “한양중고딕”);
dSet.SetItem(“FontTypeJapanese”, 2);
dSet.SetItem(“FaceNameOther”, “한양중고딕”);
dSet.SetItem(“FontTypeOther”, 2);
dSet.SetItem(“FaceNameSymbol”, “한양신명조”);
dSet.SetItem(“FontTypeSymbol”, 2);
dSet.SetItem(“FaceNameUser”, “명조”);
dSet.SetItem(“FontTypeUser”, 2);

dAction.Execute(dSet);

위와 같이 적용을 하시면 됩니다.

  1. "FaceNameUser"의 fontName으로 들어가는 인자의 값을 어떻게 알 수 있습니까?
    → 질문에서 말씀하신대로 첨부파일에 있는 목록에서 폰트명을 확인할 수 있습니다.
    이 부분이 현재 한컴에서 제공하고 있는 HFT폰트 목록이며, 이 목록에 없는 폰트는 이름을 확인하기 어렵습니다.
    그래서 지난번에 질문주신 옛날폰트도 이름이 확인이 안되는 부분이구요…

도움이 되셨으면 좋겠네요.

더 궁금한 점 있으시면 언제든지 문의주세요.

1개의 좋아요

와… 해결됐어요… Hangul이 아닌 다른 영역에 강낭콩을 넣으면 적용이 안돼서 아예 한글 문자열에도 제대로 동작하지 않는 거였군요…! 덕분에 문제가 해결되었습니다ㅠㅠ 친절하고 정확한 답변 정말 감사드립니다!!! :+1: