o,c,e,a,d,g,q,s,x
前回の続きから。毎度おなじみのドクターヴィトーロの図版から。A~HまでのFundamentalから、まず初めにFundamental Bの丸をベースに小文字のグリフを作成したよ。ってところから、具体的にはまずo,c,e,a,d,g,q,s,xの9種のキャラクターを作成する。
oは、まぁ考え方は色々あるけど、別にどれが正解で、どれが間違いってことでもない。実をいうとグリフの形成については絶対的なルールはほとんどない。とはいえエスセティックの問題ではあるのでその辺り一貫性のあるルールを決定する必要はある。ここのところは面倒なのでとりあえずは3種類ほど作っておいて他とのバランスを見ながらあとで検討することにした。最初に作ったモノは、結局やってくうちにいろいろあって最後に作り直すっていうところまでがお約束。なお、書き出しのところのヒゲも今のところは無視しておく。
cとeもこんな感じで。視覚的な問題で下がって上がるところのカーブはoより拡げる必要があるが、まぁ、この辺りも適当に。eの書き順はこんな感じを想定。
aとdの楕円に関してはFundamental Bをやや狭くしてFundamental Cと組み合わせるという主張もあるのだけれど、まぁここらへんも美意識というか好みの問題。スクリプトの一貫性と対称性をどう捉えるかの問題でもある。今のところはFundamental Bをそのまま。この手の調整はグリフを全部並べてから見たほうが良いから最初から完璧には完成させないというのがコツといえばコツ。まぁ全てのキャラクターに言えることなのだけれど……でも、全部がいい加減だと後の作業が大変になるのでは……って、大丈夫。その場合は本当に完成しないから……ってダメじゃん。いや、まぁ何事もバランス感覚って大事ってことで。
gはFundamental E。qはドクターの図にはないけど、まぁFundamental Eのループを逆に。ところで、Fundamental Eのループストロークは、コレも考え方がいろいろあるけど、まぁ下の図のような感じ。
一旦aのラインまで太さを絞っていって2角目の書き出しでループの左に僅かに影を付ける。1角でループを書く場合は……あぁあぁ……そうか、あまりにも基本的すぎてここのところを説明して無かったことに今気がついた。
まぁ、ここも何を今更ってのは、まぁ、ごもっともなんですが……そもそも、この手の文字は基本的には上から下にペンが移動するときは、ペンにいくらでも圧力をかけられるのでペン先が開いて太い線が書けるんだけど、下から上へ移動するときにそれをやるとペン先で紙を掘っちゃうのでペン先にかかる圧力を減らして紙の上を滑らせる。例外的にはそこから書き出す場合で、「一旦ペンを置いてインクがたぽっってきたら一気にしゅぱーってする感じでたぽったインキを紙の上にぶちまけながらクイックターン」や、や、や、意味がわからない? 大丈夫、雑なニュアンスが伝わればいいから、何かそんな感じに説明されたことだけは覚えている。もはや遠い記憶だが。まぁそんな感じなのだが、だいたい普通初心者はそんなに上手くいくわけがない。なので、こういうことがしたい場合、後から紙をひっくり返して厚みを追加したりする。学校で習う書道と違ってカリグラフィーって、こんなところが結構いい加減。いや、別に悪口じゃないです。例えて言えばお湯加減的な、まぁなんか、どっちかって言うとレタリングに近いイメージで……
やばい、脱線しかけた。まぁ、ともかくそういう感じなので、まぁよく分からない人は原則「下から上は細く」って覚えておけばもうそれだけで変な感じにはならないから、大丈夫。ここテストに出ますよ。
それで、まぁドクターは図の左推奨みたいだけど、あえて右。一番下まで一気に落としての、ループの左から書き出してシュパーンって上に。カリグラフィー的にOKなのかどうかは知らないけど、まぁ決めるのは俺だし。カリグラフィ教室ではないんですよ、ホント。まぁ屁理屈の話なんですから。で、考え方としては、左と真ん中の折衷。ループの小さい影は必須ではないのだけれど、まぁgとqの差を付けるためにもなんかあったほうがいい。なので、逆にqは細い線ストロークのみでループを形成する……っていうふうにここでのルールを決定する。
sまでoの種類に入れているのは、違和感があるかも知れないけど、グリフを下のようにひっくり返すと書き終わりがcのボウルの飾りに……ってcまでひっくり返す必要はなかった。
因みに、何か上手く線が決まらないってときは根を詰めずに一度ひっくり返したりして見るのは大事。見えてなかった線が見えてきたりすることはあるから。ホント。FontLabVIではPREVIEWのパネルのところで、白黒反転やぼかしだけでなく、ひっくり返したりフォント出力後のノードを確認したり変わったところではx-Ray viewなんて表示もある。で、そのxだが、xに関してはFundamental Gをベースにする考え方もあるのだけれど、Oを縦に割って左右入れ替えるという形もあるので。まぁ、これも趣味の問題。どっちでもいい。さて、ここまででもう各キャラクタがそこそこ揃ってきたので、検討中の余ったグリフも捨てずにとりあえず異体字として登録しておく。こういうときこそのOpenTypeFeature、異体字はcharacter variation(cv01〜cv99)として1字形に対して99個まで追加できる。
ちなみにGlyphsだとこの辺、元字のフォント名の尻に.cvホにゃララ(01~99までの数字)って名前つけておくだけでスクリプトの自動書き出しが出来たんだけど、FontLabのほうはパネルのハンバーガーメニューからできるのは発音記号とカーニングだけ?…まじか〜。もうちょっと出来てもいいよな……まぁ、だけど、プログラムは簡単。基本的にfeature [やること] {エントリー}[やること];の形式。下だと、異体字01{oの異体字にo.1;sの異体字にs.1;xの異体字にx.1}以下同様って感じ、まぁ説明は要らないよね? これでイラレでもインデでもフォントパネルから異体字として呼び出せる。
languagesystem DFLT dflt;
languagesystem latn dflt;
feature cv01 {
sub o by o.1;
sub s by s.1;
sub x by x.1;
} cv01;
feature cv02 {
sub o by o.2;
sub s by s.2;
} cv01;
feature cv03 {
sub s by s.3;
} cv01;
アルファベット26文字のうち1/3があっという間に完成。簡単。しかも、異体字とかを何文字も作ったりしてるので作業量的に半分以上はやった気になっている。余裕。で、魔が差す感じでOpenTypeFeatureで寄り道。ほんとこういうコトを始めると碌なコトにならないんだけど……このさき、まさか、あんな結末を迎えることになるとは……突然出現したサングラスの男がこんなことを嘯きます。「世間ではいろいろと奇妙な話があふれているということをよく聞きますが、この物語の主人公が経験したのもそういうお話です」はいっ、音楽。キュー。っ
チャララララ チャララララ チャララララッラ チャララララ……
文字から繋がるラインで出来た優雅な飾りのことをフローリッシュといって別にこれといった決まりがあるわけではないが、基本的に楕円、S字、ループの組み合わせが優雅に見えるというのが大事。調子に乗ってぐるぐるしてるだけで、いろんな形ができる。大文字とフローリッシュはあとでまたちゃんとやるつもりだけど、こうやって出来た飾り文字っぽいもののことを別途スワッシュとかスワッシュ字形っていう。フォントによってはこれの組み合わせがもう、ものすごいことになっていて、デザインのバリエーションを豊富にもつCalligraphy系のScriptは結構人気も高い。
OpenTypeFeatureでは筆記体のこのタイプのグリフキャラクターはFeatureのスワッシュ字形(swsh)に指定するのが正解なんだけど、さっき作ったcharacter variation(cv01〜cv99)にアキがあるのでまぁとりあえずここへいれて、いろいろ遊んでみる。しかし、こうやってとりあえずでプログラム書くから後で忘れててこれがバグの巣窟になるのだ……はいっ、不吉な効果音はいります。ギシギシ……。嫌な予感がしてきた。
しかし男はこんなことをいってしまう。「まぁいいや。コメントアウトしておく必要があることだけを覚えておこう」なんという恐ろしい行動! しかし、そんな行為をまったく気にせず「それより、Open Type Featureの筆記体の自動で繋がる系の位置調整のテストをちょっと試しておく必要もある」なんて嘯いている。
実はこれが上手くいけばいちいち各グリフにスワッシュ字形をつくるより何種類もフローリッシュを作って、文字のグリフにFeatureコードで接続する形にした方がスマート。っていうかそうするつもりだったりしている。
さて、手品の種明かしといこうか。この位置調整のためのマジックの道具がcursだ。プログラムは「pos cursive グリフ名 <anchor グリフの開始位置><anchor グリフの終端>;」で、それに続くグリフの入口側にエントリーポイントを入れて……と続く。具体的には
feature curs {
} curs;
で括った中に、全部のキャラクターのグリフ開始位置のx,y(0,0) と 終端のx,y(キャラクターのメトリックス,0)ってしておく。
pos cursive space <anchor 0 0><anchor 179 0>;
pos cursive a <anchor 0 0><anchor 322 0>;
pos cursive b <anchor 0 0><anchor 200 0>;
pos cursive c <anchor 0 0><anchor 179 0>;
pos cursive d <anchor 0 0><anchor 322 0>;
pos cursive e <anchor 0 0><anchor 179 0>;
って、具合だ。まぁキリがないけど……同じようなデータが続くので、グリフが膨大になるなら一旦メトリックス情報を出力して、検索置換、Excelでグリグリって作ってからInDesignにコピペしたりするんだけど……いや、たまにしかつかわないプログラマー用のエディタより慣れてるから、検索、置換に正規表現がつかえるし、文字色やフォントやスタイル変えてチェックしたり、長いサブルーチンやコードを部品にしておけるし、プログラムエディタとしても結構便利なんだよね。邪道だけど。まぁそれはともかく、この状態だと出力してもなにもプログラムを書いていない場合と同様の結果になるだけなのだが、じゃあ何でこんなことをするかというとcursにエントリーされていないとキャラクターに位置調整機能が働かないからだ。
いちおうここまで準備して、さてここからがマジックのキモ。大文字Cのスワッシュ字形は今はc.1 c.2 ....って形でcharacter variationにしてあるのでこのキャラクターのグリフ終端のY座標を上げてやろう。まぁここは適当に300にした。
pos cursive C.2 <anchor 0 0><anchor 385 300>;
FontLabVIにはOpenTypeFeatureのプレビュー機能があるのでここで確認できる。実に素晴らしい。いや、そのセリフは違う番組になっているよ。
こんな感じ。しかし、このまま出力するとCのスワッシュが出力される度にもう永遠に上がりっぱなしになるので機能をリセットするキャラが必要になる。どれかのグリフでcursのエントリーを取り下げるか、anchorにNULLを追加するかすれば元通り。今回は以下のようにしてある。
pos cursive hyphen <anchor 0 0><anchor NULL >;
これでhyphenを入れると元の高さまで戻る。なんというか、ワロス曲線。ついでにkernとcursでhyphenのアンカー位置を調整して……と、しかし、ここまでしておいて、いうのもなんだが……なんということでしょう……。(SE:悲鳴)
結論から言うとAdobe CCでOpentype Featureのcursが全く機能しない。普段アラビア文字のナスタアリーク体なんて使う機会は全然ないのでまったく気がつかなかったが、これができないとウルドゥー語ではまともな組版ができない。パキスタンの人はどうしているんだろう? 手作業でベースラインシフト? ってもはやガリ版レベル? ザバーネ・ウルドゥ・ムアッラーエ・シャジャハナバード先輩ぱないっす。印巴基版のCCをDLすれば良いんだろうか? あ、でもインドなのに(イングリッシュ)ってなってるじゃねぇか。う〜ん……。これ使えるのか不安。
どっかで見たようなロゴタイプのような上の出力を期待したのに、最新版のイラレやインデでも下のようにしかならない。最悪だ……。
Opentype FeatureのところにGPOS tableはVariable Fontを組み合わせられるよ、とかいう説明もあったので、それならスワッシュの上に乗っかる単語の長さを見て、ラインを伸ばしたり縮めたりできるじゃん……とか、文字を打つ毎に動くフローリッシュ……はじけるスワッシュ! うねるフローリッシュ! とかキャッチコピーまで用意して、ド破手なVariable Fontの出来上がり……っていう目論見だったのに……ん〜〜〜。これでは、なんていうか、計画がだだ狂いだよ。まさか、こんなところに大きな落とし穴があったとは……
しかし、またまたなんかおかしなテンションで無駄なこと始める前に先に気がついたのだから、これはこれで良かったのか? だけど、なんか、こう……。納得いかない。
はいっ、ここでまた、ガラモンソング入ります。 お疲れ様でしたぁ〜。
この記事が気に入ったらサポートをしてみませんか?