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()
此外,还可以生成旋转后的字体,此时应用程序要加上旋转参数。