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

📄 fonts.cpp

📁 ASCII 点阵字体
💻 CPP
字号:
// Fonts.cpp: implementation of the CFonts class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "字体研究.h"
#include "Fonts.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CGisFonts::CGisFonts()
{

}

CGisFonts::~CGisFonts()
{

}

BOOL CGisFonts::ParseFonts5x5(CStdioFile *pFile)
{
	ASSERT(pFile);

	CString  strLine;
	int jDB = 0;

	BYTE ft[5][50];
	BYTE f5_5[256][5][5]; // 5*5 工127个
	int  num;

	num = 32;

	while ( pFile->ReadString(strLine) )
	{
		strLine.TrimLeft();
		strLine.TrimLeft(" ");
		if(strLine.IsEmpty()) continue; //为空
		if(strLine[0] == ';') continue; //注释
		strLine.MakeUpper();

		// 找 DB
		int w = strLine.Find("DB");
		if( w < 0 ) continue; //其它非数据

		// 5*5 ,每5个DB组成一个字符

		// 每行数据中,不足8比特的由指定比特组成,否则由若干个8比特组成
		strLine.Delete(0, w+2);

		int j = 0;
		for (int i=0; i<strLine.GetLength(); i++)
		{
			if(strLine[i]=='0') ft[jDB][j++] = 0;
			else if(strLine[i]=='1') ft[jDB][j++] = 1;
			else if( strLine[i] == 'B' ) break;
		}

		if( j != 5) // musht be 5
		{
			AfxMessageBox("is not 5");
			return FALSE;
		}

		jDB++;

		if( jDB==5) //一个字符
		{
			// 字符 c 对应的图形 ft[][]
			for (int i=0; i<5;i++)
			{
				for (int j=0; j<5;j++)
				{
					f5_5[num][i][j] = ft[i][j];
				}
			}
			//
			jDB = 0;
			num++;
		}
	}

	// 从 32 开始(空格--)

	// 5  X 5 da 32 a 127
	// 7  x 5 da 32 a 127
	// 9  x 7 DA 32 A 127
	// 15 x 10 DA 32 A 127
	// 16 x 10 DA 32 A 127
	// 32 x 18 DA 32 A 127

		// 
//		f5_5[][][] = {
//{{0,0,0,0,0},{},{},{},{} },
//{{0,0,0,0,0},{},{},{},{} },
//
//}
	FILE *wp = fopen("G:\\nico\\喷码\\fonts\\fonts\\f5_5.txt", "w");
	if(wp)
	{
		fprintf(wp,"f5_5[][5][5] = {\n" );

		for (int i=32; i<num; i++)
		{
			fprintf(wp,"{");

			for (int j=0; j<5;j++)
			{
				fprintf(wp,"{");
				for (int k=0; k<5; k++)
				{
					fprintf(wp, "%d" , f5_5[i][j][k]);
					if(k<4) fprintf(wp,",");
				}
				if(j<4)	fprintf(wp,"},");
				else fprintf(wp,"}");
			}

			if( i<num-1)
			{
				if(  isprint(i) )
					fprintf(wp,"}, //%c \n" , i);
				else
					fprintf(wp,"}, //\n");
			}
			else
			{
				if(  isprint(i) )
					fprintf(wp,"} //%c \n" , i);
				else
					fprintf(wp,"} //\n");
			}
		}

		fprintf(wp,"};");

		fclose(wp);
	}

	return FALSE;
}

BOOL CGisFonts::ParseFonts7x5(CStdioFile *pFile)
{
	ASSERT(pFile);

	CString  strLine;
	int jDB = 0;

	BYTE ft[5][50];
	BYTE f5_5[256][5][7]; // 7*5 工127个
	int  num;
	num = 32;

	while ( pFile->ReadString(strLine) )
	{
		strLine.TrimLeft();
		strLine.TrimLeft(" ");
		if(strLine.IsEmpty()) continue; //为空
		if(strLine[0] == ';') continue; //注释
		strLine.MakeUpper();

		// 找 DB
		int w = strLine.Find("DB");
		if( w < 0 ) continue; //其它非数据

		// 5*5 ,每5个DB组成一个字符

		// 每行数据中,不足8比特的由指定比特组成,否则由若干个8比特组成
		strLine.Delete(0, w+2);

		int j = 0;
		for (int i=0; i<strLine.GetLength(); i++)
		{
			if(strLine[i]=='0') ft[jDB][j++] = 0;
			else if(strLine[i]=='1') ft[jDB][j++] = 1;
			else if( strLine[i] == 'B' ) break;
		}

		if( j != 7) // musht be 7
		{
			AfxMessageBox("is not 7");
			return FALSE;
		}

		jDB++;

		if( jDB==5) //一个字符
		{
			// 字符 c 对应的图形 ft[][]
			for (int i=0; i<5;i++)
			{
				for (int j=0; j<7;j++)
				{
					f5_5[num][i][j] = ft[i][j];
				}
			}
			//
			jDB = 0;
			num++;
		}
	}

	// 从 32 开始(空格--)

	// 5  X 5 da 32 a 127
	// 7  x 5 da 32 a 127
	// 9  x 7 DA 32 A 127
	// 15 x 10 DA 32 A 127
	// 16 x 10 DA 32 A 127
	// 32 x 18 DA 32 A 127

		// 
//		f5_5[][][] = {
//{{0,0,0,0,0},{},{},{},{} },
//{{0,0,0,0,0},{},{},{},{} },
//
//}
	FILE *wp = fopen("f5_7.txt", "w");
	if(wp)
	{
		fprintf(wp,"f5_5[][5][7] = {\n" );

		for (int i=32; i<num; i++)
		{
			fprintf(wp,"{");

			for (int j=0; j<5;j++)
			{
				fprintf(wp,"{");
				for (int k=0; k<7; k++)
				{
					fprintf(wp, "%d" , f5_5[i][j][k]);
					if(k<6) fprintf(wp,",");
				}
				if(j<4)	fprintf(wp,"},");
				else fprintf(wp,"}");
			}

			if( i<num-1)
			{
				if(  isprint(i) )
					fprintf(wp,"}, //%c \n" , i);
				else
					fprintf(wp,"}, //\n");
			}
			else
			{
				if(  isprint(i) )
					fprintf(wp,"} //%c \n" , i);
				else
					fprintf(wp,"} //\n");
			}
		}

		fprintf(wp,"};");

		fclose(wp);
	}

	return FALSE;
}

BOOL CGisFonts::ParseFonts9x7(CStdioFile *pFile)
{
	ASSERT(pFile);

	CString  strLine;
	int jDB = 0;

	BYTE ft[7][50];
	BYTE f5_5[256][7][9]; // 9*7 工127个
	int  num;
	num = 32;

	while ( pFile->ReadString(strLine) )
	{
		strLine.TrimLeft();
		strLine.TrimLeft(" ");
		if(strLine.IsEmpty()) continue; //为空
		if(strLine[0] == ';') continue; //注释
		strLine.MakeUpper();

		// 找 DB
		int w = strLine.Find("DB");
		if( w < 0 ) continue; //其它非数据

		// 5*5 ,每5个DB组成一个字符

		// 每行数据中,不足8比特的由指定比特组成,否则由若干个8比特组成
		strLine.Delete(0, w+2);

		int j = 0;
		for (int i=0; i<strLine.GetLength(); i++)
		{
			if(strLine[i]=='0') ft[jDB][j++] = 0;
			else if(strLine[i]=='1') ft[jDB][j++] = 1;
			else if( strLine[i] == 'B' ) break;
		}

		if( j != 9) // musht be 7
		{
			AfxMessageBox("is not 7");
			return FALSE;
		}

		jDB++;

		if( jDB==7) //一个字符
		{
			// 字符 c 对应的图形 ft[][]
			for (int i=0; i<jDB;i++)
			{
				for (int j=0; j<9;j++)
				{
					f5_5[num][i][j] = ft[i][j];
				}
			}
			//
			jDB = 0;
			num++;
		}
	}

	// 从 32 开始(空格--)

	// 5  X 5 da 32 a 127
	// 7  x 5 da 32 a 127
	// 9  x 7 DA 32 A 127
	// 15 x 10 DA 32 A 127
	// 16 x 10 DA 32 A 127
	// 32 x 18 DA 32 A 127

		// 
//		f5_5[][][] = {
//{{0,0,0,0,0},{},{},{},{} },
//{{0,0,0,0,0},{},{},{},{} },
//
//}
	FILE *wp = fopen("f9_7.txt", "w");
	if(wp)
	{
		fprintf(wp,"f5_5[][7][9] = {\n" );

		for (int i=32; i<num; i++)
		{
			fprintf(wp,"{");

			for (int j=0; j<7;j++)
			{
				fprintf(wp,"{");
				for (int k=0; k<9; k++)
				{
					fprintf(wp, "%d" , f5_5[i][j][k]);
					if(k<8) fprintf(wp,",");
				}
				if(j<6)	fprintf(wp,"},");
				else fprintf(wp,"}");
			}

			if( i<num-1)
			{
				if(  isprint(i) )
					fprintf(wp,"}, //%c \n" , i);
				else
					fprintf(wp,"}, //\n");
			}
			else
			{
				if(  isprint(i) )
					fprintf(wp,"} //%c \n" , i);
				else
					fprintf(wp,"} //\n");
			}
		}

		fprintf(wp,"};");

		fclose(wp);
	}

	return FALSE;
}


BOOL CGisFonts::ParseFonts15x10(CStdioFile *pFile)
{
	ASSERT(pFile);

	CString  strLine;
	int jDB = 0;

	BYTE ft[10][50];
	BYTE f5_5[256][10][15]; // 15*10 工127个
	int  num;
	num = 32;

	while ( pFile->ReadString(strLine) )
	{
		strLine.TrimLeft();
		strLine.TrimLeft(" ");
		if(strLine.IsEmpty()) continue; //为空
		if(strLine[0] == ';') continue; //注释
		strLine.MakeUpper();

		// 找 DB
		int w = strLine.Find("DB");
		if( w < 0 ) continue; //其它非数据

		// 5*5 ,每5个DB组成一个字符

		// 每行数据中,不足8比特的由指定比特组成,否则由若干个8比特组成
		strLine.Delete(0, w+2);

		int j = 0;
		for (int i=0; i<strLine.GetLength(); i++)
		{
			if(strLine[i]=='0') ft[jDB][j++] = 0;
			else if(strLine[i]=='1') ft[jDB][j++] = 1;
			else if( strLine[i] == ';' ) break;
		}

		if( j != 15) // musht be 7
		{
			AfxMessageBox("is not 7");
			return FALSE;
		}

		jDB++;

		if( jDB==10) //一个字符
		{
			// 字符 c 对应的图形 ft[][]
			for (int i=0; i<jDB;i++)
			{
				for (int j=0; j<15;j++)
				{
					f5_5[num][i][j] = ft[i][j];
				}
			}
			//
			jDB = 0;
			num++;
		}
	}

	FILE *wp = fopen("f15_10.txt", "w");
	if(wp)
	{
		fprintf(wp,"static char f15_10[][10][15] = {\n" );

		for (int i=32; i<num; i++)
		{
			fprintf(wp,"{");

			for (int j=0; j<10;j++)
			{
				fprintf(wp,"{");
				for (int k=0; k<15; k++)
				{
					fprintf(wp, "%d" , f5_5[i][j][k]);
					if(k<14) fprintf(wp,",");
				}
				if(j<9)	fprintf(wp,"},");
				else fprintf(wp,"}");
			}

			if( i<num-1)
			{
				if(  isprint(i) )
					fprintf(wp,"}, //%c \n" , i);
				else
					fprintf(wp,"}, //\n");
			}
			else
			{
				if(  isprint(i) )
					fprintf(wp,"} //%c \n" , i);
				else
					fprintf(wp,"} //\n");
			}
		}

		fprintf(wp,"};");

		fclose(wp);
	}

	return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -