1 (require 'cwiki-common)
3 (setq file-name-coding-system 'utf-8-jp)
5 (defun www-glyph-generate-png (ccs code-point &optional size)
8 (let (png-file dir font char ret plain)
10 ((eq ccs '=ucs@JP/hanazono)
12 (if (<= code-point 65535)
13 "/usr/local/share/fonts/TrueType/Hanazono/HanaMinA.ttf"
14 "/usr/local/share/fonts/TrueType/Hanazono/HanaMinB.ttf"))
15 (setq char (decode-char '=ucs code-point)
16 png-file (format "/opt/chisewiki/glyphs/%d/Hanazono/u%04X.png"
20 (setq char (decode-char '=gt code-point)
21 png-file (format "/opt/chisewiki/glyphs/%d/GT/%05d.png"
24 (while (and (<= plain 11)
26 (setq ret (encode-char
28 (intern (format "=gt-pj-%d" plain))))))
29 (setq plain (1+ plain)))
31 "/usr/local/share/fonts/TrueType/GT/gt2000%02d.ttf"
33 char (decode-char '=jis-x0208@1990 ret))
34 (when (setq ret (encode-char char '=ucs@jis/1990))
35 (setq char (decode-char '=ucs ret)))
38 (setq char (decode-char '=gt-k code-point)
39 png-file (format "/opt/chisewiki/glyphs/%d/GT-K/%05d.png"
42 (while (and (<= plain 11)
44 (setq ret (encode-char
46 (intern (format "=gt-pj-k%d" plain))))))
47 (setq plain (1+ plain)))
49 "/usr/local/share/fonts/TrueType/GT/gt2000k%d.ttf"
51 char (decode-char '=jis-x0208@1990 ret))
52 (when (setq ret (encode-char char '=ucs@jis/1990))
53 (setq char (decode-char '=ucs ret)))
56 (setq font "/usr/local/share/fonts/TrueType/Arphic/bsmi00lp.ttf"
57 char (decode-char '=big5 code-point)
58 png-file (format "/opt/chisewiki/glyphs/%d/Big5/%04X.png"
60 (when (setq ret (or (encode-char char '=ucs@big5)
62 (setq char (decode-char '=ucs ret)))
65 (setq font "/usr/local/share/fonts/TrueType/CDP/Cdpeudc.ttf"
66 char (decode-char '=big5-pua code-point)
67 png-file (format "/opt/chisewiki/glyphs/%d/CDP/%04X.png"
70 ((eq ccs '=ruimoku-v6)
71 (setq font "/usr/local/share/fonts/TrueType/Zinbun/rui6-eudc.ttf"
72 char (decode-char '=ucs code-point)
73 png-file (format "/opt/chisewiki/glyphs/%d/Ruimoku-v6/%04X.png"
79 "-size" (format "%dx%d" size size)
81 (concat "label:" (char-to-string char))
83 (setq dir (file-name-directory png-file))
84 (unless (file-exists-p dir)
85 (make-directory dir t))
90 (defun www-glyph-display-png (char-rep &optional size)
92 (setq size (string-to-int size)))
95 ((string-match "^hana-JU\\+\\([0-9A-F]+\\)" char-rep)
96 (www-glyph-generate-png
98 (string-to-int (match-string 1 char-rep) 16)
101 ((string-match "^GT-\\([0-9]+\\)" char-rep)
102 (www-glyph-generate-png
104 (string-to-int (match-string 1 char-rep))
107 ((string-match "^GT-K\\([0-9]+\\)" char-rep)
108 (www-glyph-generate-png
110 (string-to-int (match-string 1 char-rep))
113 ((string-match "^B-\\([0-9A-F]+\\)" char-rep)
114 (www-glyph-generate-png
116 (string-to-int (match-string 1 char-rep) 16)
119 ((string-match "^CDP-\\([0-9A-F]+\\)" char-rep)
120 (www-glyph-generate-png
122 (string-to-int (match-string 1 char-rep) 16)
125 ((string-match "^RUI6-\\([0-9A-F]+\\)" char-rep)
126 (www-glyph-generate-png
128 (string-to-int (match-string 1 char-rep) 16)
133 (princ (format "Content-Type: %s"
138 "-b" "--mime" png-file)
140 (let ((coding-system-for-read 'binary)
141 (coding-system-for-write 'binary))
142 (insert-file-contents-literally png-file))
143 (buffer-string)))))))
145 (defun www-batch-display-glyph ()
146 (setq terminal-coding-system 'binary)
148 (let* ((target (pop command-line-args-left))
149 ;; (user (pop command-line-args-left))
150 ;; (accept-language (pop command-line-args-left))
153 ;; (car (split-string
154 ;; (car (split-string
155 ;; (car (split-string accept-language ","))
162 (mapcar (lambda (cell)
163 (if (string-match "=" cell)
167 (substring cell 0 (match-beginning 0))
169 (substring cell (match-end 0)))
170 (list (decode-uri-string cell 'utf-8-mcs-er))))
171 (split-string target "&")))
172 (setq ret (car target))
173 (cond ((eq (car ret) 'char)
174 (www-glyph-display-png
176 (cdr (assq 'size target)))
181 (princ (format "%S" err)))