らんだむな記憶

blogというものを体験してみようか!的なー

ますますBézier曲線

TrueTypeフォントとか滑らかなやつはベクターデータで書かれていたりする。
AppleのマニュアルDigitizing letterformsを斜め読みすると「Bezier quadratic curves」なんて出てくるし、
\begin{equation}
p(t) = (1-t)^2 p_{0} + 2t(1-t) p_{1} + t^2 p_{2} \hspace{30pt} (1)
\end{equation}
の係数項を見ると、
\begin{equation}
\{(1-t) + t\}^2 = \sum_{j = 0}^2 \binom{2}{j}(1-t)^{2-j} t^j = (1-t)^2 + 2t(1-t) + t^2
\end{equation}
の2次の2項係数(って表現が適当なのか...)がコントロールポイントの係数としてかかっている形なので、少なくとも(1)式は2次Bézier曲線ということになる。
また、リコーのフォント | 産業向け製品 | リコーのグリフ「永」のコントロールポイントを見ても2次Bézier曲線に見える。
さて、巷の記事でTrueTypeフォントは2次Bézierスプラインであるとか、いやいや2次B-スプラインであるとか書いてあるが、グラフィックスの数理 / 杉原 厚吉 著 | 共立出版によると、B-スプラインは "basis"-スプラインから来ているようなので、ちょっと別物のようだ。絵的にはデジタル・フロンティア-Digital Frontier | DF TALK | スプライン曲線の話だろうか。
フォントでの使い方の範囲では2次Bézierスプラインと解釈しても2次B-スプラインと解釈しても実は同じとかどっかに書いてあったような気もするが、それも含めていまいち何が正しいか分からない。
Microsoftのページにはでアウトラインの書き方のコードがあるのでこれも参考になるだろう。
いずれにせよ、仕様から読んでいって、精査しないと何が正しそうかよく分からない...。
現時点の理解では「2次Bézierスプライン曲線」と表現するのが適当な曲線ではないかと思っているのだが...。

一方、OpenTypeフォントになると、これはもう上記のような論争はなくて、3次Bézier曲線と書かれているようだ。
\begin{equation}
\{(1-t) + t\}^3 = \sum_{j = 0}^3 \binom{3}{j}(1-t)^{3-j} t^j = (1-t)^3 + 3t(1-t)^2 + 3t^2(1-t) + t^3
\end{equation}
がかかって、
\begin{equation}
p(t) = (1-t)^3 p_{0} + 3t(1-t)^2 p_{1} + 3t^2(1-t) p_{2} + t^3 p_{3} \hspace{30pt} (2)
\end{equation}
って感じか。
これをつないで輪郭を描いているので、正確には「3次Bézierスプライン曲線」と呼べば良い、だろう...。

どっかの世界でも、Banach spaceとかB-spaceとか、Fréchet spaceとかF-spaceとか書いてあったり、Frechet spaceにも2種類あるとかかんとか、ややこしくてかなわない。(François TrèvesのTopological Vector Spaces, Distributions and Kernelsは、Fréchet spaceレベルで展開されるdeepな函数解析の本なのでびくびくしてしまう)
Binary treeとB-treeもいぢめだと思う。B-tree - Wikipedia, the free encyclopediaにも「Not to be confused with Binary tree.」とある。

Rudolf Bayer and Ed McCreight invented the B-tree while working at Boeing Research Labs in 1971 (Bayer & McCreight 1972), but they did not explain what, if anything, the B stands for.

というのも最悪な気持ちにさせてくれる。なんだか知りませんが「B木」なんですよとしか言いようがなくなる。なんのいぢめか知らないが、更にB+木とかあって、お腹いっぱい。

閑話休題。アウトラインフォントの背景の数式とかはBézier SplinesFontForge's mathが参考になりそうだ。後者の原文はFontForge's mathだろう。結構画像データがぶっ飛んでるので、ファイル名から記号を推測しないとならない...。
ま、昔のだから仕方ないけど、いまならLoading and Configuring MathJax — MathJax 2.6 documentationを使ってもらえたら、最悪サービスが停止しても、TeXの生の記述が残すので数式を復元できるのにね、って思う。CDNとかクラウド的なナニが普及したからこそ使えるサービスってなもんだろうけど。