/********************************************************************** 功能: 获取点阵信息 参数: wCode 在这里预留,主要是因为前面有保存一个全局的g_dwCharInfo,也就知道了该字符的相应信息(宽度+点阵信息的起始地址)。 fontArray 存放点阵信息 bytesPerLine 每一行占多少个字节。 **********************************************************************/ int ReadCharDotArray(WORD wCode, WORD *bytesPerLine) { *bytesPerLine= (WORD)((GET_FONT_WIDTH(g_dwCharInfo))+7)/PIXELS_PER_BYTE; if(g_dwCharInfo > 0) { DWORD nDataLen = *bytesPerLine * _fl_header.YSize; DWORD dwOffset = GET_FONT_OFFADDR(g_dwCharInfo); //获取字符点阵的地址信息(低26位) return dwOffset; } return 0; }
// 获取字符的像素宽度 DWORD ReadCharDistX_U(WORD wCode) { DWORD offset ; int i; g_dwCharInfo = 0; for(i = 0;i<_fl_header.nSection;i++) { if(wCode >= _fl_header.pSection[i].First && wCode <= _fl_header.pSection[i].Last) break; } if(i >= _fl_header.nSection) return 0; offset = BASE_FONT_ADDR + _fl_header.pSection[i].OffAddr+ FONT_INDEX_TAB_SIZE*(wCode - _fl_header.pSection[i].First ); g_dwCharInfo = (*(DWORD *)offset); return GET_FONT_WIDTH(g_dwCharInfo); }
// 获取字符的像素宽度 DWORD ReadCharDistX_U(WORD wCode) { DWORD offset ; int i; g_dwCharInfo = 0; for(i = 0;i<_fl_header.nSection;i++) { if(wCode >= _fl_header.pSection[i].First && wCode <= _fl_header.pSection[i].Last) break; } if(i >= _fl_header.nSection) return 0; offset = _fl_header.pSection[i].OffAddr+ FONT_INDEX_TAB_SIZE*(wCode - _fl_header.pSection[i].First ); fseek(g_prf, offset, SEEK_SET); fread(&g_dwCharInfo, sizeof(DWORD), 1, g_prf); return GET_FONT_WIDTH(g_dwCharInfo); }