Web Fonts で SVG Fonts を利用する | ヨモツネット text ja 2009-12-05 http://www.yomotsu.net/wp/?p=555 CSS, SVG

Web Fonts で SVG Fonts を利用する

スクリーンショット : OPERA と Chorme で SVG Fonts を利用したの様子とその HTML ソース。SVG で定義した形がグリフとして利用できる。SVG Fonts は @font-face と font-famiry プロパティーを使い、SVG で定義した図形をグリフとして利用できる SVG の仕組みで、このことは Fonts – SVG 1.1 – 20030114 に書かれていています。最近では @font-face を使えば SVG の中だけではなく、HTML 文書内のテキストにも SVG Fonts を適用できるよになってきました…ので試してみました。

現状では OPERA と Webkit が対応しています。また、Firefox は 3.7 以降で対応するようです

結果を比較すると次の通り。

OPERA 10.01Safari 4.0.3Chrome 3.0.195.33
2文字以上の文字列へのマッピング× 未対応◯ 対応◯ 対応
任意の文字の選択◯ 可能× 不可能× 不可能
文字列のコピー◯ 可能◯ 可能◯ 可能
行内の横並べ◯ 可能◯ 可能◯ 可能
行内のリンク◯ 可能◯ 可能◯ 可能
textarea など入力箇所◯ 可能◯ 可能◯ 可能
CSS の color◯ 有効◯ 有効◯ 有効
CSS の font-size◯ 有効◯ 有効◯ 有効
CSS の font-weight× 無効× 無効× 無効
CSS の letter-spacing△ 不具合× 無効× 無効
CSS の text-decoration◯ 有効◯ 有効◯ 有効
CSS の text-shadow× 不具合◯ 有効× 無効

使い方や作り方など

CSS 側の準備
@font-face {
  font-family: MyFont;
  src: url(font.svg#myFont) format("svg");
}

p{font-family:MyFont;}

のようにごく普通に WebFonts を適用するためのコードを書くだけです。ただし、このとき、fotmat("svg") を指定しておかないと Opera 10 では表示できませんでした。

SVG 側でのグリフの定義

各グリフはSVG で

<glyph unicode="マッピングする文字" horiz-adv-x="横幅" d="パスデータ" />

のように定義し

<glyph unicode="あ" horiz-adv-x="300" d="M 0,0 L 0,100 L 100,100 L 0,0 z" />
<glyph unicode="い" horiz-adv-x="300" d="M 100,100 L 0,100 L 0,0 L 100,100 z" />

のように書きます。

マッピングする文字は1文字に限らず、複数の文字の連なりにもマッピングをすることができます。 この場合は単純に unicode 属性の値に複数の文字列を指定し、

<glyph unicode="三角形" horiz-adv-x="300" d="M 100,100 L 0,100 L 0,0 L 100,100 z" />

のように書きます。これならロゴなどにも使えそうですね。また、絵文字のようなこともできちゃいます。

ほかにも x height やアセンダーなどの設定も行えます。これならだれでもテキストエディターさえあればグリフをつくれますね !! スクリーンショット : IncScape で「ネ」に割り当てるための図形を作っている様子。SVG ソースを編集をすることもできる。 自分は Inkscape を使いグリフを作りましたが…。

ちなみにこのネタは 第 11回 Sugamo.css に持ち込むために作ったネタです。まだまだこっそりと続けていますよー。

その他参考リソース

トラックバックURI

http://www.yomotsu.net/wp/wp-trackback.php?p=555

コメント

まうすさんからのコメント

2010年2月1日 22:34

まんたくんへ メアド変わった?

コメントフォーム

コメント

コメントでは一部の XHTML タグを使用できます。 : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

カテゴリー一覧

この Weblog の FEED

この Weblog の FEED

WDE2010カンファレンスとワークショップ