2
A
답변
2
FireMonkey에서 작동하는지 모르지만이 코드는 표준 Delphi 응용 프로그램에 사용자 정의 글꼴을로드하려고 할 때 유용했습니다.
unit UExternalFonts;
interface
uses
Windows, SysUtils, Messages, Classes, Generics.Collections;
type
{ .: TExternalFonts :. }
TExternalFonts = class sealed(TList<HFONT>);
var
ExternalFonts: TExternalFonts;
function AddExternalFont(const AFileName: String): HFONT; overload;
function AddExternalFont(const AStream: TStream): HFONT; overload;
implementation
{ .: DoCleanup :. }
procedure DoCleanup();
var
I: Integer;
begin
for I := ExternalFonts.Count -1 downto 0 do
begin
RemoveFontMemResourceEx(ExternalFonts[I]);
ExternalFonts.Delete(I);
//SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
end;
end;
{ .: AddExternalFont :. }
function AddExternalFont(const AFileName: String): HFONT; overload;
var
FS: TFileStream;
begin
Result := 0;
if not FileExists(AFileName) then
exit;
FS := TFileStream.Create(AFileName, fmOpenRead + fmShareExclusive);
try
Result := AddExternalFont(FS);
finally
FS.Free();
end;
end;
{ .: AddExternalFont :. }
function AddExternalFont(const AStream: TStream): HFONT; overload;
var
MS: TMemoryStream;
Temp: DWORD;
begin
Result := 0;
if not Assigned(AStream) then
exit;
Temp := 1;
MS := TMemoryStream.Create();
try
MS.CopyFrom(AStream, 0);
Result := AddFontMemResourceEx(MS.Memory, MS.Size, nil, @Temp);
if (Result <> 0) then
ExternalFonts.Add(Result);
//SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
finally
MS.Free();
end;
end;
initialization
ExternalFonts := TExternalFonts.Create();
finalization
DoCleanup();
ExternalFonts.Free();
end.
관련 문제
- 1. VCL ShortCut() 함수에 대한 Firemonkey 대체
- 2. 글꼴로드 중 페이지가 멈춤
- 3. 외부 글꼴로드 및 C#
- 4. 파일에서 VIM 글꼴로드
- 5. wxPython : 파일에서 글꼴로드
- 6. WPF - 스트림에서 글꼴로드?
- 7. Flash/AS3의 런타임 글꼴로드
- 8. Silverlight에서 Glyphs 용 글꼴로드
- 9. 파일에서 pango로 글꼴로드?
- 10. Android : SD 카드에 맞춤 글꼴로드
- 11. Adobe Flex, 모듈에서 포함 글꼴로드
- 12. Windows API를 사용하여 ttf 글꼴로드
- 13. actionscript에 사용자 정의 글꼴로드 3
- 14. Firemonkey - 메시지 처리
- 15. 픽셀 쉐이더 모델은 FireMonkey
- 16. iAd with Firemonkey?
- 17. 런타임시 FireMonkey 속성 편집기
- 18. Mac의 Firemonkey 배포 폴더
- 19. Mac OSX에서 Firemonkey 인쇄
- 20. FireMonkey 응용 프로그램의 TFileOpenDialog
- 21. SynEdit for Firemonkey?
- 22. 런타임 TTabItem 만들기, firemonkey
- 23. 'rich'기능은 FireMonkey 프레임 워크입니다
- 24. Firemonkey ScrollBox 버그
- 25. RTM으로 FireMonkey 스타일 리소스로드하기
- 26. Firemonkey 용 핸들
- 27. Firemonkey 어플리케이션 단위 테스트
- 28. firemonkey + xcode, 혼합 코드
- 29. Delphi XE2 : firemonkey 및 IDirect3DDevice9
- 30. firemonkey HUD 창을 만드는 방법
DoCleanup()이 작동합니까? 즉, 루프의 후반부에 기존 인덱스가 아닌 인덱스를 삭제하기 시작합니다. – arthurprs
그레이트 스포트! 결정된. – Pateman
HFONT는 창 중심적으로 들립니다. 적어도 창문이 아닌 다른 어떤 플랫폼에서도 Firemonkey가 작동하는 것은 의심 스럽습니다. –