[英]how does a font tell the OS that “I AM a MONSPACED / FIXED-WIDTH FONT”?
[英]How do I tell if a font is a symbol font?
給定HFONT,我如何分辨它是一種符號字體? 我正在使用的pdf庫需要以不同的方式對待符號字體,因此,我需要一種以編程方式判斷給定字體是否為符號字體的方法。
馬克·蘭瑟姆(Mark Ransom)的答案將在99.999%的時間內起作用,但是從理論上講,它可能給出錯誤的答案。
為了避免這種可能性,您應該使用GetTextMetrics
來獲取實際字體的TEXTMETRICS
並檢查tmCharSet
是否為SYMBOL_CHARSET
。
檢查lfCharSet
和tmCharSet
什么tmCharSet
?
創建HFONT
,Windows會創建LOGFONT
的內部副本。 它描述了所需的字體,該字體可能與您獲得的字體不同。
當您在設備(或信息)上下文中選擇HFONT
,字體映射器會找到與該HFONT
關聯的LOGFONT
最匹配的實際字體。 但是,最佳匹配可能不是精確匹配。 因此,當您需要了解有關實際字體的信息時,應注意查詢HDC
而不是HFONT
。
如果使用GetObject
查詢HFONT
,則只需返回原始LOGFONT
。 GetObject
不會告訴您有關實際字體的任何信息,因為它不知道字體映射器選擇(或將選擇)的實際字體。
詢問選擇到特定DC中的字體的API,例如GetTextMetrics
, GetTextFace
等,將為您提供有關實際字體的信息。
對於這個問題,Mark的答案(使用GetObject
)可能總是GetObject
,因為當您想要文本字體(反之亦然)時,字體映射器選擇符號字體的幾率很小。 但是,總的來說,當您想了解有關實際字體的信息時,請找到一種詢問HDC
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.