本文来源于 http://doc.trolltech.com/3.3/emb-fonts.html
QT/E 支持以下四种字体文件
1. TrueType(TTF) 可缩放的矢量字体,显示用。
2. Postscript Type1 (PFA/PFB) 可缩放的矢量字体,打印机使用。
3. Bitmap Distribution Format fonts (BDF) 不可缩放的像素字体。最好不要在产品系统中使用,其载入速度很慢且占用了大量的存储空间。
4. Qt Prerendered Font (QPF) 轻量级的不可缩放字体, QT/E 专用。
开启或关闭对这些字体 (1-3) 的支持可以参照 qfeatures.h 中的宏定义, 4 则是始终支持的。为了提高效率,可以先开启 1-3 的支持,然后将其保存为格式为 4 的文件,最后再关闭对 1-3 的支持。具体可参考 makeqpf 命令 ( 位于 tools 目录下 ) :
makeqpf [-A] [-f spec-file] [font ...]
-A - Render and save all fonts in fontdir
-f - File of lines: fontname character-ranges e.g. "smoothtimes 0-ff,20a0-20af"
font - Font to render and save
使用 TTF 字体时,每个指定大小的字符只有在第一次显示时才会被渲染。而 BDF 字体则是第一次使用该字体时所有字符都被渲染。使用 QPF 字体时,每个字符都按照 Qt 图形绘制的格式进行存储,在绘图时,只需要将字符数据映射过来即可,而不必像其它格式一样要先载入并转化、渲染。
TTF, PFA, 和 QPF 都能采用光滑的抗锯齿方式进行渲染。
QT/E 使用的所有字体都采用 Unicode 方式进行编码。
当 QT/E 应用程序运行时,会先去找
$QTDIR/lib/fonts/fontdir 或 /usr/local/qt-embedded/lib/fonts/fontdir
里面定义了程序可使用的字体,定义格式为:
name file renderer italic weight size flags
name: Helvetica, Times, etc.
file: helvR0810.bdf, verdana.ttf, etc.
renderer: BDF or FT
italic: y or n
weight: 50 is normal, 75 is bold, etc.
size: 0 表示可缩放 120 或 12pt 表示字体大小为 12
flags : s 表示抗锯齿 u/a 表示保存字体时的范围为 unicode 还是 ascii
上面的 dd 是对于 TTF 和 BDF 字体来说的,对 QPF 字体,它们是直接通过 *.qpf 文件载入的, *.qpf 文件的命名格式为:
name _ size _ weightitalicflag .qpf
name : helvetica, times, etc
size : 120 或 12pt 表示字体大小为 12
italicflag : i 表示斜体,没有 i 则表示正常
weight : 50 is normal, 75 is bold, etc.
如果应用程序运行时带有- savefonts 的参数,那么当一个 TTF 或 BDF 的字体被使用时,一个相应的 QPF 文件就会被保存。对于那些内存要求比较苛刻的程序,还可以生成只包含指定文字的 QPF 文件,具体参考 QMemoryManager::savePrerenderedFont()
此外,还可以生成旋转后的字体,此时应用程序要加上旋转参数。