⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 font.c

📁 从网上下载的一个自己编写的简单的操作系统源代码,对底层了解很有好处的
💻 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 + -