年賀状ネタ
ことしはのっぴきならない状況なので人生初っていうぐらいに年賀状を書きました。せっかくだからpythonで。つかNodeBoxなんですけど。
「謹賀新年」て文字のアウトラインをとって、そのパスにランダムでノイズいれてコルニュ螺旋を後ろに書いてみた。つまりレンダリングするごとに違うものができるよってな具合。これでひとりずつ一枚一枚違うものを書くためにプリントにまわすとこまでつくろうと思ったけど、メンドーだし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)