CHwpObject::ScanFont() 함수

안녕하세요. MFC에서 오토메이션을 이용하는 개발자입니다.
한글 파일 작성에 사용된 폰트의 종류를 찾는 작업을 하다가, 오토메이션 API함수인 ScanFont() 를 찾았습니다.
그런데, 함수를 실행한 결과값이 BOOL 타입이더군요. 찾아놓은 폰트 목록은 어떻게 확인해야 하는지 도무지 알 수가 없네요. GetScannedFontNames()라는 API를 이용하면 된다고 하는데 제가 import 한 tlb 에는 그 함수가 없습니다.
어떻게 하면 이 API 들을 제대로 사용할 수 있는지 조언 부탁드립니다.
제가 사용하고 있는 버전은 2020입니다. 감사합니다.

1개의 좋아요

안녕하세요 tayri님 ^^

ScanFont API의 경우 문서내부의 폰트를 스캔하는 api 입니다.
bool 값을 통해 해당 api 성공여부를 체크합니다.

이렇게 ScanFont를 실행하면 오토메이션 내부에 폰트를 가지고 있게됩니다.

이러한 폰트 리스트는 GetFontList를 통해 가져올수 있습니다.

String 타입으로 리턴해주며 각 폰트들은 문자코드 ‘0x02’ 를 통해 구분해주고 있습니다.
해당값을 가지고 구분해주시면 됩니다 !

아래 MFC 예제코드 전달드립니다.
확인 후 추가 문의사항이 있으시다면 댓글 남겨주세요 ~!
즐거운 금요일 되시길 바랍니다 :slight_smile:

→ 추가 : 저는 한글 2018의 HwpObject.tlb를 사용하여 테스트해봤습니다 ~!

	CHwpObject myHwpObj;
	if (myHwpObj.CreateDispatch(L"HwpFrame.HwpObject.2") == TRUE) {
		myHwpObj.RegisterModule(L"FilePathCheckDLL", CComVariant(L"FilePathCheckModule"));

		CXHwpWindows xWindows;
		xWindows = myHwpObj.get_XHwpWindows();

		CXHwpWindow xWindow;
		xWindow = xWindows.get_Active_XHwpWindow();
		xWindow.put_Visible(1);

		if (myHwpObj.Open(filepath, CComVariant(L""), CComVariant(L"")) == TRUE) {
			
			// 사용 되어진 폰트를 찾습니다. 
			myHwpObj.ScanFont();
			// 찾은 폰트는 컨트롤 내부에 가지고 있으며 GetFontList로 가져올수 있습니다.
			// GetFontList는 다음과 같은 값을 인자값으로 받아 처리하게 됩니다. 
			// 설정값에 따라 각 언어에 해당하는 폰트를 가져옵니다. 
			// 0 : 한글
			// 1 : 라틴
			// 2 : 한자
			// 3 : 일본어
			// 4 : 외국어
			// 5 : 기호
			// 6 : 사용자
			CString strFontList = myHwpObj.GetFontList(CComVariant(0));
			AfxMessageBox(strFontList);

GetFontList() 였군요^^ 덕분에 빨리 해결했습니다. 감사합니다.
HFT 폰트에 대한 질문도 있는데, 적당한 범주가 없네요. 어디에 문의해야 할까요?

저도 해당 부분에 대해서는 아는바가 없어 도움을 드리기 어려울것 같습니다 :disappointed_relieved:

아마 일반문의나 저희 홈페이지의 고객지원을 이용해야하면 되지 않을까 싶습니다!