显示中文点阵字体的问题
ucdos 16点阵字库,在显示的时候,例如第2005个汉字,下半部分全是白框,这种情况还有很多,看源程序:
#include <stdio.h>
#include <conio.h>
#include <io.h>
#include <graphics.h>
#include <dos.h>
#include <string.h>;
void main()
{
int gd, gm, i, k, m, x, y;
FILE *fr, *fw;
unsigned long ln;
unsigned char ch, hz[33];
ln = 2005;
clrscr();
ch = 'A';
fr = fopen("chs16.fon", "r");
detectgraph(DETECT, &gm);
initgraph(DETECT, &gm, "");
while (ch != 0x1b)
{
cleardevice();
fseek(fr, 32 * ln, SEEK_SET);
for (i = 0; i < 32; i++)
{
hz[i] = fgetc(fr);
}
x = y = 200;
for (i = 0; i < 32; i += 2)
{
for (k = 0; k < 16; k++)
{
if (k < 8)
{
ch = hz[i];
ch = ch >> (7 - k);
ch &= 0x1;
if (ch == 0x1)
{
putpixel(x + k, y, 15);
}
}
else
{
ch = hz[i + 1];
ch = ch >> (15 - k);
ch &= 0x1;
if (ch == 0x1)
{
putpixel(x + k, y, 15);
}
}
}
y += 1;
}
ch = getch();
ln++;
}
fclose(fr);
closegraph();
}
多谢指点。