public bool LoadData(sCustFontData custFontData) { RangeData rangeData = custFontData.pRangeDetails.pRangeData; byte[] WidthArray = custFontData.pWidthArray; byte[] DWidthArray = custFontData.pDWidthArray; UInt32[] OffsetArray = custFontData.pOffsetArray; UInt16[] OffsetArrayC = custFontData.pOffsetArrayC; byte[] DataArray = custFontData.pDataArray; int index = 0; m_width = custFontData.nWidth; m_height = custFontData.nHeight; if (DWidthArray == null) { DWidthArray = WidthArray; } if (custFontData.nEquiDistant == 0) { m_header = "STARTFONT 2.1\r\n" + "FONTBOUNDINGBOX " + custFontData.nWidth + " " + custFontData.nHeight + " " + "0" + " " + "0" + "\r\n" + "STARTPROPERTIES " + "2" + "\r\n" + "FONT_ASCENT " + custFontData.nAscent + "\r\n" + "FONT_DESCENT " + custFontData.nDescent + "\r\n" + "ENDPROPERTIES" + "\r\n"; // + //"CHARS " + m_rangeData.m_chars + "\r\n"; for (int i = 0; i < rangeData.m_rangeData.Length; i++) { for (UInt16 j = rangeData.m_rangeData[i].nMin; j < rangeData.m_rangeData[i].nMax + 1; j++) { if (custFontData.nEquiDistant == 0) { FontBitmap fbmp = new FontBitmap(j, WidthArray[index], DWidthArray[index], custFontData.nHeight, index, DataArray, (UInt32)(OffsetArrayC[index])); m_FontArray[fbmp.m_ch] = fbmp; } else { FontBitmap fbmp = new FontBitmap(j, custFontData.nWidth, custFontData.nWidth, custFontData.nHeight, index, DataArray, (UInt32)index * custFontData.nCharBytes); m_FontArray[fbmp.m_ch] = fbmp; } index++; } } return(true); } return(false); //temp += "ENDFONT" + "\r\n"; }
int resource_get_fontres(byte[] bin) { UInt32 index; int i; UInt32 rom_base = 0; UInt32 rom_size = (UInt32)m_bin.Length; int offset; //resource_get_langpack2ndJumpTbl(); for (index = 0; index < rom_size - 50; index += 4) { sCustFontData tmp = new sCustFontData(); offset = (int)index; if (tmp.CheckData(g_regionInfo, offset)) { //new sCustFontData(g_regionInfo, ref offset); offset = (int)index; BdfClass bdf = new BdfClass(); try{ if (bdf.LoadData(new sCustFontData(g_regionInfo, ref offset))) { bdf.SaveFile(m_directory + "\\cust" + index + ".bdf"); } } catch { continue; } } else { continue; } } return(0); }
public bool LoadData(string CustFontData, string RangeDataS, string Width, string DWidth, string Offset, string Data) { sCustFontData custFontData; RangeData rangeData; ByteData s_data; ByteData width; ByteData dWidth; UInt32Data s_offset; int index = 0; custFontData = new sCustFontData(CustFontData); rangeData = new RangeData(RangeDataS); m_width = custFontData.nWidth; m_height = custFontData.nHeight; if (custFontData.nEquiDistant == 0) { if (Width == null || Width.Length <= 0) { MessageBox.Show("Width can not be empty!"); return(false); } width = new ByteData(Width); if (DWidth != null && DWidth.Length > 0) { dWidth = new ByteData(DWidth); } else { dWidth = width; } if (dWidth.m_data.Length != width.m_data.Length) { MessageBox.Show("Number of different Width & Dwidth!"); return(false); } s_offset = new UInt32Data(Offset); s_data = new ByteData(Data); m_header = "STARTFONT 2.1\r\n" + "FONTBOUNDINGBOX " + custFontData.nWidth + " " + custFontData.nHeight + " " + "0" + " " + "0" + "\r\n" + "STARTPROPERTIES " + "2" + "\r\n" + "FONT_ASCENT " + custFontData.nAscent + "\r\n" + "FONT_DESCENT " + custFontData.nDescent + "\r\n" + "ENDPROPERTIES" + "\r\n"; // + //"CHARS " + m_rangeData.m_chars + "\r\n"; for (int i = 0; i < rangeData.m_rangeData.Length; i++) { for (UInt16 j = rangeData.m_rangeData[i].nMin; j < rangeData.m_rangeData[i].nMax + 1; j++) { FontBitmap fbmp = new FontBitmap(j, width.m_data[index], dWidth.m_data[index], custFontData.nHeight, index, s_data.m_data, s_offset.m_data[index]); m_FontArray[fbmp.m_ch] = fbmp; index++; } } return(true); } else { s_offset = new UInt32Data(Offset); s_data = new ByteData(Data); m_header = "STARTFONT 2.1\r\n" + "FONTBOUNDINGBOX " + custFontData.nWidth + " " + custFontData.nHeight + " " + "0" + " " + "0" + "\r\n" + "STARTPROPERTIES " + "2" + "\r\n" + "FONT_ASCENT " + custFontData.nAscent + "\r\n" + "FONT_DESCENT " + custFontData.nDescent + "\r\n" + "ENDPROPERTIES" + "\r\n"; // + //"CHARS " + m_rangeData.m_chars + "\r\n"; for (int i = 0; i < rangeData.m_rangeData.Length; i++) { for (UInt16 j = rangeData.m_rangeData[i].nMin; j < rangeData.m_rangeData[i].nMax + 1; j++) { FontBitmap fbmp = new FontBitmap(j, custFontData.nWidth, custFontData.nWidth, custFontData.nHeight, index, s_data.m_data, (uint)(s_offset.m_data[i] + (j - rangeData.m_rangeData[i].nMin) * ((custFontData.nWidth * custFontData.nHeight + 7) / 8))); m_FontArray[fbmp.m_ch] = fbmp; index++; } } return(true); } return(false); //temp += "ENDFONT" + "\r\n"; }