実はこの実験の結果には特に満足していないのですが、フォントをいじるのはとてもシンプルで楽しいことなので、とにかくシェアしたいと思いました。そして、ある人にどうやったか聞かれたとき、私はそれについてブログ記事を書くと答えました :smiley: 。
目標:フォントの文字バリエーションを増やす
上のスクリーンショットでは、これが実際の手書き文字ではなくフォントであることが一目瞭然です。HTTP」のように、同じ文字が2つ隣り合わせになっているとわかりやすいでしょう。
だから、OpenTypeの機能を使って、このフォントにもっとバリエーションをつけようと思っています。でもどうすればいいのかわかりません!
トリスタン・ヒュームからのアイデア:OpenTypeを使いましょう!
そして、.Con 2020でトリスタン・ヒュームのこの講演を見ました!!Con2020でトリスタン・ヒュームのこの講演を見ました:OpenTypeを使って特別なフォントで大きな数字にカンマを挿入することについて。彼の講演とブログ記事は素晴らしいので、ここにたくさんのリンクを紹介します -- 彼の成果を見るには、下のライブデモがおそらく一番手っ取り早いでしょう。
- 一个现场演示:
- ブログ記事:数字の様々な位置にカンマを挿入する:OpenTypeの冒険
- トーク:!コン2020 - フォントシェイピングを使って、大きな数字の様々な位置にカンマを挿入します!
- GitHub 存储库: ////.py
基本的な考え方:OpenTypeでは、文脈に基づいて文字を置き換えることができます。
私は当初、OpenTypeが実際に何なのか、とても混乱していました。でも、OpenTypeのルールを書くだけで、フォントの見た目を変えることができることは知っています。
以下はルールのサンプルです:
sub a' b by other_a;
ここで sub a' b by other_a; は、 a グリフが b グリフの中にあれば、 a を other_a グリフで置き換える、という意味です。
つまり、abとacを異なるフォントで表示させることができるんです。手書きほどランダムではありませんが、ちょっとしたバリエーションが生まれます。
これらのルールを適用する方法: fonttools
フォントに新しいOpenTypeルールを追加するのはとても簡単です。fonttoolsというPythonライブラリがあり、この5行のコードで、rules.feaにあるOpenTypeルールのリストをフォントファイルinput.ttfに適用します。
from fontTools.ttLib import TTFont
from fontTools.feaLib.builder import addOpenTypeFeatures
ft_font = TTFont('input.ttf')
addOpenTypeFeatures(ft_font, 'rules.fea', tables = .GSUB);
ft_font.save('output.ttf')
コーディング
コード
これが古いフォントと新しいフォントの小さなサンプルです。新しいフォントの方が手書きのように「感じられる」とは思いません -- より多くのバリエーションがありますが、それでも実際の手書きのテキストほどではありません。
明らかにフォントであるにもかかわらず、そうでないかのように装っているのが少し信じられません:
そしてこれが、同じ文章を実際の手書きで書いたサンプルです:
他の2つの手書きフォントを作るときに、元のフォントをもう少し注意深く混ぜ合わせたら、もっとうまくいったかもしれません。
OpenTypeの罫線を追加するのはとても簡単でクールです!
例えば、"the "という単語を常に "teh "に置き換えるフォントも簡単に作れます。
もっとリアルな手書きフォントを作る方法がまだわからないんです。)私はまだ古いものを使っていますが、このフォントには満足しています。
を経由して





