年賀状ネタ

ことしはのっぴきならない状況なので人生初っていうぐらいに年賀状を書きました。せっかくだからpythonで。つかNodeBoxなんですけど。

http://static.mostevildanceclassics.com/img/newyearcard2008.jpg

「謹賀新年」て文字のアウトラインをとって、そのパスにランダムでノイズいれてコルニュ螺旋を後ろに書いてみた。つまりレンダリングするごとに違うものができるよってな具合。これでひとりずつ一枚一枚違うものを書くためにプリントにまわすとこまでつくろうと思ったけど、メンドーだしInDesignにPDFはっつけてプリント的なスクリプトも書かないといけないのでやめました(そんなヒマなかった)。

ちなみに「2008」て文字はcs3からバンドルされたArnoProって書体なんだけど、serif系書体ではかなりキレイ、というか好みです。

以下ソース。

cornu = ximport("cornu")

#letter size
size(888,600)

#ready for text
txt = u"謹賀新年" 
font("HiraMinPro-W6",200)
align(JUSTIFY)
path = textpath(txt,50,440)

#2008
font ("ArnoPro-Smbd",360)
yr = textpath("2008",10,710)

points = []
for pt in yr:
    if pt.cmd == CURVETO or pt.cmd == LINETO or pt.cmd == MOVETO:
        points.append((pt.x/WIDTH,pt.y/HEIGHT))

strokewidth(1)
nofill()
stroke(0.8)
cornu.drawpath(points,close=True)

fill(1)
drawpath(yr)

#image
image("bg-21.jpg",0,-10)

#background dingbats
reset()
stroke(0.61, 0.81, 0)
strokewidth(0.5)
fill(0.95)
font("Wmdesigns1")
for i in range(20):
    fontsize(random(50,300))
    rotate(random(360))
    typo = "m","r","x","s","n" 
    p = textpath(choice(typo),random(WIDTH),random(HEIGHT))
    drawpath(p)

#cornu spiral1
reset()

points = []
c1 = 0.85
for pt in path:
    if pt.cmd == LINETO or pt.cmd == CURVETO:
        if random() > 0.9:
            points.append((pt.x/WIDTH*c1,pt.y/HEIGHT*c1))
            points.append((pt.x/WIDTH+random(-0.1,0.1),pt.y/HEIGHT+random(-0.1,0.1)))

strokewidth(1)
nofill()
stroke(0.7)
cornu.drawpath(points,close=True)

#original text
reset()
strokewidth(1.5)
nostroke()
fill(0.2)
drawpath(path)