2010-06-06 3 views
14

나는 사용자의 PC에있을 가능성이없는 특정 바코드 참 유형 글꼴이 필요한 앱을 만들고 있습니다.델파이에 글꼴 임베드

어떻게 든 글꼴을 응용 프로그램에 포함 할 수 있습니까? 아니면 설치 프로그램을 사용하여 글꼴을 설치해야합니까?

+5

당신은 둘 다 할 수 있습니다. 나는 1 개의 질문이있다, 당신의 글꼴이다? 또는 재배포 할 수 있습니까? –

+1

리소스로 포함시킬 수 있습니다. http://stackoverflow.com/questions/2305344/how-to-use-external-fonts –

답변

7

예, EXE 파일에 리소스로 저장할 수 있으며 사용자의 PC에서는 TResourceStream 인스턴스를 사용하여 파일로 추출 할 수 있습니다. 그런 다음 AddFontResource API 함수를 호출 할 수 있습니다. 마침내 시스템의 모든 최상위 창에 WM_FONTCHANGE 메시지를 보내야합니다 (MSDN 웹 사이트의 AddFontResource 설명의 Check Remark 섹션 참조).

예제 코드가 필요하면 알려주십시오.

+2

이 글꼴에 대한 재배포 권한이없는 경우 저작권법이나 라이센스 제한을 위반할 수 있습니다. –

10

가장 쉬운 방법은 AddFontMemResourceEx을 사용하여 글꼴이 리소스로 EXE에 포함되어있는 경우 사용하는 것입니다. 그것은 글꼴을 파일에 저장할 필요없이 메모리에서 직접 글꼴을로드 할 수 있습니다.

코드 예 :

function LoadResourceFont(const ResourceName, FontName : string) : boolean; 
var 
    ResStream : tResourceStream; 
    FontsCount : integer; 
    hFont : tHandle; 
begin 
    ResStream := tResourceStream.Create(hInstance, ResourceName, RT_RCDATA); 
    hFont := AddFontMemResourceEx(ResStream.Memory, ResStream.Size, nil, @FontsCount); 
    result := (hFont <> 0); 
    ResStream.Free(); 
end;