📄 font.c
字号:
/*
* ExpOS font system
*
* thanks lingix a lot
*/
#include <drv/vga.h>
extern unsigned char ASC[ASC_NUM][CHAR_HEIGHT];
extern unsigned char CHS[CHS_NUM][CHAR_HEIGHT][(CHS_WIDTH / ASC_WIDTH)];
inline void video_ascii(int col, int y, unsigned char ch, int c)
{
int i;
#ifdef USE_PUTPIXEL
int j, x;
#endif
col %= COLS;
#ifdef USE_PUTPIXEL
x = col * ASC_WIDTH;
#endif
y %= HEIGHT;
c %= COLORS;
ch %= ASC_NUM;
for (i = 0; i < CHAR_HEIGHT; i++)
#ifdef USE_PUTPIXEL
for (j = 0; j < ASC_WIDTH; j++)
if ((ASC[ch][i] >> (ASC_WIDTH - j - 1)) & 1)
vga_pixel(x + j, y + i, c);
#else
vga_outbyte(col, y + i+1, ASC[ch][i], c); //+1 英语和汉字就看着稍稍协调一些
#endif
}
inline void video_gb2312(int col, int y, unsigned char c1, unsigned char c2, int c)
{
int i, j, ch;
#ifdef USE_PUTPIXEL
int k, x;
#endif
col %= COLS;
#ifdef USE_PUTPIXEL
x = col * ASC_WIDTH;
#endif
y %= HEIGHT;
c %= COLORS;
/* GB2312 */
/*??? 增加 GBK 汉字显示操作? */
ch = ((c1 - 0xA1) * CHS_WEI + (c2 - 0xA1)) % CHS_NUM;
for (i = 0; i < CHAR_HEIGHT; i++)
for (j = 0; j < (CHS_WIDTH / ASC_WIDTH); j++)
#ifdef USE_PUTPIXEL
for (k = 0; k < ASC_WIDTH; k++)
if ((CHS[ch][i][j] >> (ASC_WIDTH - k - 1)) & 1)
vga_pixel(x + j * ASC_WIDTH + k, y + i, c);
#else
vga_outbyte(col + j, y + i, CHS[ch][i][j], c);
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -