Common Lispで書き初め

今年は、Common Lispとか、Luaとかやりたいことを進められるようにしたいです。

ということで、Common Lispで書き初めしました。

f:id:smeghead:20100101212823p:image     f:id:smeghead:20100101212824p:image     f:id:smeghead:20100101212825p:image     f:id:smeghead:20100101212826p:image     f:id:smeghead:20100101212822p:image

ubuntuで、apt-get install cl-gd でcl-gdをインストールし、http://weitz.de/cl-gd/ を参考に書いてみました。

フォントは、http://musashi.or.tv/aoyagireisho.htm を使わせてもらいました。

(asdf:oos 'asdf:load-op :cl-gd)
(defpackage kakizome
  (:use common-lisp cl-gd))
(in-package :kakizome)
(defparameter *signature-font-name* "/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf")
(defparameter *font-name* "/home/smeghead/work/lisp/kakizome/aoyagireisyosimo.ttf")
(defun hansi-size (str)
  (* 80 (length str)))
(defun kakizome (str signature output-file)
  (with-image* (100 (hansi-size str))
               (allocate-color 255 255 255)
               ;本文
               (loop for c across str
                     for h from 70 by 80
                     do (draw-freetype-string 10 h (string c)
                                              :font-name *font-name*
                                              :point-size 60
                                              :color (allocate-color 0 0 0)))
               ;サイン
               (loop for c across (reverse signature)
                     for h from (- (hansi-size str) (length signature)) by -8
                     do (draw-freetype-string 5 h (string c)
                                              :font-name *signature-font-name*
                                              :point-size 8
                                              :color (allocate-color 0 0 0)))
               (write-image-to-file output-file
                                    :compression-level 6 :if-exists :supersede)))
(kakizome "謹賀新年" "smeghead" "kingasinnen.png")
(kakizome "創造する心" "smeghead" "souzousurukokoro.png")
(kakizome "心機一転" "smeghead" "sinkiitten.png")
(kakizome "日進月歩" "smeghead" "nissinngeppo.png")
(kakizome "早寝早起" "smeghead" "hayanehayaoki.png")

一応Common Lisp関連記事なので、LISP365(http://atnd.org/events/2526)に参加してみました。こんなネタですが。。。

1件のピンバック

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


The reCAPTCHA verification period has expired. Please reload the page.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください