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. Firemonkey替代VCL ShortCut()函數
- 2. 如何在App Engine上加載PIL ImageFont的替代字體?
- 3. 在Firemonkey中設置字體
- 4. 在firemonkey中安裝字體
- 5. Firemonkey XE4字體與GlobalUseDirect2D =假
- 6. 最好的芝加哥字體替代
- 7. jQuery加載()替代
- 8. 在firemonkey中加載dylib
- 9. 用什麼字體替代
- 10. 字體鎖的替代
- 11. 替代字體真棒?
- 12. 定義替代字體
- 13. WordPress加載.SCSS代替.CSS
- 14. Android:替代GIF加載器?
- 15. 替代預加載圖像
- 16. Flex:Runtime字體加載
- 17. 代替某些字體代碼的字體圖標的問號
- 18. Delphi Firemonkey無法正確顯示字體
- 19. 在FireMonkey的球體上書寫文字
- 20. 替代字/用粗體字串/串
- 21. Web字體加載器 - 何時加載所有字體?
- 22. 使用RTTI加載FireMonkey風格資源
- 23. @字體面不加載字體
- 24. 字體很棒字體沒有加載?
- 25. 在加載頁面時加載字體
- 26. 如何將HTML字符串加載到Firemonkey TWebBrowser中?
- 27. 文件加載一些字節都被替換爲Unicode的替代字符,同時加載文件
- 28. 尋找「DIN」字體的替代品
- 29. CSS可以用於替代字體嗎?
- 30. 替代字體和Word自動化
DoCleanup()的工作原理?我的意思是,在循環的後半部分,您將開始刪除不存在的索引。 – arthurprs 2012-03-04 19:57:51
很棒的地方!固定。 – Pateman 2012-03-04 20:08:31
HFONT聽起來非常以Windows爲中心。我懷疑這對Firemonkey是否有效,至少在Windows以外的任何平臺上都是如此。 – 2012-03-05 13:04:00