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. Angular2/Webpack:CSSファイル内に読み込まれるフォントを読み込む方法は?
- 2. CSSとフォント読み込み
- 3. 埋め込みリソースからフォントを直接読み込む方法
- 4. JaspersReportを使用してフォントを読み込む際の問題
- 5. CSSでIEにwoff2フォントを読み込む方法は?
- 6. Android以外のフォントをAndroidに読み込む方法
- 7. フォントフェイスオブザーバーと非同期でGoogleフォントを読み込む方法
- 8. BlackBerry OS 4.6のTTFファイルのフォントを読み込む
- 9. ディスクからフォントを読み込むには?
- 10. 大量のGoogle Webフォントを読み込む方法は?
- 11. Lotus Dominoのファイルリソースからフォントを読み込む方法は?
- 12. Pygame外部フォントファイルからフォントを読み込む
- 13. iam 11.1.2のXamarin.Forms:Webviewがより大きなフォントを読み込む
- 14. 負の後読み代替
- 15. C++ Builder BerlinでメモリストリームからFiremonkey(FMX)メモコンポーネントを読み込む方法は?
- 16. Googleフォントの読み込み方法
- 17. C# - 読み込みとプレビューのフォント
- 18. ページの読み込み中にモーダルを読み込む読み込み後に
- 19. as3にフォントを埋め込まずにフォントを動的に読み込む必要があります
- 20. 大きなテキストファイルを読み込む代わりに - Swift
- 21. Backbone.D3ViewをjQueryバックボーンの代わりに読み込む方法
- 22. Windowsフォントを読む
- 23. Default.pngイメージの読み込みインジケータを読み込む方法
- 24. 画像読み込み中にアイコンを読み込む
- 25. C#読み込み/テキストファイルをListViewに読み込む
- 26. ホームページの読み込み後にイメージを読み込む方法
- 27. XMLを読み込むと
- 28. オーディオを読み込むrlp
- 29. C++ - セグメンテーションエラーバイナリファイルを読み込む
- 30. ゲームビットマップを読み込む:ベストプラクティス
DoCleanup()は機能しますか?つまり、ループの後半に既存のインデックスを削除し始めるということです。 – arthurprs
素晴らしいスポット!一定。 – Pateman
HFONTはウィンドウ中心のサウンドです。少なくとも、Windows以外のプラットフォームでは、Firemonkeyでこれがうまくいくとは思っていません。 –