I made a bug report and patch for this. It's actually an undo of
w32fns.c commit by Jason Rumney on 2005-01-03 (check src/ChangeLog for
details). The 2nd item of that ChangeLog entry is the cause of
this problem.
I wonder why this has not been fixed yet, maybe he cannot make tests on
his computer? It's easy to verify: use
`create-fontset-from-fontset-spec' to assign a font for chinese-gb2312
and you can see all Chinese chars is 4 times wide of ascii chars.
That's really a serious bug! It's only on w32 and only appears
with `create-fontset-from-fontset-spec'. A simple undo can solve
this problem, but maybe it's not the best way. Anyway, I hope
somebody can get it fixed.