Fnt字体格式详解
聲明:
該文章引用自其它博客,感謝原博主的分享 Fnt字體格式詳解
cocos2d里的數字和符號基本都會用到fnt字體, 從直觀的使用來說, fnt就是講我們熟悉和0123和圖片綁定起來, 在使用0123時, 直接用圖片代替, 當然這個圖片不可能是矢量圖, 所以在游戲中就要盡量避免對fnt字體的縮放操作, 因為對mac下fnt生成軟件實在是用得不爽, 于是想寫一個TexturePacker的插件, 自己實現fnt格式導出, 其中fnt文件的內容詳解如下, 備忘:
第一行是對字體的介紹。
info face=“華康海報體W12§” size=32 bold=0italic=0 charset="" unicode=0stretchH=100smooth=1 aa=1 padding=0,0,0,0 spacing=1,1
解釋:
face=“華康海報體W12§”:字體為”華康海報體W12§”,
size=32:大小為32像素
bold=0 :不加粗
italic=0:不使用斜體
charset="": charset是編碼字符集,這里沒有填寫值即使用默認,
unicode=0:不使用Unicode
stretchH=100:縱向縮放百分比
smooth=1 :開啟平滑
aa=1:開啟抗鋸齒
padding=0,0,0,0:內邊距,文字與邊框的空隙。
spacing=1,1 :外邊距,就是相臨邊緣的距離。
第二行是對應所有字貼圖的公共信息
common lineHeight=37 base=28 scaleW=512 scaleH=512pages=1 packed=0
解釋:
lineHeight=37:行高,如果遇到換行符時,繪制字的位置坐標的Y值在換行后增加的像素值。
base=28 :字的基本大小
scaleW=512 :圖片大小
scaleH=512:圖片大小
pages=1 :此種字體共用到幾張圖。
packed=0:圖片不壓縮
第三行是對應當前字貼圖的信息
//第一頁,文件名稱是”bitmapFontChinese.png”
page id=0 file=“bitmapFontChinese.png”
第四行是當前貼圖中所容納的文字數量
chars count=204
第五行起把當前貼圖中所用到的所有文字的編碼以及對應在圖片上的矩形位置,偏移等列出來
第一個字符編碼為32,也就是空格,位置為0,0,寬高為0,0, 繪制到屏幕的相應位置時,像素偏移(0,28),繪制完后相應位置的x往后移15像素再畫下一個字符,字的圖塊在第1頁上
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=28 xadvance=15 page=0 chnl=0
第一個字符編碼為漢字”象”,也就是空格,位置為0,0,寬為33,高為36, 繪制到屏幕的相應位置時,像素偏移(0,-1),繪制完后相應位置的x往后移36像素再畫下一個字,字的圖塊在第1頁上
char id=35937 x=0 y=0 width=33 height=36 xoffset=0 yoffset=-1 xadvance=36 page=0 chnl=0
char id=26696 x=33 y=0 width=35 height=36 xoffset=-1 yoffset=-1 xadvance=36 page=0 chnl=0
char id=26071 x=68 y=0 width=35 height=36 xoffset=-1 yoffset=-1 xadvance=36 page=0 chnl=0
…
再后面是描述兩個字在進行組合繪制時字距調整的相關信息,這里沒有要進行間距調整的字組合所以為設-1。對于字組合間距調整可以看此示例圖:http://www.2cto.com/uploadfile/2012/0903/20120903112659845.jpg
kernings count=-1
這個數字代表參與字組合間距調整的字的數量。
如果kernings count大于零,后面會有類似這樣的描述:
kerning first=102 second=41 amount=2
也就是’f’與’)’進行組合顯示’f)’時,’)’向右移2像素防止粘在一起。
通過上面這些信息,引擎可以通過編碼找到相應的文字并取出對應的紋理塊。
總結
- 上一篇: 进程间的通信——无名管道
- 下一篇: Datawhale-零基础入门NLP-新