精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
GF漢化詳細教程[游戲字體篇]

GF漢化詳細教程[游戲字體篇]

現在的游戲大部分是用矢量字體了,但以前的游戲一般都是用點陣字體。下面先介紹一下點陣字體顯示原理。

漢字內碼 
  點頭表示什么?是“YES”,偏偏有的地方表示的意義卻恰恰相反。一個動作,有不同的詮釋;一個問題,有不同的答案;而一個符號,卻有不同的意義,關鍵在于:你是如何地理解。在電腦中亦如此,所有的數據都是以01保存的,按不同的數據操作,可以得到不同的結果。對于顯示英文操作,由于英文字母種類很少,只需要8位(一字節)即可。而對于中文,常用卻有5000以上,于是我們的DOS前輩想了一個辦法,就是將ASCII表的高128個很少用到的數值以兩個為一組來表示漢字,即漢字的內碼。而剩下的低128位則留給英文字符使用,即英文的內碼。

漢字字模 
  得到了漢字的內碼后,還僅是一組數字,那又如何在屏幕上去顯示呢?這就涉及到文字的字模,字模雖然也是一組數字,但它的意義卻與數字的意義有了根本的變化,它是用數字的各位信息來記載英文或漢字的形狀,如英文的'A'在字模中是這樣記載的:

 

而中文的在字模中卻是這樣記載的: 
 

 

所有的漢字字模組成點陣字庫,像以前Dos下常用的Ucdos漢字系統就是用的點陣字庫,點陣字庫根據不同需要有好多種尺寸,如16*16 24*24,點越多顯示的字越細致,特別是顯示那些筆劃比較多的字,效果越好。

下面進入GF字體的世界,GF的字體擴展名是.LAF,都打包存儲于Data000.LAB文件中。先分析一下LAF的文件格式,然后再討論如何在字庫中加入中文。LAF格式由文件頭、字體索引表、字體偏移量表、字體點陣四部分組成。

1.  文件頭(32字節)

字段

數據長度

描述

Charnum

Long(4字節)

字庫中字體個數

fontsize

Long(4字節)

字體點陣部分的數據長度

MaxWidth

Long(4字節)

字體最大寬度

MaxHeight

Long(4字節)

字體最大高度

Unknown

Long(8字節)

未知

FirstChar

Long(4字節)

第一個字符編碼

LastChar

Long(4字節)

最后一個字符編碼

 

2.  字體索引表

與字體編碼范圍相對應,每個雙字節保存一個字模在偏移量表中的偏移量。如GF的英文字庫是顯示ASCII碼表中0-FF的字符,所以有256個字模,字體索引表有256*2 =512字節。保存內容為這256個字模在字體偏移量表中的偏移量

3.  字體偏移量表(與字體個數一一對應)

字段

數據長度

描述

Offset

Long(4字節)

此字模相對字體點陣的偏移量

Unknown

Long(4字節)

未知

Width

Long(4字節)

字模寬度

Height

Long(4字節)

字模高度

 

4.  字體點陣

保存字體點陣。字體點陣的保存順序是,從左到右,從上到下。0代表無點,ff代表有點。(這是GF點陣與一般字體點陣的區別,一般字體點陣一個二進制位的1代表一個點,但是GF的字庫0xFF才代表一個點)。

現在舉一個GF中的點陣的例子,下圖是GF中漢字“選”的點陣,可以基本看出字形吧,每個漢字都要做成這樣的點陣加入到字庫中去。

 

現在舉一個例子,說明GF程序如何顯示一個英文字母N。(NASCII碼是0x4E)

1.  在字體索引表中找到字模在偏移量表中的偏移量。讀文件32+4E*2 = 0xBC處的雙字,得到偏移量4E。

2.  在字體偏移量表中得到字體點陣的偏移量。讀文件32+512+4E*16 = 0x700處得到字體點陣的偏移量0x17c0,再讀0x708h得到字體N的寬0x0A,再讀0x70ch處得到字體N的高0x0C。

3.  讀字體點陣顯示字符N。字體點陣的首地址為16*256+512+32 = 0x1220H。字體N的點陣部分是在文件0x1220H+0x17c0H0x1220H+0x17c0H+0D*0A之間。

 

漢字編碼GB2312-80簡介

GB2312是中華人民共和國國家漢字信息交換用編碼,全稱《信息交換用漢字編碼字符集——基本集》,由國家標準總局發布,198151實施,通行于大陸。新加坡等地也使用此編碼。

  GB2312收錄簡化漢字及符號、字母、日文假名等共7445個圖形字符,其中漢字占6763個。GB2312規定對任意一個圖形字符都采用兩個字節表示,每個字節均采用七位編碼表示,習慣上稱第一個字節為高字節,第二個字節為低字節

  GB2312將代碼表分為94個區,對應第一字節;每個區94個位,對應第二字節,兩個字節的值分別為區號值和位號值加322OH,因此也稱為區位碼。01-09區為符號、數字區,16-87區為漢字區,10-15區、88-94區是有待進一步標準化的空白區。GB2312將收錄的漢字分成兩級:第一級是常用漢字計3755個,置于16-55區,按漢語拼音字母/筆形順序排列;第二級漢字是次常用漢字計3008個,置于56-87區,按部首/筆畫順序排列。故而GB2312最多能表示6763個漢字。

GB2312的編碼范圍為2121H-777EH,與ASCII有重疊,通行方法是將GB碼兩個字節的最高位置1以示區別。

改造字庫

我們現在要做的就是將GB2312中的6763個漢字加入到GF的字庫中去。漢字點陣定為16*16。因為游戲中仍要部分內容要以英文方式顯示,所以我們加入漢字并不應該破壞原有的英文點陣字庫,而是應該在英文字庫尾部追加這6763個漢字。

1.  首先要修改文件頭部分,每個字段都要做相應調整。

2.  由于漢字編碼范圍是2121H-777EH,所以字體索引表至少要擴大為777E*2個字節。索引表的內容前512字節為原始的英文字體索引表,應該保留。在此之后,凡遇到字體索引表中GB2312漢字編碼處是漢字的位置,添加漢字在字體偏移量表中的偏移量。漢字偏移量應該從0x100開始(256是英文字庫)

3.  重建字體偏移量表,將6763個漢字在字體點陣的偏移量、漢字寬0x10,漢字高0x10寫入。

4.  6763個漢字的點陣追加到原來英文點陣的尾部。

經過以上4部,字庫改造完畢。雖然修改只有4部分,但是每部分都涉及到各種偏移量的計算,多字節高低位的讀取等、文件頭的再修改等步驟,代碼實現起來非常麻煩,稍有不甚就會失敗,甚至導致GF運行時直接崩潰,調試時需要特別的耐心才行。

    在生成新的字庫后,把新字庫覆蓋掉原來Data000.LAB中的同名字庫文件,字庫的修改就大功告成了。

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
單片機 漢字的動態編碼與顯示方案
點陣字庫的生產原理
字庫注意事項
C語言中顯示漢字 - 青春正長 - 青春正長 - 和訊博客
點陣字模原理與讀取
易木雨軟件工作室 - 漢字任意點陣字庫制作軟件,多國語言點陣字庫制作軟件,漢字點陣,民航電子客票打印,民航客戶管理軟件
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 灵山县| 闽侯县| 江津市| 宿迁市| 林芝县| 舞钢市| 隆子县| 兴山县| 博湖县| 吉水县| 喀什市| 台北县| 大姚县| 商丘市| 长沙县| 洛宁县| 普安县| 嘉定区| 荔浦县| 微山县| 高要市| 逊克县| 福州市| 武功县| 福贡县| 安新县| 始兴县| 葫芦岛市| 开封县| 米易县| 祁东县| 大冶市| 明光市| 洛隆县| 道孚县| 广州市| 平果县| 平山县| 剑河县| 三台县| 阳谷县|