[wadalabfont-kit] / renderer / naal.l  

Annotation of /renderer/naal.l

Parent Directory | Revision Log

Revision: 1.4 - (view) (download)

1 : ktanaka 1.4 (declare (naalr local_gothicwidth) special)
2 : ktanaka 1.1 (deftypehook gothic
3 :     (function gothic-prim))
4 :     (subfont naal gothic)
5 :     (setq circle-ratio (quotient (times 4.0 (difference (sqrt 2) 1)) 3.0))
6 :     (defkazari naal ((tate hidari tatehidari kokoro magaritate tasuki tatehane tsukurihane kagi) 0
7 :     yoko 1)
8 :     (naalout (vref cross 0)(vref cross 1)(vref cross 2)(vref cross 3)))
9 :     (defkazari naal ((tate hidari tatehidari kokoro magaritate tasuki tatehane tsukurihane kagi) 1
10 :     yoko 0)
11 :     (naalin (vref cross 0)(vref cross 1)(vref cross 2)(vref cross 3)))
12 :     (defkazari naal ((tate hidari tatehidari kokoro magaritate tasuki tatehane tsukurihane kagi) 1
13 :     yoko 3)
14 :     (naalout (vref cross 2)(vref cross 3)(vref cross 0)(vref cross 1)))
15 :     (defkazari naal ((tate hidari tatehidari kokoro magaritate tasuki tatehane tsukurihane kagi) 0
16 :     yoko 2)
17 :     (naalin (vref cross 2)(vref cross 3)(vref cross 0)(vref cross 1)))
18 :     (defkazari naal ((tate hidari tatehidari kokoro magaritate tasuki tatehane tsukurihane kagi) 2
19 :     (kozato yoko) 0)
20 :     (naalout (vref cross 1)(vref cross 0)(vref cross 3)(vref cross 2)))
21 :     (defkazari naal ((tate hidari tatehidari kokoro magaritate tasuki tatehane tsukurihane kagi) 3
22 :     (kozato yoko) 1)
23 :     (naalin (vref cross 1)(vref cross 0)(vref cross 3)(vref cross 2)))
24 :     (defkazari naal ((tate hidari tatehidari kokoro magaritate tasuki tatehane tsukurihane kagi) 3
25 :     yoko 2)
26 :     (naalout (vref cross 3)(vref cross 2)(vref cross 1)(vref cross 0)))
27 :     (defkazari naal ((tate hidari tatehidari kokoro magaritate tasuki tatehane tsukurihane kagi) 2
28 :     yoko 3)
29 :     (naalin (vref cross 3)(vref cross 2)(vref cross 1)(vref cross 0)))
30 :    
31 :     (defkazari naal ((yoko ten migiue kozato tasuki sanzui) 0
32 :     (yoko ten migiue kozato tasuki sanzui) 1)
33 :     (naalstart (vref cross 0)(vref cross 1)(vref cross 2)(vref cross 3)))
34 :     (defkazari naal ((kagi) 0
35 :     (kagi) 1)
36 :     (naalstart (vref cross 0)(vref cross 1)(vref cross 2)(vref cross 3)))
37 :     (defkazari naal ((yoko ten migiue kozato kagi tasuki sanzui) 2
38 :     (yoko ten migiue kozato kagi tasuki sanzui) 3)
39 :     (reverse
40 :     (naalstart (vref cross 1)(vref cross 0)(vref cross 3)(vref cross 2))))
41 :     (defkazari naal ((tate hidari tatehidari kokoro magaritate tasuki migi) 0
42 :     (tate hidari tatehidari kokoro magaritate tasuki migi) 1)
43 :     (naalstart (vref cross 0)(vref cross 1)(vref cross 2)(vref cross 3)))
44 :     (defkazari naal ((tate hidari tatehidari magaritate migi) 2
45 :     (tate hidari tatehidari magaritate migi) 3)
46 :     (reverse
47 :     (naalstart (vref cross 1)(vref cross 0)(vref cross 3)(vref cross 2))))
48 :     (defkazari naal ((tatehane tsukurihane shin-nyuu hira-long) 0
49 :     (tatehane tsukurihane shin-nyuu hira-long) 1)
50 :     (naalstart (vref cross 0)(vref cross 1)(vref cross 2)(vref cross 3)))
51 :     (defkazari naal ((shin-nyuu hira-long) 2
52 :     (shin-nyuu hira-long) 3)
53 :     (reverse
54 :     (naalstart (vref cross 1)(vref cross 0)(vref cross 3)(vref cross 2))))
55 :     (defkazari naal ((tatehane tsukurihane kokoro tasuki) 2
56 :     (tatehane tsukurihane kokoro tasuki) 3)
57 :     (reverse
58 :     (naalstart1 (vref cross 1)(vref cross 0)(vref cross 3)(vref cross 2) 20)))
59 :     (defun naalstart1 (p0 p1 p2 p3 offset)
60 :     (lets ((v (normlen2 offset (diff2 p0 p2))))
61 :     (naalstart (plus2 p0 v)(plus2 p1 v)(plus2 p2 v)(plus2 p3 v))))
62 :    
63 :     ;
64 :     (defun naalhane (p0 p1 p2 w0 w1 w2)
65 :     (lets ((d0 (diff2 p1 p0))
66 :     (d1 (diff2 p2 p1))
67 :     (l0 (normlen2 w0 (rot270 d0)))
68 :     (l1 (normlen2 w0 (rot270 d1)))
69 :     (a0 (plus2 p0 l0))
70 :     (a2 (plus2 p2 (normlen2 w1 l1)))
71 :     (d2 (diff2 a2 (plus2 l1 (diff2 p1 l0))))
72 :     (a1 (cross2 a0 a2 d0 d2))
73 :     (a3 (plus2 a2 (normlen2 w2 d2)))
74 :     (a4 a3)
75 :     (b0 (diff2 p0 l0))
76 :     (b1 (diff2 (diff2 p1 l0) l1))
77 :     (b2 (diff2 p2 (normlen2 w1 l1)))
78 :     (b4 b2)
79 :     (t0 (plus2 a2 (normlen2 w0 d2)))
80 :     (t1 (diff2 p2 (normlen2 (times w1 -0.2) l1)))
81 :     (b3 (cross2 a3 b2 (diff2 t1 a3)(diff2 t0 b2)))
82 :     (b3 (cond ((lessp (metric2 a3 b3) 1.0)
83 :     (inter2 b2 a3 0.5))
84 :     (t b3)))
85 :     )
86 :     `(((angle .,a0)
87 :     (bezier .,(inter2 a0 a1 0.66666))
88 :     (bezier .,(inter2 a4 a1 0.66666))
89 :     (angle .,a4)
90 :     ; (angle .,a3)
91 :     )
92 :     ((angle .,b0)
93 :     (bezier .,(inter2 b0 b1 0.66666))
94 :     (bezier .,(inter2 b4 b1 0.66666))
95 :     (angle .,b4)))))
96 :     (defun naalstart (p0 p1 p2 p3)
97 :     (lets ((p0 (inter2 p0 p1 0.01))(p2 (inter2 p2 p3 0.01))
98 :     (p02 (inter2 p0 p2 0.499))
99 :     (p01 (inter2 p0 p1 0.45))
100 :     (p13 (inter2 p1 p3 0.45)))
101 :     `((angle .,p02)
102 :     (bezier .,(inter2 p02 p0 circle-ratio))
103 :     (bezier .,(inter2 p01 p0 circle-ratio))
104 :     (angle .,p01)
105 :     (bezier .,(inter2 p01 p1 circle-ratio))
106 :     (bezier .,(inter2 p13 p1 circle-ratio))
107 :     (angle .,p13))))
108 :     (setq naalr nil)
109 :     (defun naalout (p0 p1 p2 p3)
110 :     (lets ((l (min (plus (metric2 p3 p2) naalr) (times 1.9 (metric2 p3 p2))))
111 :     (a0 (plus2 p1 (normlen2 l(diff2 p0 p1))))
112 :     (a1 (plus2 p1 (normlen2 l(diff2 p3 p1)))))
113 :     `((angle .,a0)
114 :     (bezier .,(inter2 a0 p1 circle-ratio))
115 :     (bezier .,(inter2 a1 p1 circle-ratio))
116 :     (angle .,a1))))
117 :     (defun naalin (p0 p1 p2 p3)
118 :     (lets ((costheta (costheta (diff2 p2 p3)(diff2 p2 p0)))
119 :     (diffl (times costheta (metric2 p2 p3)))
120 :     (l (difference (min naalr (times 0.9 (metric2 p3 p2))) diffl))
121 :     (b0 (plus2 p2 (normlen2 l (diff2 p2 p3))))
122 :     (b1 (plus2 p2 (normlen2 l (diff2 p2 p0)))))
123 :     (cond ((greaterp costheta 0.3)
124 :     `((angle .,p2)))
125 :     (t
126 :     `((angle .,b0)
127 :     (bezier .,(inter2 b0 p2 circle-ratio))
128 :     (bezier .,(inter2 b1 p2 circle-ratio))
129 :     (angle .,b1))))))
130 :     ;
131 :     (deftypehook naal
132 :     (function naal-prim))
133 :     ;
134 :     (defun naalr (prim)
135 :     (lets ((points (car prim))
136 :     (elements (cadr prim))
137 :     (once)(twice)(ret (times local_gothicwidth 10)))
138 :     (do ((l elements (cdr l)))
139 :     ((atom l))
140 :     (do ((ll (cadr (car l))(cdr ll)))
141 :     ((atom ll))
142 :     (cond ((memq (car ll) twice))
143 :     ((memq (car ll) once)
144 :     (push (car ll) twice))
145 :     (t
146 :     (push (car ll) once)))))
147 :     (do ((l elements (cdr l))(p0)(p1)(r))
148 :     ((atom l)
149 :     (times 0.49
150 :     (difference ret (times local_gothicwidth 2))))
151 :     (cond ((and (memq (setq p0 (first (cadr (car l)))) twice)
152 :     (memq (setq p1 (car (last (cadr (car l))))) twice))
153 :     (setq r (metric2 (nth p0 points)(nth p1 points)))
154 :     (and (lessp r ret)(setq ret r)))
155 :     ((or (memq (setq p0 (first (cadr (car l)))) twice)
156 :     (memq (setq p1 (car (last (cadr (car l))))) twice))
157 :     (setq r (times 1.1 (metric2 (nth p0 points)(nth p1 points))))
158 :     (and (lessp r ret)(setq ret r)))))))
159 :    
160 :     ;
161 :     (defun naal-prim (prim)
162 :     (lets ((prim (last-joint (gothic-prim prim))))
163 :     (setq naalr (naalr prim))
164 :     prim))
165 :     ;
166 :     ; 縦跳ね
167 :     ;
168 :     (defelement gothic tatehane
169 :     (lets ((p0 (car points))
170 :     (p1 (cadr points))
171 :     (p2 (caddr points))
172 :     (w local_gothicwidth)
173 :     (p1 (plus2 p1 (normlen2 w (diff2 p0 p1))))
174 :     (p2 (plus2 p2 (normlen2 w (diff2 p0 p1))))
175 :     (len0 (metric2 p0 p1))
176 :     (len1 (metric2 p1 p2))
177 :     (p01 (inter2 p1 p0 (quotient len1 len0)))
178 :     (p2 (plus2 p1 (normlen2 (max (times 2.0 w)(metric2 p2 p1))
179 :     (diff2 p2 p1)))))
180 :     (line2 p0 p01 w (naalhane p01 p1 p2 w w w))))
181 :     ;
182 :     ; こざと偏の一部
183 :     ;
184 :     (defelement gothic kozato
185 :     (lets ((p0 (car points))
186 :     (p1 (cadr points))
187 :     (p2 (caddr points))
188 :     (p3 (fourth points))
189 :     (p12 (inter2 p1 p2 0.5))
190 :     (w local_gothicwidth))
191 :     (curve2 p0 (inter2 p0 p1 0.6)(inter2 p12 p1 0.6) p12
192 :     w w w w
193 :     (naalhane p12 p2 p3
194 :     w w w))))
195 :     ;
196 :     ; 旁の跳ね
197 :     ;
198 :     (defelement gothic tsukurihane
199 :     (lets ((p0 (car points))
200 :     (p1 (cadr points))
201 :     (p2 (caddr points))
202 :     (p3 (cadddr points))
203 :     (w local_gothicwidth)
204 :     (p2 (plus2 p2 (normlen2 w (diff2 p1 p2))))
205 :     (p3 (plus2 p3 (normlen2 w (diff2 p1 p2))))
206 :     (p3 (cond ((lessp (metric2 p2 p3) (times w 2))
207 :     (plus2 p2 (normlen2 (times w 2)(diff2 p3 p2))))
208 :     (t p3)))
209 :     (p4 (inter2 p1 p2 0.5))
210 :     )
211 :     (curve2 p0 (inter2 p0 p1 0.6)(inter2 p4 p1 0.6) p4
212 :     w w w w
213 :     (naalhane p4 p2 p3
214 :     w w w))))
215 :    

ktanaka

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help