資源描述:
《點陣字庫和矢量字庫》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、點陣字庫的生產(chǎn)原理(轉(zhuǎn))??2011-05-1715:31:45
2、??分類:其他技術(shù)
3、??標簽:
4、字號大中小?訂閱點陣字庫的生產(chǎn)原理所有的漢字或者英文都是下面的原理,由左至右,每8個點占用一個字節(jié),最后不足8個字節(jié)的占用一個字節(jié),而且從最高位向最低位排列。生成的字庫說明:(以12×12例子)一個漢字占用字節(jié)數(shù):12÷8=1····4也就是占用了2×12=24個字節(jié)。編碼排序A0A0→A0FEA1A0→A2FE依次排列。以12×12字庫的“我”為例:“我”的編碼為CED2,所以在漢字排在CEH-AOH=2EH區(qū)的D2H-A0H=32H個。所以在12×12字庫的起始位置就是[{
5、FE-A0}*2EH+32H]*24=104976開始的24個字節(jié)就是我的點陣模。其他的類推即可。英文點陣也是如此推理。在DOS程序中使用點陣字庫的方法???首先需要理解的是點陣字庫是一個數(shù)據(jù)文件,在這個數(shù)據(jù)文件里面保存了所有文字的點陣數(shù)據(jù).至于什么是點陣,我想我不講大家都知道的,使用過"文曲星"之類的電子辭典吧,那個的液晶顯示器上面顯示的漢子就能夠明顯的看出"點陣"的痕跡.在PC機上也是如此,文字也是由點陣來組成了,不同的是,PC機顯示器的顯示分辨率更高,高到了我們?nèi)庋蹮o法區(qū)分的地步,因此"點陣"的痕跡也就不那么明顯了.???點陣、矩陣、位圖這三個概念在本質(zhì)上是有聯(lián)系的,
6、從某種程度上來講,這三個就是同義詞.點陣從本質(zhì)上講就是單色位圖,他使用一個比特來表示一個點,如果這個比特為0,表示某個位置沒有點,如果為1表示某個位置有點.矩陣和位圖有著密不可分的聯(lián)系,矩陣其實是位圖的數(shù)學抽象,是一個二維的陣列.位圖就是這種二維的陣列,這個陣列中的(x,y)位置上的數(shù)據(jù)代表的就是對原始圖形進行采樣量化后的顏色值.但是,另一方面,我們要面對的問題是,計算機中數(shù)據(jù)的存放都是一維的,線性的.因此,我們需要將二維的數(shù)據(jù)線性化到一維里面去.通常的做法就是將二維數(shù)據(jù)按行順序的存放,這樣就線性化到了一維.???那么點陣字的數(shù)據(jù)存放細節(jié)到底是怎么樣的呢.其實也十分的簡單,
7、舉個例子最能說明問題.比如說16*16的點陣,也就是說每一行有16個點,由于一個點使用一個比特來表示,如果這個比特的值為1,則表示這個位置有點,如果這個比特的值為0,則表示這個位置沒有點,那么一行也就需要16個比特,而8個比特就是一個字節(jié),也就是說,這個點陣中,一行的數(shù)據(jù)需要兩個字節(jié)來存放.第一行的前八個點的數(shù)據(jù)存放在點陣數(shù)據(jù)的第一個字節(jié)里面,第一行的后面八個點的數(shù)據(jù)存放在點陣數(shù)據(jù)的第二個字節(jié)里面,第二行的前八個點的數(shù)據(jù)存放在點陣數(shù)據(jù)的第三個字節(jié)里面,…,然后后面的就以此類推了.這樣我們可以計算出存放一個點陣總共需要32個字節(jié).看看下面這個圖形化的例子:???
8、
9、1
10、
11、
12、
13、
14、
15、
16、
17、
18、
19、
20、
21、1
22、
23、
24、
25、???
26、
27、
28、1
29、1
30、
31、1
32、1
33、1
34、1
35、1
36、1
37、1
38、1
39、1
40、
41、
42、???
43、
44、
45、
46、1
47、
48、
49、
50、
51、
52、
53、
54、
55、1
56、
57、
58、
59、???
60、1
61、
62、
63、
64、
65、
66、1
67、
68、
69、
70、
71、
72、1
73、
74、
75、
76、???
77、
78、1
79、1
80、
81、
82、
83、1
84、
85、
86、
87、
88、
89、1
90、
91、
92、
93、???
94、
95、
96、1
97、
98、
99、
100、1
101、
102、
103、
104、
105、1
106、
107、
108、
109、
110、???
111、
112、
113、
114、
115、1
116、
117、
118、1
119、
120、
121、
122、1
123、
124、
125、
126、
127、???
128、
129、
130、
131、1
132、
133、
134、
135、1
136、
137、
138、1
139、
140、
141、
142、
143、
144、???
145、
146、
147、1
148、
149、
150、
151、
152、
153、1
154、
155、1
156、
157、
158、
159、
160、
161、???
162、1
163、1
164、1
165、
166、
167、
168、
169、
170、
171、1
172、
173、
174、
175、
176、
177、
178、???
179、
180、
181、1
182、
183、
184、
185、
186、
187、1
188、
189、1
190、
191、
192、
193、
194、
195、???
196、
197、
198、1
199、
200、
201、
202、
203、1
204、
205、
206、
207、1
208、
209、
210、
211、
212、???
213、
214、
215、1
216、
217、
218、
219、1
220、
221、
222、
223、
224、
225、
226、1
227、
228、
229、
230、???
231、
232、
233、1
234、
235、
236、1
237、
238、
239、
240、
241、
242、
243、1
244、1
245、1
246、
247、???
248、
249、
250、
251、
252、1
253、
254、
255、
256、
257、
258、
259、
260、
261、1
262、
263、
264、???
265、
266、
267、
268、
269、
270、
271、
272、
273、
274、
275、
276、
277、
278、
279、
280、
281、???可以看出這是一個"漢"字的點陣,當然文本的方式效果不是很好.根據(jù)上面的原則,我們可以寫出這個點陣的點陣數(shù)據(jù):0x40,0x08,0x37,0xfc,0x10,0x08,…,當然寫這個確實很麻煩所以我不再繼續(xù)下去.我這樣做,也只是為了向你說明,在點陣字庫中,每一個點陣的數(shù)據(jù)就是按照這種方式存放的.???當然也存在著不規(guī)則的點陣,這里說的不規(guī)則,指的是點陣的寬度不是8的倍數(shù),比如12*12的點陣,那么這樣的點陣數(shù)據(jù)又是如何存放
282、的呢?其實也很簡單,每一行的前面8個點存放在一個字節(jié)里面,每一行的剩下的4點就使用一個字節(jié)來存放,也就是說剩下的4個點將占用一個字節(jié)的高4位,而這個字節(jié)的低4位沒有使用,全部都默認的為零.這樣做當然顯得有點浪費,不過卻能夠便于我們進行存放和尋址.對于其他不規(guī)則的點陣,也是按照這個原則進行處理的.這樣我們可以得出一個m*n的點陣所占用的字節(jié)數(shù)為(m+7)/8*n.???在明白了以上所講的以后,我們可以寫出一個顯示一個任意大小的點陣字模的函數(shù),這個函數(shù)的功能是輸出一個寬度為w,高度為h的字模到屏幕的(x,y)坐標出,文