成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解析 Qt 字庫移植并能顯示中文 (上篇)

移動開發(fā)
本文介紹的是Qt 字庫移植并能顯示中文,需要的字體庫文件,一般是多個。具體移植那一個,看你使用的字庫是什么了,先來看內(nèi)容。

Qt 字庫移植并能顯示中文是本文介紹的內(nèi)容,先來看內(nèi)容,如何定制字庫移植字庫),需要將至少兩個文件賦值到 lib/font目錄下
   
1、fontdir 文件。這個是應(yīng)用程序?qū)ふ耶?dāng)前系統(tǒng)中最合適自己需要的字庫的索引;

2、需要的字庫文件,一般是多個。具體移植那一個,看你使用的字庫是什么了,比如我現(xiàn)在的系統(tǒng)我就是移植的wenquanyi_12pt.bdf就可以了,當(dāng)然這個比較大。你也可以用小點的。我的flash比較大呵呵,懶得折騰。

在程序中需要這樣設(shè)置:

  1. QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));  
  2.    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8")); 

設(shè)置使用utf-8編碼也就是unicode編碼了,這樣在tr和string的都是unicode的編碼了,根據(jù)字庫的索引就能對應(yīng)相應(yīng)的字符了。

然后設(shè)置字體:

  1. //字體設(shè)置  
  2.      QFont font("wenquanyi",12,QFont::Bold); //使用wenquanyi字體  
  3.      this->setFont(font);  
  4. //這樣就設(shè)置了字體了,中文一般使用wenquanyi字體就可以了。很好的。 

基礎(chǔ)知識介紹:

字符編碼

1、字符必須編碼后才能被計算機處理。計算機使用的缺省編碼方式就是計算機的內(nèi)碼。早期的計算機使用7位的ASCII編碼,為了處理漢字,程序員設(shè)計了用于簡體中文的GB2312和用于繁體中文的big5。在這些編碼中,中文和英文可以統(tǒng)一的處理,區(qū)分中文編碼的方法是高字節(jié)的***位為不為0。GB內(nèi)碼的存儲方式始終都是big endian,即高位在前。

2、Unicode是一種字符編碼方法,它是由國際組織設(shè)計,可以容納全世界所有語言文字的編碼方案。Unicode的學(xué)名是"Universal Multiple-Octet Coded Character Set",簡稱為UCS。UCS可以看作是"Unicode Character Set"的縮寫。

Unicode與GB碼不兼容,只與ASCII兼容。

UCS規(guī)定了怎么用多個字節(jié)表示各種文字。怎樣傳輸這些編碼,是由UTF(Unicode transforation format)規(guī)范規(guī)定的。常見的UTF規(guī)范包括UTF-8(就是以8位為單元對UCS進行編碼)、UT F-7、UTF-16。
UTF-*和Unicode是同類,就是在編碼方式上不同。首先UTF編碼后的大小是不一定,不像Unicode編碼后的大小是一樣的。

字體庫:

一般認(rèn)為,一個漢字的編碼就對應(yīng)著這樣的字形,這還是錯誤的。內(nèi)碼對于字庫來說,只是查找字形的索引。如果換成另一個編碼標(biāo)準(zhǔn)的字體,同一個字符串就會呈現(xiàn)不同的字形,也就是亂碼。
隨著GUI的發(fā)展,字庫逐漸轉(zhuǎn)向TTF.TTF字庫的編碼標(biāo)準(zhǔn)沒有UTF8的

由于工作需要把ttf字體轉(zhuǎn)換成qpf字體,牽扯到了qt的makeqpf工具的使用方法

先簡單說一下qt的字體支持

Qte可以支持以下四種形態(tài)的字體格式

  1. TrueType (TTF)、Postscript Type(PFA/PFB)、Bitmap Distribution Format fonts(BDF)、Qt Prerendered Font(QPF) 

Qt中不同字體是用Unicode來處理、轉(zhuǎn)換

因為Unicode(UTF16或者UTF8)最適合在任何人之間傳遞信息,

至于TrueType(不知道是什么東西,先唬著?)的支援,目前Qte采用的是FreeType2 Livrary來顯示字體,可充分享受無段式anti-aliased顯示。

經(jīng)過下午的查證:Truetype是由AppleComputer公司和Microsoft公司聯(lián)合提出的一種新型數(shù)學(xué)字形描述技術(shù)。他用數(shù)學(xué)函數(shù)描述字體輪廓外形,含有字形構(gòu)造、顏色填充、數(shù)字描述函數(shù)、流程條件控制、珊格處理控制、附加提示控制等指令。TrueType采用幾何學(xué)中二次B樣條曲線及直線來描述字體的外形輪廓,其特點是:TrueType即可以作打印字體又可以做屏幕顯示;由于它是由指令對字形進行描述,因此它與分辨率無關(guān),輸出時總是按照打印機的分辨率輸出。無論放大或縮小,字符總是光滑的,不會有鋸齒出現(xiàn)。但相對PostScript字體來說,其質(zhì)量要差一些,特別是在文字太小時,就表現(xiàn)得不是很清楚

簡單 一下:truetype,字體就是可以不變形放大的字體,標(biāo)準(zhǔn)的字體大約有三種。*.fon 、*.ttf 、*.ttc,你所問的就是*.ttf 、*.ttc是*.ttf的新標(biāo)準(zhǔn)。*.fon就是很久以前用的字體,dos下現(xiàn)windows還有少量,主要用在系統(tǒng)使用方面可以提高程序的執(zhí)行效率

FreeType是一個免費的并且可以被移植的TrueType 字庫引擎,可以應(yīng)用于很多平臺!

fontdir的簡介

下面是截取qtcore中默認(rèn)的fontdir文件中的中文字庫部分

  1. #Chinese character font from http://wqy.sourceforge.net/en  
  2. wenquanyi wenquanyi_12pt.bdf BDF n 50 120 u  
  3. wenquanyi wenquanyi_13pt.bdf BDF n 50 130 u  
  4. wenquanyi wenquanyi_15pt.bdf BDF n 50 150 u  
  5. wenquanyi wenquanyi_16pt.bdf BDF n 50 160 u  
  6. wenquanyi wenquanyi_12ptb.bdf BDF n 75 120 u  
  7. wenquanyi wenquanyi_13ptb.bdf BDF n 75 130 u  
  8. wenquanyi wenquanyi_15ptb.bdf BDF n 75 150 u  
  9. wenquanyi wenquanyi_16ptb.bdf BDF n 75 160 u 

可以看到共有七列

  1. ***列:字體的名字,就是你在設(shè)置字體的時候的字體的名字  
  2. 第二列: (file)即具體的文件名字  
  3. 第三列: (renderer)字體的格式,有BDF,TTT,QPF等選擇.  
  4. 第四列: n 表示iitalic,是否為斜體  
  5. 第五列:weight, 50 = Nomal,75=Bold 
  6. 第六列: size 120表示12pt  
  7. 第七列flags 有三個選項:s   (smooth)  
  8.                               u   (unicode順序保存)  
  9.                                
  10.                              a   (ascii 順序保存,默認(rèn)是Latin 1)。 

文件中每行都標(biāo)識一個特定的字庫,每個段的含義是:***列為name,第二列為file,第三列為renderer,相當(dāng)于字型格式,所以有 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))

其中屬性file,renderer(BDF,TTF,QPF)和size特別要設(shè)置對,其它屬性問題不大。還要注意如果在該目錄下有QPF的文件,系統(tǒng)只會使用QPF格式的文件,而不會讀取其它格式的文件,不管FONTDIR里面的內(nèi)容是什么。如果有多個QPF文件,應(yīng)用程序按照大小,家族,黑體和斜體的順序查找,即首先查找大小和自己一樣的字庫,大小無法區(qū)分唯一的字庫的再看對應(yīng)的家族,還是無法區(qū)分的再看是否黑體,是否斜體。可以參考PC上的字庫索引文件FONTDIR:

例如:

  1. -cclib -song -medium -r -normal -jiantizi -16 -160 -75 -75 -c -160 -gb2312 1980-0

其中,每個段的含義如下:

  1. cclib:制造商  
  2. song:字體族,此處表示“宋體”字  
  3. medium:字權(quán)重(中等),還有bold(粗體)選項  
  4. r:傾斜,R(Roman),I(Italic),O(Oblique)  
  5. normal:字符集寬度,此外還有condensed,narrow,double  
  6. jiantizi:附加說明(此處意義為“簡體字”)  
  7. 16:用像素衡量的寬度。  
  8. 160:點數(shù) 10  
  9. 75(1):水平分辨率(dpi)  
  10. 75(2):垂直分辨率(dpi)  
  11. c:間距。c:square,m:fixed width,p:variable width  
  12. 160:平均寬度(10*pixels)  
  13. gb2312.1980:注冊字符集,標(biāo)準(zhǔn)名 

小結(jié):解析 Qt 字庫移植并能顯示中文 (上篇)的內(nèi)容介紹完了,希望本文對你有所幫助,想要深入了解,請參考 解析 Qt 字庫移植并能顯示中文 (下篇)

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-30 16:08:05

Qt 字庫 QPF

2011-06-22 14:30:44

QT 多線程 線程

2011-06-17 09:19:03

Qt 4.5.1 Sqlite 移植

2011-06-29 10:46:01

Qt Eembedded Linux

2011-06-27 10:15:22

Qt 網(wǎng)絡(luò) TCP

2011-06-21 15:48:41

2011-06-24 13:08:34

Qt Qt 4.5.3 移植

2011-06-13 11:24:55

QT MPlayer 移植

2011-06-13 16:16:32

Qt 中文問題

2011-06-13 11:07:22

QT 移植

2011-07-05 18:32:52

QT 信號 機制

2011-07-01 14:14:34

Qt 事件

2011-06-23 16:24:21

Qt Embedded 交叉編譯

2011-04-07 17:27:52

Policing

2011-04-07 17:39:57

Shapping

2011-06-17 16:47:12

Qt Eclipse Windows

2011-06-17 13:18:17

Qt 文件

2011-06-09 16:47:56

Qt 嵌入式

2011-06-13 15:57:26

linux QT QTOPIA

2011-06-30 10:09:26

QT Graphics View
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91精品国产91久久久久久丝袜 | 国产成人亚洲精品 | 人人种亚洲 | 超碰伊人 | 国产网站在线免费观看 | 91视频中文| 天天色综 | 国产精品欧美精品 | 精品乱码一区二区三四区 | 精品免费在线 | 在线看91 | 久久精品视频免费看 | 亚洲欧美bt| 成人免费在线视频 | 国产情侣久久 | 国产成人综合亚洲欧美94在线 | 国产综合久久 | 成人国产免费观看 | 欧美成人一区二免费视频软件 | 一区二区三区在线免费观看视频 | 国产亚洲精品精品国产亚洲综合 | 久久亚洲国产精品日日av夜夜 | 福利在线观看 | 91精品国产综合久久精品图片 | 亚洲国产一区视频 | 一区二区三区四区不卡视频 | 精品国产色| 99精品一区二区三区 | 99精品免费久久久久久日本 | 99热在线免费 | 亚洲a在线观看 | 伊人免费观看视频 | 欧美一级视频 | 日韩在线播放视频 | 免费观看成人av | 精品国产一区久久 | 免费观看一级特黄欧美大片 | 欧美涩涩网 | 国产精品一区二区三区四区 | 国产精品一区久久久 | 亚洲欧美日韩电影 |