FC2ブログ
--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--:-- | スポンサー広告  TOP

2016/11/07

GOHAN EUC-JPぱっち成功














GB2312(EUC-CN) !!!GOHANが対応しているCP

GBK≒Micorosoft CP936   M$windows95標準

GB18030≒Microsoft CP54936  中国標準
https://charset.uic.jp/compare/cp51932/euc-cn/bold/
gbkじゃなくて手前のeuccnだったか、EUC-JPとコード・ページ範囲が似ているので漢字もつかえるといえば使えるかなぁ,昔読んだGIHYOのほんだかにも隅っこにかいてあった http://gihyo.jp/magazine/wdpress/plus/978-4-7741-4164-0/0001
半角カナと0XFB??以降がフリーズするので不完全ではあるがいちおう差し替えは成功したので
あとは半角部分だけかな,ぱう以外だとJISKANと東雲あたりがつかえるk


private void button3_Click(object sender, EventArgs e)
{

System.IO.FileStream fs = new System.IO.FileStream(
"cnv.FNT",
System.IO.FileMode.Open,
System.IO.FileAccess.Read);
byte[] bs = new byte[fs.Length];
fs.Read(bs, 0, 18);


int encode = bs[16];
int tablelen = bs[17];

byte[] tbl = new byte[tablelen*4];
fs.Read(tbl, 0, tbl.Length);
byte[] font = new byte[fs.Length-18- tablelen * 4];
fs.Read(font, 0, font.Length);


fs.Close();

int[] cp = new int[font.Length/32];

int big = 0;
int big2 = 0;
int ct = 0;
for(var i = 0; i < tbl.Length; i=i+4)
{
big = tbl[i] + tbl[i + 1] * 256;
big2 = tbl[i+2] + tbl[i + 3] * 256;
for(var k = 0; big + k <= big2; k++)
{
cp[ct] = big + k;
ct++;
}

}
int pos = 0;
byte[] sjis = new byte[2];
byte[] euc = new byte[2];
byte[] gohan = new byte[font.Length];
string s = "";

for(var i = 0; i < cp.Length; i++)
{
sjis[0] = Convert.ToByte(cp[i]/ 256);
sjis[1] = Convert.ToByte(cp[i] & 255);
s = Encoding.GetEncoding(932).GetString(sjis);
euc = Encoding.GetEncoding(51932).GetBytes(s);
pos = (euc[0] - 0xa1) * 94 * 32 + (euc[1] - 0xa1) * 32;
if (pos < font.Length - 32)
{
Array.ConstrainedCopy(font, i * 32, gohan, pos, 32);
}
}

Array.Resize(ref gohan, 268736-0x5f0);

System.IO.FileStream ffs = new System.IO.FileStream(
"FS.bin",
System.IO.FileMode.Create,
System.IO.FileAccess.Write);
//バイト型配列の内容をすべて書き込む
ffs.Write(gohan, 0, gohan.Length);
//閉じる
ffs.Close();

return;

}
}

スポンサーサイト

02:25 | zcheat/gohanmemCOMMENT(0)TRACKBACK(0)  TOP

コメント

コメントの投稿



秘密にする

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。