2
我正在用Gdi +繪製一些文字,並且試圖確保我創建的字體確實存在。我注意到,無論我指定什麼字體,它都能正常工作。我有以下代碼:爲什麼創建基於不存在的FontFamily的字體工作?
Font font(TEXT("SomeGibberishFOEIHSFUE"), 12, 0, UnitPoint);
if (!font.IsAvailable())
exit(0);
// draw text
我沒有安裝我叫SomeGibberishFOEIHSFUE
系統上的字體,但IsAvailable
回報TRUE
和程序運行,並繪製文本,看起來像Arial字體,而不是退出的字體。爲什麼是這樣?
如果我使用IsAvailable
錯誤,我應該使用什麼函數來判斷Font的創建是否成功?我也試過GetLastStatus
,它返回Ok
。
謝謝。 FontFamily是否創建了'Font',需要至少與'Font'一樣長,還是可以在'Font'之前銷燬?另外,我沒有使用.NET版本,我使用的是原生C++版本。 – 2012-01-29 22:34:21
這裏僅用於測試字體是否存在。當您對家庭實際可用時感到高興時,它不會連接到您創建的Font實例。 Windows遵循阻力最小的路徑。你喜歡什麼樣的服務?選擇「該程序崩潰,'字體不可用'信息」。或者「它看起來不像你手冊中的屏幕截圖」。 Windows中的字體回退功能確保在後一種情況下會發生合理的事情。除非它是一個符號字體。 – 2012-01-29 23:00:45