File: kanji.c

package info (click to toggle)
vftool 2.0alpha-2
  • links: PTS
  • area: main
  • in suites: sarge, woody
  • size: 376 kB
  • ctags: 770
  • sloc: ansic: 2,748; makefile: 186; sh: 79
file content (117 lines) | stat: -rw-r--r-- 1,747 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include	<stdio.h>
#include	"defs.h"

/* jsubfont */
/*#include	"jsub.h"*/

char *jsf_names[] = {
    "",
    "jsy",
    "jroma",
    "jhira",
    "jkata",
    "jgreek",
    "jrussian",
    "jkeisen",
    "jka",
    "jkb",
    "jkc",
    "jkd",
    "jke",
    "jkf",
    "jkg",
    "jkh",
    "jki",
    "jkj",
    "jkk",
    "jkl",
    "jkm",
    "jkn",
    "jko",
    "jkp",
    "jkq",
    "jkr",
    "jks",
    "jkt",
    "jku",
    "jkv",
    "jkw",
    "jkx",
    "jky",
    "jkz",
    NULL
};

char *
jsubfontname(f)
{
    return (jsf_names[f]);
}

#define	makejis(k,t)	((k+0x20)*256+t+0x20)

compute_jis(f, c)
int f, c;
{
    register int n;

    if (f <= 7) {
	if (f == 1) {
	    if (c >= 100) {
		return (makejis(2, c-100));
	    } else {
		return (makejis(1, c));
	    }
	} else if (f == 2) {
	    return (makejis(3, c-32));
	} else {
	    return (makejis(f+1, c));
	}
    } else if (f <= 19) {	/* Daiichi Suijun */
	n = (f-8)*256+c;
	return (makejis((n/94)+16, (n%94)+1));
    } else {			/* Daini Suijun */
	n = (f-20)*256+c;
	return (makejis((n/94)+48, (n%94)+1));
    }
}

compute_fc(ku, ten, f, c)
int ku, ten;
int *f, *c;
{
    register int n;

    *f = 1;
    *c = 1;
    if (ku <= 0 || (9 <= ku && ku <= 15) || ku > 84) {
	return (FALSE);
    }
    if (ten < 1 || ten > 94) {
	return (FALSE);
    }
    if (ku <= 8) {
	if (ku == 1) {
	    *f = 1;
	    *c = ten;
	} else if (ku == 2) {
	    *f = 1;
	    *c = ten+100;
	} else if (ku == 3) {
	    *f = 2;
	    *c = ten+32;
	} else {
	    *f = ku-1;
	    *c = ten;
	}
    } else if (ku <= 47) {	/* Daiich Suijun */
	n = (ku-16)*94+ten-1;
	*f = (n/256)+8;
	*c = n%256;
    } else {			/* Daini Suijun */
	n = (ku-48)*94+ten-1;
	*f = (n/256)+20;
	*c = n%256;
    }
    return (TRUE);
}