📄 fonts.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 + -