鑑於HFONT,我如何判斷它是否是符號字體?我使用的pdf庫需要以不同的方式處理符號字體,所以我需要一種編程方式來判斷給定的字體是否爲符號字體。如何判斷字體是否爲符號字體?
5
A
回答
5
1
馬克蘭索姆的答案將工作99.999%的時間,但有理論上的可能性,它可能會給出錯誤的答案。
爲了避免這種可能性,您應該使用GetTextMetrics
來獲取實際字體的TEXTMETRICS
,並檢查tmCharSet
是否爲SYMBOL_CHARSET
。
檢查lfCharSet
和tmCharSet
有什麼區別?
當您創建HFONT
時,Windows將生成LOGFONT
的內部副本。它描述了你想要的字體,它可能與你得到的字體不同。
當您在設備(或信息)上下文中選擇HFONT
時,字體映射程序將查找與該HFONT
相關聯的LOGFONT
最匹配的實際字體。然而,最佳匹配可能不完全匹配。因此,當你需要找出有關實際字體的內容時,應該注意查詢HDC
而不是HFONT
。
如果您使用GetObject
查詢HFONT
,您只需返回原始LOGFONT
。 GetObject
不會告訴你有關實際字體的任何內容,因爲它不知道字體映射器選擇(或將選擇)的實際字體。
詢問有關選定到特定DC中的字體的API(如GetTextMetrics
,GetTextFace
等)將爲您提供有關實際字體的信息。
對於這個問題,馬克的回答(使用GetObject
)可能總是會起作用,因爲字體映射器在您想要文本字體(或反之亦然)時選擇符號字體的機率很小。但是,一般來說,當你想知道關於實際字體的東西時,找一種方法來詢問HDC
。
相關問題
- 1. 如何判斷一個字體是否使用GTK和Pango等寬字體?
- 2. 如何判斷特定字體是否包含PDF中的特定字符:: API2
- 3. 如何判斷兩個字體在GDI中是否相同+
- 4. PHP:如何判斷PDF是否嵌入了字體?
- 5. 如何判斷.woff字體是否暗示?
- 6. 如何判斷字體重量屬性和字體兼容性
- 7. 在Perl中,如何判斷字符串是否是數字?
- 8. 判斷當前字體是否支持unicode字符的簡單方法?
- 9. 如何判斷特定字體是否具有特定字形> 64k
- 10. 如何判斷字符串中是否有數字?
- 11. 如何判斷某個字母是否在字符串中 - javascript
- 12. 如何判斷未知數字是否在字符串中?
- 13. 如何判斷該數字是否是迴文中的編號
- 14. 如何判斷一個字符串是否包含Guid作爲子字符串?
- 15. 如何判斷字符串是否包含單引號(')和雙引號(「)?
- 16. 判斷一個字符串是否是另一個子字符
- 17. 如何判斷哪些unicode字符是字母(單詞)還是標點符號?
- 18. 如何判斷脫字號是否在H1標籤內?
- 19. 如何判斷一個字符串是否是網址?
- 20. 如何判斷pick()的結果是否是字符串
- 21. 如何判斷Watson會話是否將字符串識別爲數字
- 22. 如何判斷(編程)在Windows 7 PC上是否使用大字體
- 23. iOS:如何判斷UILabel的字體是否已被自動調整大小?
- 24. 如何判斷某個字符串之前的任何字符是否匹配?
- 25. 如何判斷變量是否不以連字符結尾?
- 26. 如何判斷VARCHAR變量是否包含子字符串?
- 27. 如何判斷const char *是否指向有效的字符串?
- 28. 如何判斷boost :: split_iterator是否在字符串中間開始?
- 29. 如何判斷正則表達式是否匹配字符串?
- 30. 如何判斷一個字符是否對html有效?
Dayum!我只是在閱讀http://msdn.microsoft.com/en-us/library/dd145037%28v=VS.85%29.aspx的LOGFONT頁面,你擊敗了我的答案... – 2010-05-18 22:32:36
這可能是在實踐中是正確的,但理論上它可能會失敗。 GetObject返回用於指定字體的LOGFONT副本。但字體映射器可能會替換不同的字體。雖然它似乎不太可能將文字字體的符號字體(或相反),它可能發生在理論上。因此,您最好檢查由GetTextMetrics返回的TEXTMETRIC中的tmCharSet字段,因爲它應該表示實際字體而不是邏輯字體。 – 2016-04-12 17:48:55
@AdrianMcCarthy我認爲'GetObject'返回實際選擇的字體的'LOGFONT',而不是最初請求的字體;除非您有確鑿的鏈接,否則可能需要進行驗證實驗。如果你認爲'GetTextMetrics'更好,另一個答案是值得歡迎的。 – 2016-04-12 19:44:11