• 8027阅读
  • 4回复

有关点阵字库的问题 [复制链接]

上一主题 下一主题
离线楠木成林
 
只看楼主 正序阅读 楼主  发表于: 2010-04-09
想要在嵌入式2440板子上显示较小的字,手里下了几个bdf的字库,但是在fondir中加载字库后,用setFont(QFont)设置好后并没有效果,请问如何才能把点阵 字库加载进去呢?希望有兴趣的朋友能一起交流。谢谢!
离线tyhj2000
只看该作者 4楼 发表于: 2010-04-20
QT4以上是不需要的,只要在目标板上有相应字体的qpf文件就可以了,setFont()中的font要设的和qpf文件字体一样才行,不然没有相应字体是改不了大小,加粗什么的,就是说,如果你想要设一个粗体的文件,\lib\fonts文件夹中就必须有加粗字体的qpf文件
离线小u爸爸
只看该作者 3楼 发表于: 2010-04-12
共同关注,我用的是qpf字库,目录中没有fontdir文件。显示中文没有问题,但不能改变文字大小,也不能加粗。
是不是需要加入fontdir这个文件?楼上的能否介绍详细点?谢谢
离线tyhj2000
只看该作者 2楼 发表于: 2010-04-12
在qt4中对qpf文件不需要fontdir文件就可以直接识别的,setFont函数没错,要设置的字体你的fontdir目录中得确实有
离线楠木成林
只看该作者 1楼 发表于: 2010-04-10
程序是如何去寻找需要的字库呢?

我们可以在QT文件系统目录下:/mnt/gui/qtopia/lib/fonts中找到qt自带的字库文件,

cd /mnt/gui/qtopia/lib/fonts

ls

unifont.bdf unifont_160_50_t5.qpf

helvetica_100_50.qpf        helvetica_240_75_t15.qpf

helvetica_100_50_t10.qpf    helvetica_240_75_t5.qpf

……

同时该目录下还有一个fontdir文件:

vi fontdir

……

helvetica helvR18.bdf BDF n 50 180 u

helvetica helvR24.bdf BDF n 50 240 u

# Unifont is available in source form from http://czyborra.com/unifont/

unifont unifont.bdf BDF n 50 160 u

babelfish babelfish.ttf FT n 50 0 s

smallsmooth verdana.ttf FT n 50 0 s 90

……

每一行是关于一种字体的设置,对应列的定义如下:

<字体名称> <字体文件名> <字体渲染类型> <是否斜体> <是否粗体> <尺寸> <字体标志> [尺寸列表]

main.cpp

#include <qapplication.h>

#include "mainwidget.h"

int main(int argc, char **argv)

{        QApplication app(argc,argv);

         app.setFont(QFont("unifont",16,50));

        QTranslator translator( 0 );

        translator.load( QString("hello_CN.qm"),".");

        app.installTranslator( &translator );

        MyMainWidget *mymainwidget = new MyMainWidget(0);

       mymainwidget->setGeometry(10,30,280,200);

        app.setMainWidget(mymainwidget);

        mymainwidget->show();

        return app.exec();

}

<!--[if !supportLists]-->2.       <!--[endif]-->生成mymain.pro工程文件

progen –t app.t –o mymain.pro

修改mymain.pro

TEMPLATE        = app

CONFIG          = qt warn_on release

HEADERS         = mainwidget.h

SOURCES         = mainwidget.cpp main.cpp

INTERFACES      =

TRANSLATIONS    = mymain_CN.ts

<!--[if !supportLists]-->3.       <!--[endif]-->生成mymain_CN.ts

lupdate mymain.pro

其中,

<字体渲染类型>:可以为TTF,BDF,QPF三种类型;

<是否斜体>:y表示为斜体,n表示正常体;

<是否粗体>:50表示正常体,75表示粗体;

<标志>:a使用ASCII字符集,u使用unicode字符集,s使用锯齿平滑(anti-aliased);

<尺寸>:0,则系统从[尺寸列表]中提取可以转换的字体尺寸;

我们上面的中文下拉菜单程序就是利用qt自带的一种中文字体unifont,程序会读取/mnt/gui/qtopia/lib/fonts/fontdir文件,并匹配相应的字体,如果在程序中QFont("unifont",16,50)中参数设置不正确,就无法匹配到相关字体,所以自然就显示出了方块了。(同时字体标志一定要加上u,说明使用unicode字符集,否则也会出现方块)

知道如何读取中文字库文件,我们就可以制作自己喜欢的中文字库并显示了。

以上是我在网上查到的一些思路,但是按照上面的方法进行修改之后,我运行带有点阵字库的QT程序后出现自动关闭的错误。不知道原因何在?
快速回复
限100 字节
 
上一个 下一个