Google Web FontsをSVGに埋め込むにはどうすればよいですか?


48

HTML5、CSS3、SVGなどの新しいWebテクノロジーの利点について、私のサイトで記事を書いています。後者の利点の1つは、そうでなければ効果的な画像のテキストを選択できることです。

私はSVGが初めてで、Illustratorで最初のまともなグラフィックを作成しました。タグにUbuntuフォント用のGWFスクリプトを含むページに埋め込みました。結局のところ、Ubuntuフォントは通常のテキストで正しく表示されますが、このトリックをSVGで機能させるには、GoogleスクリプトをSVG自体に埋め込む必要があります。これどうやってするの?


1
@importベースのソリューションに関する1つの重要な注意事項:バックグラウンドイメージでは機能しません。base64経由でフォントを埋め込むか、代わりにimage / objectタグを使用する必要があります。
ミッキー

回答:


39

base64エンコーディングを使用して、CSSにフォントを埋め込みます。<style />要素を使用して、CSSに似たSVGドキュメントのスタイルを適用できます。したがって、WOFFフォントがある場合は、次のように埋め込みます。

<style>
@font-face {
    font-family: "Sample font";
    src: url("data:application/font-woff;charset=utf-8;base64,...");
}
</style>

...base64でエンコードされたフォントデータはどこにありますか。

Typekitのスタイルシートを見ると、この例を見つけることができます。mimeタイプfont/woffが正しいかどうかはわかりませんapplication/font-woff。しかしfont/wofffont/truetypefont/opentype、など、より人気があるようです。

または、実際にWebフォントのSVGバージョンを使用して、ドキュメント内にSVGフォントの説明マークアップ埋め込むことができます(ただし、コメントでLukeが指摘しているように、ブラウザのサポートはまだ非常に制限されています)。

ただし、SVG仕様に従って外部フォントリンクすることもできます。そのフォントを参照する複数のSVGドキュメントを作成する場合、これが最適なソリューションのようです。


2
.woffの正しいMIMEタイプはになりましたapplication/font-woffstackoverflow.com/a/5142316/90674
sshow

3
「SVGバージョンのWebフォントを実際に使用して、ドキュメント内にSVGフォントの説明マークアップを埋め込むことができます」に関しては、「SVGフォントは現在SafariおよびAndroidブラウザーでのみサポートされている」ことに注意してください。参照してくださいdeveloper.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_fonts(もcaniuse.com/#feat=svg-fonts
ルーク

1
このスレッドは大いに役立ちましたが、問題はフォントをbase64に変換する方法になりました。このサイトtransfonter.org大いに役立ち、ファイルサイズを削減するために、変換するフォントのサブセットのみを選択することができます。
ファビアンスナウワート16

この答えは魅力的でしたが、最終的にこれらの手順が簡単であることがわかったので、それらを共有しました:graphicdesign.stackexchange.com/a/124900/45239
Ryan

Adobe Illustratorでそのsvgを開くと、フォントが読み込まれません。何か助け?
Aamir Nakhwa

13

<defs>ようなセクション

<defs>
  <style type="text/css">@import url(http://fonts.googleapis.com/css?family=Indie+Flower);</style>
</defs>

動作します。


13
現在(2016年2月)のWebブラウザーでは、これはスタンドアロンのSVGファイルをロードする場合にのみ機能します。例については、marians.github.io / test-webfonts-in-svg / test.svgを参照してください。HTMLページ内で同じSVGを開くと、フォントはロード/レンダリングされません。例としてmarians.github.io/test-webfonts-in-svgを使用します。
マリアン

1
Chromeバージョン73.0.3683.103(公式ビルド)(64ビット)では、スタンドアロンのSVGとHTMLページの両方が同じように動作するようです。
ポールグライム

ブラウザでsvgを開くとフォントが読み込まれますが、Adobe Illustratorで同じsvgファイルを開くと、フォントが読み込まれません。何か助け?
Aamir Nakhwa

3

Nanoを使用して、Google Web FontsをSVGに直接埋め込むことができます。SVGを自動的にスキャンし、必要なフォントのみを選択的に埋め込み、Ubuntuフォントがすべての最新のブラウザーで同じように見えるようにします。私の場合、SVGにRobotoを組み込む必要がありました。

ここに画像の説明を入力してください

免責事項:私はNanoの背後にいるチームと一緒にいます。私たちも以前同じ問題に直面していたため、Nanoを構築することで自分の悩みを解決することにしました。これがお役に立てば幸いです!

編集:舞台裏で何が起こるかについて簡単に説明します:

SVGにフォントを埋め込むには、まずどのフォントファミリが使用されているかを知る必要があります。次に、これらのフォントファイルを見つけてダウンロードする必要があります。ダウンロードしたら、通常の太字、斜体、太字の斜体をBase 64エンコードに変換する必要があります。手動で行う場合、どのファイルが太字を使用し、どのファイルが太字を使用しないかを知ることは、多数のファイルに対して膨大な作業です。次に、4つのbase 64エンコード文字列すべてをSVGにコピーする必要があります。

そのため、Nanoをビルドし、SVGが自動的にスキャンされ、使用されているフォントのみが挿入されるようにします。たとえば、ボールドが使用されていない場合、またはテキストが存在しない場合、フォントは埋め込まれません。あなたがする必要があるのは、SVGをNanoにドラッグアンドドロップするだけです。詳細についてはこちらをご覧くださいhttps : //vecta.io/blog/making-svg-easier-to-use


いいですね 残念ながら、今までSVGを受け入れて非常に満足していたWordpressサイトにアップロードしても、「申し訳ありませんが、このファイルタイプはセキュリティ上の理由で許可されていません」。-この作品を作るには何を戻す必要がありますか?
クリスピンク

1

これは簡単すぎるかもしれませんが、Googleからフォントをzipファイルとしてダウンロードし、Illustratorで必要に応じてSVGファイル出力に変換することを検討しましたか?

私はまだこれを試していないので、これは理論的なものですが、理論的にはうまくいくようです。


0

<desc>タグの後に次を追加します

<defs>
<style type="text/css">@import url('http://fonts.googleapis.com/css?family=Lobster|Fontdiner+Swanky|Crafty+Girls|Pacifico|Satisfy|Gloria+Hallelujah|Bangers|Audiowide|Sacramento');</style>
</defs>

なぜ非常に多くのGoogleフォントを含めるのですか?それらのすべてでもなく、最もよく使用されているわけでもないので、SVG全体の重量が増えます。
MrMesees

ブラウザでsvgを開くとフォントが読み込まれますが、Adobe Illustratorで同じsvgファイルを開くと、フォントが読み込まれません。何か助け?
Aamir Nakhwa

0

私の答えを更新してください。このページでは、Nanoを使用するという別の回答が好まれています:https : //graphicdesign.stackexchange.com/a/121950/45239

システムにWebフォントをダウンロードしてインストールし、SVGを作成したと仮定します(以下で説明するのと同じ手順を多く使用しますが、「フォント:アウトラインに変換」を選択しない場合)、SVGをNanoにアップロードできます[埋め込みフォント:はい]オプションを確認して、[ダウンロード]をクリックします。

私の以前の答え:

選択可能なテキストとSEOを用意して犠牲にする場合:

  1. Webフォントをダウンロードします。
  2. ローカルにインストールします。
  3. Adobe Illustratorを開きます
  4. テキストを入力します。
  5. ファイル>エクスポート>名前を付けてエクスポート…
  6. 「.SVG」を選択します
  7. これらの設定を選択します。

    • スタイリング:インラインスタイル
    • フォント:アウトラインに変換
    • 画像:保存
    • オブジェクトID:レイヤー名
    • 10進数:2
    • (有効)縮小
    • (有効)レスポンシブ
  8. オプションで、結果のsvgをhttps://vecta.io/nanoにアップロードします(ファイルサイズを8.2%削減できました)


残念ながら、「アウトラインに変換」は、テキストサイズが小さい場合には最適なオプションではありません。
クリスピンク

@ChrisPink、はい、そうです!、小さなフォントサイズの他のオプションを見つけた場合は共有してください
スーパーモデル

1
@SuperModel私はNanoを使用して大成功を収め、フォントが添付ドキュメントからスタイルを選択しました。私の最初の試みは失敗しましたが、Nanoチームの親切な助けを借りて、SVGヘッダーがそのまま残っていることを確認するケースでした。
クリスピンク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.