フォントをつくるサイトで使ったcanvasとsvgの話 @html5飯

20
フフフフフフフフフフフフフフフ Canvas フ SVG フフ フフフフフフフフ フフフフ

Upload: yamato-honda

Post on 23-Jun-2015

1.267 views

Category:

Engineering


2 download

DESCRIPTION

HTML5飯 in 横浜 at 2014.6.21 にてお話させていただいた際の資料です。 FONTA(http://fonta.kayac.com)の制作に 用いた技術を中心に解説しています。

TRANSCRIPT

Page 1: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

フォントをつくるサイトで使ったCanvas と SVG の話

面白法人カヤック 本多大和

Page 2: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

本多大和ほんだ やまと

面白法人カヤック所属

@calmbooks

自己紹介

http://calmbooks.tumblr.com

Page 3: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

最近つくったもの

Page 4: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

Q コーポレートサイトhttp://www.q-co.jp/

Page 6: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

本日紹介するもの

Page 7: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

FONTA一人一文字 みんなでつくるフォント

http://fonta.kayac.com

1 人 1 文字でつくるフォントのサイト。

サイト上でユーザに 1 人 1 文字書いてもらい、約 7000 人で 1 つのフォントをつくります。

つくったフォントはダウンロードできたり、Web フォントとして使えたりします。

Page 8: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

フォントを「書く」機能!

Page 9: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

FONTA でのフォントは、ベクター形式を採用。書くときにパスの単純化を行なっています。

Page 10: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

1 .三角関数、内積 .. 数学的な計算で、筆跡の周りの点を算出

2 . Paper.js を使い、パスの単純化(点の数を減らす、ベジェ曲線にする)

3 . SVG の Path 形式で文字列をサーバに POST

http://paperjs.org/

Page 11: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

M212.3 673.7C200.9 678.4 186.8 679.1 178.0 ….. C464.3 891.6 461.3 879.6 461.3 879.6z

SVG の Path 形式

参考: 10 分でわかる SVG 基礎編 - @ IThttp://www.atmarkit.co.jp/ait/articles/1206/01/news143.html

開始点の移動 → m M直線 → l L水平線 → h H垂直線 → v V二次ベジェ曲線 → q Q…

Page 12: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

フォントを「つくる」仕組み!

Page 13: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" ><svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <defs><font id="FONTA" horiz-adv-x="1024" vert-adv-y="1024" >

…. (略)

<glyph unicode="&#x12A;" d="M0 0" /><glyph unicode="&#x12A;" d="M0 0" />

…. (略)

</font></defs></svg>

SVG フォントのフォーマット

参考: svg 要素の基本的な使い方まとめhttp://www.h2.dion.ne.jp/~defghi/svgMemo/svgMemo_16.htm

文字の数の分、繰り返されている

Page 14: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

フォントの形式

.ttf 、 .otf一般的なフォントの形式

.eotIE 用にあると良い

.woffWeb ページ用につくられた形式 軽量

.svg字形が SVG でつくられた形式

Page 15: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

SVG フォントから、 .ttf .eot .woff への変換

http://fontforge.org/ja/

< サーバサイドのお仕事です。

@Konboi

Page 16: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

フォントを「見る」演出!

Page 17: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

ユーザーの筆跡を再現するアニメーション

Page 18: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

[ { weight : "S", // 線の太さ( S / M / L ) path : [{ x : 10, y : 5 }, { x : 10, y : 5 } ..] // 筆跡ポイントの配列 }, { weight : "M", // 線の太さ( S / M / L ) path : [{ x : 10, y : 5 }, { x : 10, y : 5 } ..] // 筆跡ポイントの配列 } …]

筆跡アニメーションのデータ形式

Page 19: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

1 .投稿のときに、筆跡データを POST

2. サーバで保持しておいたデータを取得

3 .筆跡データを元に筆跡アニメーションを再現

Page 20: フォントをつくるサイトで使ったCanvasとSVGの話 @HTML5飯

ご清聴ありがとうございました。