[wadalabfont-kit] / lisp / test / kananorm.l  

Annotation of /lisp/test/kananorm.l

Parent Directory | Revision Log

Revision: 1.1.1.1 - (view) (download)

1 : ktanaka 1.1 (setq kanacenter '(200 200))
2 :     (setq kanaspace 300)
3 :     (setq kanawidth 25)
4 :     (defun fixxy (p)
5 :     `(,(fix (car p)) ,(fix (cadr p)) .,(cddr p)))
6 :     (defun kananorms (prims (filename))
7 :     (lets ((standard-output
8 :     (cond (filename (outopen (stream filename)))
9 :     (t standard-output))))
10 :     (do ((l prims (cdr l))
11 :     (prim))
12 :     ((atom l))
13 :     (setq prim (kananorm (applykanji (car l))))
14 :     (prind `(defprimitive mincho ,(car l) ',prim)))))
15 :     (setq wratio 1.4)
16 :     (defun kananorm(prim)
17 :     (lets ((points (car prim))
18 :     (elements (cadr prim))
19 :     (maxx)(minx)(maxy)(miny)(maxw 0)
20 :     (newpoints)(newelements)
21 :     (width)(height)(ratio)(meanx)(meany)(affine);(wratio)
22 :     (x)(y)(hirawidth)
23 :     )
24 :     (do ((l points (cdr l)))
25 :     ((atom l))
26 :     (setq x (caar l) y (cadar l))
27 :     (and (or (null maxx)(lessp maxx x))(setq maxx x))
28 :     (and (or (null maxy)(lessp maxy y))(setq maxy y))
29 :     (and (or (null minx)(lessp x minx))(setq minx x))
30 :     (and (or (null miny)(lessp y miny))(setq miny y)))
31 :     (do ((l elements (cdr l)))
32 :     ((atom l))
33 :     (setq element (car l))
34 :     (setq hirawidth (assq 'hirawidth (cddr element)))
35 :     (and hirawidth
36 :     (do ((ll (cdr hirawidth)(cdr ll)))
37 :     ((atom ll))
38 :     (and (lessp maxw (car ll))(setq maxw (car ll))))))
39 :     (setq width (difference maxx minx))
40 :     (setq height (difference maxy miny))
41 :     (setq ratio (//$ (float kanaspace) (float (max width height))))
42 :     ; (setq meanx (times 0.5 (plus maxx minx)))
43 :     ; (setq meany (times 0.5 (plus maxy miny)))
44 :     ; (setq affine (movexy (car kanacenter)(cadr kanacenter)
45 :     ; (scalexy ratio ratio
46 :     ; (movexy (minus meanx)(minus meany)))))
47 :     ; (setq wratio (//$ (float kanawidth) (float maxw)))
48 :     (do ((l points (cdr l)))
49 :     ((atom l))
50 :     ; (push (fixxy (affine (car l) affine)) newpoints)
51 :     (push (car l) newpoints)
52 :     )
53 :     (do ((l elements (cdr l)))
54 :     ((atom l))
55 :     (setq element (car l))
56 :     (setq alist (cddr element))
57 :     (setq hirawidth (assq 'hirawidth alist))
58 :     (cond (hirawidth
59 :     (do ((ll (cdr hirawidth)(cdr ll))
60 :     (wlist))
61 :     ((atom ll)
62 :     (push
63 :     `(,(car element)
64 :     ,(cadr element)
65 :     (hirawidth .,(nreverse wlist))
66 :     .,(remq hirawidth alist)) newelements))
67 :     (push (fix (times wratio (car ll))) wlist)))
68 :     (t (push element newelements))))
69 :     `(,(nreverse newpoints) ,(nreverse newelements) .,(cddr prim))))
70 :     (defun center-of-gravity (prim)
71 :     (lets ((points (car prim))
72 :     (elements (cadr prim))
73 :     (weight 0)(xsum 0)(ysum 0))
74 :     (do ((l elements (cdr l)))
75 :     ((atom l)
76 :     `(,(//$ xsum weight 2.0) ,(//$ ysum weight 2.0)))
77 :     (setq line (cadar l))
78 :     (do ((ll line (cdr ll))(p0)(p1)(len))
79 :     ((atom (cdr ll)))
80 :     (setq p0 (nth (car ll) points))
81 :     (setq p1 (nth (cadr ll) points))
82 :     (setq len (metric2 p0 p1))
83 :     (setq weight (plus weight len))
84 :     (setq xsum (plus xsum (times weight (plus (car p0)(car p1)))))
85 :     (setq ysum (plus ysum (times weight (plus (cadr p0)(cadr p1)))))))))
86 :     (defun kana-thin (filename thinrate)
87 :     (lets ((s (inopen (stream filename)))
88 :     (err:end-of-file #'(lambda (x y)(throw 'eof)))(x))
89 :     (catch 'eof
90 :     (loop
91 :     (setq x (read s))
92 :     (match x
93 :     (('defprimitive 'nil sym ('quote val))
94 :     (lets ((points (car val))
95 :     (elements (cadr val))
96 :     (alist (cddr val)))
97 :     (mapcar elements
98 :     #'(lambda (x)
99 :     (map (assq 'hirawidth (cddr x))
100 :     #'(lambda (y) (and (numberp (car y))
101 :     (rplaca y (fix (times thinrate (car y))))))))))))
102 :     (prind x)))))

ktanaka

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help