diff options
Diffstat (limited to 'language/japanese/ptex/kanji.c')
-rw-r--r-- | language/japanese/ptex/kanji.c | 233 |
1 files changed, 0 insertions, 233 deletions
diff --git a/language/japanese/ptex/kanji.c b/language/japanese/ptex/kanji.c deleted file mode 100644 index c14562fb44..0000000000 --- a/language/japanese/ptex/kanji.c +++ /dev/null @@ -1,233 +0,0 @@ -/* - * KANJI Code conversion routines. - */ - -#define KANJI_C -#include "kanji.h" - -boolean iskanji1(c) - unsigned char c; -{ - c &= 0xff; - if (prockanjicode == SJIS) - return((c>=0x81 && c<=0x9f) || (c>=0xe0 && c<=0xfc)); - else - return(c>=0xa1 && c<=0xfe); -} - -boolean iskanji2(c) - unsigned char c; -{ - c &= 0xff; - if (prockanjicode == SJIS) - return(c>=0x40 && c<=0xfc && c!=0x7f); - else - return(c>=0xa1 && c<=0xfe); -} - -boolean checkkanji(c) - integer c; -{ - if(c<0 || c>256) - return(iskanji1(c>>8) && iskanji2(c & 0xff)); - return(-1); -} - -#ifdef OLDSTYLE -integer calcpos(c) -{ - register int c1, c2; - - if(c<256) return(c<<1); - c1 = c>>8; - c2 = c & 0xff; - if(c1) { - if (prockanjicode == SJIS) - return((c2+(c2<<(c1-0x81)) & 0xff)<<1); - else - return((c2+(c2<<(c1-0xa1)) & 0xff)<<1); - } else - return(((c2+c2+1) & 0xff)<<1); -} -#else /* OLDSTYLE */ -integer calcpos(c) - integer c; -{ - register unsigned char c1, c2; - integer ret; - - if(c>=0 && c<=255) return(c); - c1 = (c >> 8) & 0xff; - c2 = c & 0xff; - if(iskanji1(c1)) { - if (prockanjicode == SJIS) { - c1 = ((c1 - 0x81) % 4) * 64; /* c1 = 0, 64, 128, 192 */ - c2 = c2 % 64; /* c2 = 0..63 */ - } else { - c1 = ((c1 - 0xa1) % 4) * 64; /* c1 = 0, 64, 128, 192 */ - c2 = c2 % 64; /* c2 = 0..63 */ - } - return(c1 + c2); /* ret = 0..255 */ - } else - return(c2); -} -#endif /* OLDSTYLE */ - -/* - * EUC to JIS X0208 code conversion - */ -integer EUCtoJIS(kcode) - integer kcode; -{ - return(kcode & 0x7f7f); -} - -/* - * JIS X0208 to EUC code conversion - */ -integer JIStoEUC(kcode) - integer kcode; -{ - return(kcode | 0x8080); -} - -/* - * SJIStoJIS : Shift JIS to JIS Kanji code conversion - */ -integer SJIStoJIS(kcode) - integer kcode; -{ - register short byte1, byte2; - - byte1 = (kcode>>8) & 0xff; - byte2 = kcode & 0xff; - byte1 -= ( byte1>=0xa0 ) ? 0xc1 : 0x81; - kcode = ((byte1<<1) + 0x21)<<8; - if( byte2>=0x9f ) { - kcode += 0x0100; - kcode |= (byte2 - 0x7e) & 0xff; - } else { - kcode |= (byte2 - ((byte2<=0x7e) ? 0x1f : 0x20 )) & 0xff; - } - return(kcode); -} - -/* - * JIS X0208 to Shift JIS code conversion - */ -integer JIStoSJIS(kcode) - integer kcode; -{ - register integer high, low; - register integer nh, nl; - - high = (kcode>>8) & 0xff; - low = kcode & 0xff; - nh = ((high-0x21)>>1) + 0x81; - if (nh>0x9f) nh += 0x40; - if (high & 1) { - nl = low + 0x1f; - if (low>0x5f) nl++; - } else - nl = low + 0x7e; - if(iskanji1(nh) && iskanji2(nl)) - return((nh<<8) | nl); - else - return(0x813f); -} - -/* - * Shift JIS to EUC Kanji code conversion - */ -integer SJIStoEUC(kcode) - integer kcode; -{ - return(SJIStoJIS(kcode) | 0x8080 ); -} - -/* - * EUC to SJIS Kanji code conversion - */ -integer EUCtoSJIS(kcode) - integer kcode; -{ - return(JIStoSJIS(kcode & 0x7f7f)); -} - -/* - * KUTEN to JIS kanji code conversion - */ -integer kuten2jis(kcode) - integer kcode; -{ - register short byte1, byte2; - - byte1 = (kcode>>8) & 0xff; - byte2 = kcode & 0xff; - - /* in case of undefined in kuten code table */ - if (byte1 == 0 || byte1 > 95 || byte2 == 0 || byte2 > 95) - return(-1); - - byte1 += 0x20; - byte2 += 0x20; - - return (byte1<<8 | byte2); -} - -/* - * KUTEN to EUC Kanji code conversion - */ -integer KUTENtoEUC(kcode) - integer kcode; -{ - return(JIStoEUC(kuten2jis(kcode))); -} - -/* - * KUTENtoSJIS Kanji code conversion - */ -integer KUTENtoSJIS(kcode) - integer kcode; -{ - return(JIStoSJIS(kuten2jis(kcode))); -} - -void putc2(c, fp) - unsigned char c; - FILE *fp; -{ - static integer kanji[NOFILE]; - static unsigned char c1[NOFILE]; - integer jc; - register fd; - - fd = fileno(fp); - if (kanji[fd] == 1) { - jc = (c1[fd] << 8) | c; - if (prockanjicode == JIS) jc = EUCtoJIS(jc); - (void) putc(jc >> 8, fp); - (void) putc(jc & 0xff, fp); - kanji[fd] = 2; - } else if (iskanji1(c)) { - if (kanji[fd] == 0) { - if (prockanjicode == JIS) { - (void) putc('\033', fp); - (void) putc('$', fp); - (void) putc('B', fp); - } - } - c1[fd] = c; - kanji[fd] = 1; - } else { - if (kanji[fd] == 2) { - if (prockanjicode == JIS) { - (void) putc('\033', fp); - (void) putc('(', fp); - (void) putc('B', fp); - } - kanji[fd] = 0; - } - (void) putc(c, fp); - } -} |