2011/12/11

2012年賀状

年賀状書いた。

%!
<< /PageSize [285 420] >> setpagedevice

/fun { % y=x^2/81 for x<9, y=(x-18)^2/81 for x>=9
  dup 9 le {dup mul 81 div} {18 sub dup mul 81 div} ifelse
} def

/colwidth 62 def % set column width
/xoffset 15 def
/linehfactor 1.3 def
/fontsize 170 def
/numfont {
    /Sixties % /Bookman-Demi or /Times-Bold are also good
} def

/setrandcolor { % def
  /m exch def
  /r1 {rand 10 mod 7 div 1 m fun sub mul m 9 eq {1 add} if} def
  /r2 {rand 10 mod 7 div 1 m fun sub mul 0 add} def
  /r3 {rand 10 mod 7 div 1 m fun sub mul 0 add} def
  r1 r2 r3 setrgbcolor
} def

/centeringchar { % def
  dup stringwidth pop
  colwidth exch sub 2 div 0 rmoveto
} def % remaining a character string on top of the opstack

xoffset 0 moveto

0 1 3 { % for
  /i exch def
  i colwidth mul 0 rmoveto
  [3 1 2 3] i get % map (+1) (2 0 1 2)
  /base exch def
  0 1 10 { % for
    /t exch def
    /num t base add 10 mod def
    /f {i 3 eq {12} {9} ifelse} def
    /h {t 9 mul fun 2 mul f add} def
    numfont findfont
      [fontsize 1 0 linehfactor h mul 1 0]
      makefont setfont
    t setrandcolor
    num 10 1 string cvrs
    currentpoint
      /y exch def
      /x exch def
    centeringchar
    true charpath gsave fill grestore
    0.5 setgray stroke
    x h y add moveto
  } for
  xoffset 0 moveto
} for

showpage

去年まではちゃんと印刷して写真をとっていたのだけど、今年は ps2pdf の出力を Scribd にアップするだけというていたらくです。

2012

2010年2011年と、ぐるぐる回す系のデザインが続いたので、今年は縦スクロールにしてみました。回す系より地味だけど、縦のセンターを合わせなければいけないので、カラム幅と文字幅をもとに座標を調整したり、座標のリセットをしたり、見た目から想像されるよりも手間がかかります。

ナンバリング風の演出は、最初は円周の割合でフォントの高さの変化率を決めてみたのだけど、どうにも格好がつかず、適当な二次曲線(上記の /fun )を使ったらなんかいい具合になりました。あと「2012」だけが目に飛び込むような配色に苦労した。

今回の作例で使ったフォントは Sixties というフリーフォントです。他の一般的なフォントを使う場合は、Bookman-Demi とか Times-Bold のようなひげのあるフォントがおすすめ。


ここから Ghostscript で TrueType フォントを使うときのメモを書くけれど、自分ではよくわかってない話なので、個人マシンで遊ぶときとか意外には参考にしないでください。

Web から入手したフリーの TrueType フォントを PostScript 遊びで使いたいとき、インタプリタが Acrobat なら Windows や Mac にフォントをインストールすれば勝手に使ってくれるけれど、Ghostscript ではそうはいかない。基本的な手順は、

  1. TrueType フォントの名前を調べる
  2. GS から見える場所に置く
  3. GS の Fontmap に登録(/usr/share/ghostscript/8.71/Resource/Init/ とかにあるやつ)
だけど、1つめの手順でつまずく。Font HOWTOとか読むと、こんな手が紹介されていた。
$ ttf2pt1 -GA -l latin1 Sixties.ttf - 2> /dev/null | grep FontName
FontName Sixties
フォントの置き場所もなかなか一筋縄ではいかなくて、Fontmap に絶対パスを書きさえすればどこに置いてもいいのかと思いきや、GS が見に行ってくれる場所(/usr/share/ghostscript/fonts/ とか)にないとだめっぽい。

Fontmap への登録も、システムワイドな Fontmap ファイルに直接書かないと有効にならないようで、今回は Sixties.ttf を /usr/share/ghostscript/8.71/Resource/Init/Fontmap にこんなふうに登録した。

%!
% See Fontmap.GS for the syntax of real Fontmap files.
%% Replace 1 (Fontmap.GS)
(Fontmap.GS) .runlibfile

(Sixties) (Sixties.ttf) ;

No comments :