<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # QT字體相關 ## 支持的字體 嵌入式Qt支持4中格式的字體,分別是: 1. **TrueType(TTF)** 可縮放字體格式,桌面系統中主要使用的字體 2. **PostscripType(PFA/PFB)** 可縮放字體格式,打印主要使用的字體,可TTF類似 3. **Bitmap Distribution Format fonts (BDF) ** 不可縮放字體的標準格式,在X11平臺系統中可以找到 4. **Qt Prerendered Font (QPF)** Qt預渲染字體,專用于嵌入式Qt的一種字體格式 QPF字體格式是嵌入式Qt內置支持的字體,可以使用QT SDK中提供的makeqpf工具利用前三種字體文件來生成。 而其它的字體格式是否支持則是可以進行裁剪定制的,可以去掉對TTF、BDF字體的支持以降低Qt庫的空間占用,通過定義下面的Qt特性宏: ~~~ /* TrueType (TTF and TTC) font file format, only used by Qt/Embedded. */ #define QT_NO_TRUETYPE /* Bitmap Distribution Format (BDF) font file format, only used by Qt/Embedded. */ #define QT_NO_BDF ~~~ 當然,不定義這兩個宏則表示支持TTF、BDF字體。 因為QPF是預渲染的,嵌入式Qt使用它時不需要讀取和解析它,只需要進行簡單快速的映射,因此它對內存的消耗是最小的。 因此一種方法是利用TTF和BDF字體文件制作好需要的QPF字體文件,然后移除對兩者的支持。 TTF、PFA和QPF字體都支持字體的反鋸齒,即使字體盡量顯示的圓滑而不會有鋸齒感,從而提供更好的可讀性和觀感,特別是在低分辨率設備上,但是這是以消耗更多的內存和空間為代價的,大概是不反鋸齒的八倍。 對于所有的字體文件,嵌入式Qt都是使用Unicode編碼的格式。 ## 使用字體文件 當Qt應用運行時,它會到以下兩個目標之一去尋找規定的字體定義文件fontdir: ~~~ $QTDIR/lib/fonts/fontdir QTDIR是一般使用Qte都會定義的環境變量 /usr/local/qt-embedded/lib/fonts/fontdir 可能是默認的qt安裝路徑 ~~~ fontdir文件定義了Qt應用可以使用的字體格式、大小和文件等內容。fontdir文件的內容和字體條目定義的格式可以參考如下的示例文件,文件中有相應的說明: 一個典型的FONTDIR文件的內容如下所示: ~~~ fixed fixed_120_50.qpf QPF n 50 120 helvetica helvetica_80_50.qpf QPF n 50 80 helvetica helvetica_120_50.qpf QPF n 50 120 u helvetica helvetica_120_75.qpf QPF n 75 120 u helvetica helvetica_140_75.qpf QPF n 75 140 helvetica helvetica_180_75.qpf QPF n 75 180 ~~~ 文件中每行都標識一個特定的字庫,每個段的含義是: 第一列為name, 第二列為file, 第三列為renderer,相當于字型格式,所以有BDF,TTT,QPF等選擇。 第四列n表示iitalic,表示是否為斜體字。 第五列表示weight,其中50表示Normal,75表示Bold。 第六列表示size,例如:120表示12pt。 第七列為flags,有下面三個選擇: s=smooth(anti-aliased) u =unicode range when saving (default is Latin 1 a = ASCII range when saving(default is Latin 1)) 你可以在文件中添加其它的字體格式條目,前提是你有相應的字體文件,不然加了也沒用。 ## 關于文件中的渲染引擎renderer 上面也提到了,renderer只能是BDF或者FT,BDF對應BDF字體文件,而FT是FreeType的縮寫,FreeType是一個強大的庫用來實現渲染TTF/TTC和PFA字體,在嵌入式QT庫的編譯配置時可以選擇是否支持。 注意到沒有QPF渲染引擎的說法,這是因為QPF字體文件的使用是不需要在fontdir文件中定義的,只需要將QPF字體文件放到和fontdir文件同一級目錄下就可以,但是QPF字體文件的命名必須符合Qte的規范: ~~~ name_size_weightitalicflag.qpf e.g: wenquanyi_160_75.qpf 16pt文泉驛粗體,不支持斜體 wenquanyi_160_50i.qpf 16pt文泉驛正常,支持斜體 ~~~ ## 關于文件中的字體大小size size的大小是字體大小*10,也就是12pt字體的size是120,但是我對pt這個單位沒有什么概念,所以我特意查找對比了一下字體大小的單位表示,整理如下: 小五號:9pt, 五號:10.5pt, 小四號:12pt 四號:13.75pt(磅), 三號:15.75pt(磅), 二號:21pt 中文最小字號:八號;2.83pt = 1mm, 28.3pt = 1cm = 一號字體(27.5pt) 字體大小對應的點陣: 9pt:12*12(96dpi),15*15(120dpi); 12pt: 15*15(96dpi),19*19(120dpi) 不過在實際的嵌入式設備上顯示時好像和這種字體大小在word上的顯示不太一致,如前面的16pt文泉驛字體在設備上顯示的大小感覺和word中的小四號字體差不多大。 ## 關于中文字體支持 步入重點,如果需要支持中文字體,顯然就需要有對應的中文字體文件。 前面提到的unifont.bdf文件和文泉驛字體文件都是可以支持中文的,也可以從對應的網站上下載到官方的字體文件。 而文泉驛字體在Linux系統X11平臺上也是使用的比較多的,所以可以直接取用。 ## 關于QPF字體文件生成的捷徑 前面提到可以使用makeqpf工具通過TTF、BDF字體文件來生成QPF字體文件,這就需要編譯makeqpf工具,然后自己一個個去進行相應的轉換,你還可能不確定會使用到哪些字體。 另一種更方便快捷的方法是讓Qt應用自動完成需要使用字體的QPF生成,方法就是在運行Qt應用時,加上 -savefonts 選項。此時應用會將所有使用到的非QPF字體自動轉換生成QPF字體文件并保存下來。 然后你就可以去掉TTF、BDF支持,支持使用QPF字體文件進行部署了。 ## 參考資料 http://doc.qt.io/qt-5/qt-embedded-fonts.html
                  <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>

                              哎呀哎呀视频在线观看