<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Windows字體大小???? ## * [ ] ?問題的由來 >在早期的Windows中,系統字體是一種等寬字體,所有的字符的寬度都是一樣的,就像早期的打字機那樣。但是從Windwos3.0開始,系統字體變成了變寬字體:每個字符的寬度是不一樣的,例如W要比i寬。很多相關的閱讀研究表明,用變寬字體印刷的文章比用等寬字體印刷的可讀性更強。其原理是當字符排列的更緊湊時,眼睛和大腦更容易注意到單詞而不僅僅是一個個的字符。可想而知,從等寬字體到變寬字體導致很多Windows程序不再適用,程序員們需要學習使用字體的新技術。 > 系統字體是一種“點陣字體”:每個字符串由像素點構成。在某種程度上,系統字體中字符的大小取決于顯示器的大小:字體的設計要求能夠在顯示器上起碼顯示25行80列字符。 * [ ] 字符大小 既然Windows系統字體變成了變寬字體,那么如何確定字體的高度和寬度呢,這個值是多少呢?答案是:這取決于顯示器的分辨率。在不同的系統分辨率下用戶還可以選擇不同的系統字體。程序可以通過GetTextMetrics函數來獲取當前選定的字體信息。 獲取字號時,首先要獲取設備環境句柄,然后調用GetTextMetrics: ????hdc =GetDc(hwnd); ????GetTextMetrics(hdc,&tm); ????ReleaseDc(hwnd,hdc); 這里的&tm 是一個指針,指針指向了一個結構:TEXTMETRIC,該結構有20個字段。但是我們只關心其中的前7個字段: ``` ????typedef struct tagTEXTMETRIC { // tm ????????LONG tmHeight; //字符高度 ????????TEXTMETRIC結構字段的圖示 ????????TEXTMETRIC結構字段的圖示 \[1\] ????????LONG tmAscent; //字符上部高度(基線以上) ????????LONG tmDescent; //字符下部高度(基線以下) ????????LONG tmInternalLeading, //由tmHeight定義的字符高度的頂部空間數目 ????????LONG tmExternalLeading, //夾在兩行之間的空間數目 ????????LONG tmAveCharWidth, //平均字符寬度 ????????LONG tmMaxCharWidth, //最寬字符的寬度 ????????LONG tmWeight; //字體的粗細輕重程度 ????????LONG tmOverhang, //加入某些拼接字體上的附加高度 ????????LONG tmDigitizedAspectX, //字體設計所針對的設備水平方向 ????????LONG tmDigitizedAspectY, //字體設計所針對的設備垂直方向 ????????BCHAR tmFirstChar; //為字體定義的第一個字符 ????????BCHAR tmLastChar; //為字體定義的最后一個字符 ????????BCHAR tmDefaultChar; //字體中所沒有字符的替代字符 ????????BCHAR tmBreakChar; //用于拆字的字符 ????????BYTE tmItalic, //字體為斜體時非零 ????????BYTE tmUnderlined, //字體為下劃線時非零 ????????BYTE tmStruckOut, //字體被刪去時非零 ????????BYTE tmPitchAndFamily, //字體間距(低4位)和族(高4位) ????????BYTE tmCharSet; //字體的字符集 ????} TEXTMETRIC;?? ``` 在TEXTMETRIC結構中有設備環境中當前字體的各種信息。但字體的縱向尺寸僅由其中的5項決定,如圖所示: ![](https://box.kancloud.cn/f318e6338f7ac48401cb036174a58b7a_711x478.jpg) 字體寬度:TEXTMETRICS結構中有兩個字段描述了字符的寬度:tmAveCharWidth是小寫字符的加權平均寬度,tmMaxCharWidth 是字體中最寬的字符的寬度。在等寬字體中,這兩個值是一樣的。 注意:系統字體的尺寸取決于Windows運行是的顯示分辨率,有時還取決于用戶選定的系統字號。Windowsti提供了與設備無關的圖形界面,但是作為程序員需要注意:不要再程序中猜測文本的尺寸,不要使用固定值,應該通過調用GetTextMetrics函數來獲取這些信息。 通常大寫字符的平均寬度,按照tmAveCharWidth的1.5倍計算。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看