Example #1
0
static void x1knjcpy(UINT8 *dst, const UINT8 *src, int from, int to) {

	int		i, j, k;
const UINT8	*p;
	UINT8	*q;
	UINT	sjis;

	for (i=from; i<to; i++) {
		q = dst + 0x21000 + (i << 4);
		for (j=0x21; j<0x7f; j++) {
			p = NULL;
			// 漢字のポインタを求める
			sjis = jis2sjis(((i + 0x20) << 8) | j);
			if (sjis >= 0x8140 && sjis < 0x84c0) {
				p = src + 0x00000 + ((sjis - 0x8140) << 5);
			}
			else if (sjis >= 0x8890 && sjis < 0xa000) {
				p = src + 0x07000 + ((sjis - 0x8890) << 5);
			}
			else if (sjis >= 0xe040 && sjis < 0xeab0) {
				p = src + 0x35e00 + ((sjis - 0xe040) << 5);
			}
			if (p) {							// 規格内コードならば
				// コピーする
				for (k=0; k<16; k++) {
					*(q+k) = *p++;
					*(q+k+0x800) = *p++;
				}
			}
			q += 0x1000;
		}
	}
}
Example #2
0
char    *
any2sjis( const char *p )
{
    char    *q;

    q = utf2sjis( p );
    if ( !q ) {
        // p の charset は UTF-8 ではない
        if ( strstr( p, "\033$@" ) || strstr( p, "\033$B" ) )
            q = jis2sjis( p );
        else {
            q = euc2sjis( p );
            if ( !q )
                q = (char *)p;  // すでに Shift_JIS 変換済み(とみなす)
        }
    }

    return ( q );
}