日本語を表示できるようにした。
quesoglを利用した。利用できるフォントは locate -r "\\.afm$" で見つかるものたちみたい。これを見つけるのに苦労した。
code
まだ整形していないので汚いけれど。
(extend gl.processing) (use gauche.uvector) (use graphics.imlib2) (use gl.glc) (define (fonts) '("Symbol")) (define-class <font> () [(id :init-keyword :id) (family :init-keyword :family) (color :init-value '#f32(1.0 0 0)) (name :init-keyword :name)]) (define (draw-font color str x y) (gl-color color) (gl-raster-pos x y) (glc-render-string str)) (define *id* #f) (define (make-font name :optional (scale 15)) (let1 id (glc-gen-font-id) (push! *id* id) (cond ((glc-new-font-from-family id name) (glc-font id) (glc-scale scale scale) (glc-append-font id) (rlet1 font (make <font> :id id :name name :family (glc-get-fontc id GLC_FAMILY)) (push! *font-list* font))) (else #f)))) (define draw (draw-once$ (lambda () (let ((red '#f32(1.0 0 0)) (blue '#f32(0 0 1.0)) (y 20)) (draw-font red "これは良い本です。" 20 y) (inc! y 20) (draw-font blue "This is a good book." 20 y) (inc! y 20) (draw-font red "この辞書は良い。" 20 y) (inc! y 20) (draw-font blue "This dictionary is good." 20 y) (inc! y 20) (draw-font red "あの本はおもしろいですか?<br>― いいえ,おもしろくありません。" 20 y) (inc! y 20) (draw-font blue "Is that an interesting book? <br>― Yes, it is." 20 y) (inc! y 20) (draw-font red "これは正しくない。" 20 y) (inc! y 20) (draw-font blue "This is not right." 20 y) (inc! y 20) (draw-font red "あれは本物の花ではない。" 20 y) (inc! y 20) (draw-font blue "That is not a real flower." 20 y) (inc! y 20) (draw-font red "このスープはあまり美味しくない。" 20 y) (inc! y 20) (draw-font blue "This soup is not very tasty." 20 y) (inc! y 20) (draw-font red "これは塩ですか,それとも砂糖ですか?<br>― 砂糖です。" 20 y) (inc! y 20) (draw-font blue "Is this salt or sugar? <br>― It is sugar." 20 y) (inc! y 20) (draw-font red "彼女はフランス人ですか,それともイタリア人ですか?<br>―フランス人です。" 20 y) (inc! y 20) (draw-font blue "Is she French or Italian? <br>― She is French." 20 y) (inc! y 20) (draw-font red "あの男性は日本人ですか,それとも中国人ですか?<br>― 日本人です。" 20 y) (inc! y 20) (draw-font blue "Is that man Japanese or Chinese? <br>― He is Japanese." 20 y) (inc! y 20) (let1 image (gl-pixels->image (load-pixels) *width* *height*) (save-image image "foo.png")) )) :bg (cut background 0 0 0))) (define *ctx* #f) (define *font-list* '()) (define main (setup$ (lambda () (window 580 400 "glc Tutorial" 0 0) (set! *ctx* (glc-gen-context)) (glc-context *ctx*) (glc-string-type GLC_UTF8_QSO) (glc-enable GLC_HINTING_QSO) (dolist (name (fonts)) (make-font name))) :draw draw)) (main '())
まだ、複数のフォントを使い分ける方法が分かっていない。