摘 要:本文在構建BMP格式的個性化字庫的基礎上,研究對字庫進行調用、對參數進行設定、對排版格式進行控制,完成個性化的排版任務。
關鍵詞:BMP 個性化字庫 排版
中圖分類號:H139 文獻標識碼:A 文章編號:1672-3791(2012)12(a)-0012-01
1 BMP格式
BMP是英文Bitmap(位圖)的簡寫,它是Windows操作系統中的標準圖像文件格式,能夠被多種Windows應用程序所支持。隨著Windows操作系統的流行與豐富的Windows應用程序的開發,BMP位圖格式理所當然地被廣泛應用。這種格式的特點是包含的圖像信息較豐富,幾乎不進行壓縮,但由此導致了它與生俱生來的缺點—— 占用磁盤空間過大[1]。
盡管文件大小比較大,但是位圖文件的簡單性、在微軟視窗和其他地方的廣泛使用以及這種格式的優秀文檔標準以及沒有專利約束,使得它成為其他操作系統圖像處理程序能夠讀寫的一種最為常用的格式[2]。
2 個性化字庫在排版中的應用
計算機用戶在進行文字編排的時候,總希望將自己的文檔變得美觀大方、惹人喜愛,于是就會選擇自己喜愛的字體字號進行編排。可是系統中常用的漢字字體不外乎宋體、黑體等幾種,在當今這個個性化張揚的時代,有不少人渴望能將自己的字體顯示、打印輸出[3]。為了達到這個目的,方法之一是開發個性化的TTF字體。比如,2007年4月27日下午徐靜蕾發布了一款自己書寫的個性化字體,此字體由方正電子根據徐靜蕾的手寫字體為其量身定做,被命名“方正靜蕾簡體”[4]。此方法好是好,但是這么多年不能推廣開來的致命缺陷因素是價格太高,動輒幾萬元的開發成本讓普通人望而卻步。我們可以采取別的方法。比如:筆者在研究過程中發現生成個性化字庫可以將用戶的手寫體用高點陣BMP格式圖片文件存儲,在此基礎上開發個性化的排版應用程序,滿足用戶個性化需求。
3 BMP格式的個性化字庫排版應用程序的實現
我們重點研究如何實現高點陣BMP格式個性化字庫的顯示與打印輸出。程序按以下步驟來完成個性化字庫的輸出。
3.1 導入個性化字庫信息
導入相應的漢字(6763個)、符號(371個)、字符的內碼,字符對應的圖像文件信息。相應的關鍵代碼如下:
Open"d:\gxxzk\zk_inf.txt"For Input As 10
Do While Not EOF(10)And i<7134
i=i+1
Input #10,a(i,1),a(i,2),a(i,3),a(i,4), a(i,5)
Loop
3.2 讓用戶設定各項輸出參數
其中重要的有:原始電子文檔的文件名,輸出的字的大小、輸出的字間距、行間距。原始電子文檔的文件擴展名定義為文本文件格式。建議用戶在設定輸出的字的大小時用3~5號字,字太小了看不清楚,字太大了會產生鋸齒,影響美觀。
3.3 讀取原始電子文檔、進行內碼轉換,依次處理文檔內容
程序用三重循環實現。外循環對整個文檔進行處理,中間循環對每一個以回車分割的段落進行處理,內循環對段落中的每一個字進行處理。相應的關鍵代碼如下:
j=j+1
Load Image1(j)
Image1(j)=LoadPicture("d:\gxxhzk\" & s_filename &".bmp")
Image1(j).Left=l
Image1(j).Top=t+zh*0.5-zh*h_bl*0.5
Image1(j).Width=zh*w_bl
Image1(j).Height=zh*h_bl
Image1(j).Visible=True
這里j+1表示開始處理第一個字或下一個字,l表示一個字符的起始左邊界,t表示一個字符的起始上邊界,zh表示相應的字號,bl意思為根據字的高矮胖瘦調節的比例因子。根據頁面大小,控制l和t自動變化。
3.4 打印預覽、結果輸出
Form1.PrintForm可以實現窗體內容的打印。運行排版應用程序可以進行打印預覽、結果輸出。最好在輸出時選用噴墨打印機,它能最大限度地還原手寫者的原筆跡,讓不明就里的閱讀者誤以為這是用戶親筆書寫的。
4 輸出實例
下面是一個BMP格式的個性化字庫排版應用程序的排版結果樣例:
從樣例我們可以看出:程序能根據用戶的需求進行排版輸出,能設定字間距、行間距,能忠實地還原書寫者當初書寫的特點,比如字的大小、胖瘦、筆跡的粗細等。排版結果美觀大方。
參考文獻
[1]selina_sai.BMP格式[EB/OL].http://baike.baidu.com/view/189487.htm,2012-8-30/2012-9-18.
[2]維基人.BMP[EB/OL].http://zh.wikipedia.org/wiki/BMP,2012-8-12/2012-9-18.
[3]馬文軍,李保明.中文信息個性化打印輸出系統的方案設計[J].電腦知識與技術,2006(11):153.
[4]百科ROBOT.方正徐靜蕾體[EB/OL].http://baike.baidu.com/view/1708957.htm,2012-03-08/2012-07-22.