素晴らしいフォントにカスタムアイコンを追加する


138

Font Awesomeアイコンフォントが大好きで、サイトのほとんどのアイコンに使用したいのですが、提供されているものに加えて、必要なカスタムsvgアイコンがいくつかあります。

Font Awesomeの.svgバージョンは、主に次の<glyph />要素で構成されていることに気付きました。

...
<glyph unicode="&#xf0b2;" horiz-adv-x="1536" d="M0 80v477q0 51 24.5 61.5t59.5 -24.5l162 -162l340 338l-338 338l-164 -164q-35 -35 -59.5 -25.5t-24.5 60.5v477q0 31 23 57q27 23 57 23h477q51 0 61.5 -24.5t-24.5 -59.5l-160 -158l338 -338l332 334l-162 162q-35 35 -24.5 59.5t61.5 24.5h477q33 0 55 -23 q25 -25 25 -57v-477q0 -51 -24.5 -61.5t-59.5 24.5l-162 162l-334 -334l338 -336l158 160q35 35 59.5 24.5t24.5 -61.5v-477q0 -35 -25 -55q-23 -25 -55 -25h-477q-51 0 -61.5 24.5t24.5 59.5l166 166l-336 336l-340 -340l162 -162q35 -35 24.5 -59.5t-61.5 -24.5h-477 q-31 0 -55 25q-25 20 -25 55z" />
<glyph unicode="&#xf0c0;" horiz-adv-x="1880" d="M0 852v152q0 18 1 47.5t10 56.5t29.5 46.5t57.5 19.5q-45 29 -71.5 75.5t-26.5 104.5q0 43 16.5 82t46 68.5t68.5 46t82 16.5q45 0 84 -16.5t67.5 -46t46 -68.5t17.5 -82q0 -57 -27.5 -104t-72.5 -76q37 0 57.5 -19.5t29.5 -46.5t11 -56.5t2 -47.5v-152 q-14 -8 -23.5 -18.5t-27.5 -10.5h-328q-16 0 -26.5 10.5t-22.5 18.5zM158 57v387q0 78 45 138.5t98 109.5q10 10 25.5 21.5t33.5 15.5q18 6 41 7t45 5q61 10 130 19.5t135 19.5q-90 57 -144.5 151.5t-54.5 207.5q0 88 34 166.5t92 136t136 91.5t166 34t166 -34t136 -91.5 t92 -136t34 -166.5q0 -113 -54 -207t-145 -152q66 -10 134.5 -19t130.5 -20q23 -4 45 -5t41 -7q18 -4 33.5 -15.5t27.5 -21.5q66 -59 103.5 -116.5t37.5 -131.5v-387q-12 -6 -20 -13t-18.5 -14t-23.5 -14.5t-36 -15.5h-1368q-35 0 -54.5 22.5t-43.5 34.5zM1452 852v152 q0 18 2 47.5t11.5 56.5t30 46.5t56.5 19.5q-45 29 -72.5 75.5t-27.5 104.5q0 43 16.5 82t46 68.5t68.5 46t84 16.5q43 0 82 -16.5t68.5 -46t46 -68.5t16.5 -82q0 -57 -26.5 -104t-71.5 -76q37 0 56.5 -19.5t28.5 -46.5t11 -56.5t2 -47.5v-152q-12 -8 -22.5 -18.5 t-26.5 -10.5h-328q-18 0 -27.5 10.5t-23.5 18.5z" />
<glyph unicode="&#xf0c1;" horiz-adv-x="1597" d="M0 1137q0 88 34 166.5t92 137t136 92.5t168 34q86 0 166 -33t139 -92q8 -8 21.5 -20.5t26 -25t21.5 -25.5t9 -25q0 -18 -12 -31q-6 -8 -25 -12q-47 -10 -88 -22.5t-86 -31.5q-4 -4 -16 -4t-25.5 10.5t-31 21.5t-42 21.5t-57.5 10.5q-35 0 -66.5 -13.5t-54 -37t-36 -54 t-13.5 -67.5q0 -41 17.5 -75t43 -63.5t56.5 -56.5t57 -53l180 -178q23 -25 54.5 -37t66.5 -12q43 0 73 16t46 16q12 0 39 -21.5t55.5 -49t50 -55t21.5 -42.5q0 -29 -36 -51t-83 -38.5t-94 -26t-72 -9.5q-86 0 -164.5 33t-140.5 92l-303 305q-61 59 -94 139.5t-33 166.5z M578 1010q0 29 35.5 51t82.5 38.5t94 26t72 9.5q86 0 166 -33t139 -92l303 -305q61 -59 94 -139.5t33 -166.5q0 -90 -33.5 -167.5t-92 -136t-137.5 -92.5t-167 -34q-86 0 -165.5 34t-139.5 93q-8 8 -21.5 19.5t-25.5 25t-21.5 26.5t-9.5 26q0 18 13 28q6 8 24 12 q47 10 88 22.5t86 33.5q12 4 17 4q12 0 25.5 -10.5t30.5 -21.5t41 -21.5t58 -10.5q72 0 121 49.5t49 120.5q0 41 -17 76t-44 63.5t-56.5 55.5t-56.5 53l-178 180q-53 49 -123 50q-43 0 -72.5 -17.5t-46.5 -17.5q-12 0 -38.5 21.5t-55 49t-50 56t-21.5 41.5z" />
...

私のsvgアイコンコードを取得し、それを新しいグリフ要素として貼り付け、未使用のUnicode文字を割り当てることは効果的でしょうか?


2
解決策を見つけましたか?または別のプラグインを選択しただけですか?
ミシェルエアーズ2014年

1
'.svgバージョンのFont Awesome'のリンクが見つかりません。更新してください。
Yannis Dran 2014

2
関連ドキュメントは次のとおり
FortAwesome

回答:


125

与えるIcomoonに試して。独自のSVGをアップロードしてライブラリに追加し、FontAwesomeと独自のアイコンを組み合わせたカスタムフォントを作成できます。


ありがとう:)これは大いに役立ちます!
Johnny Zhao

素晴らしいサービス。それをありがとう。時間ではなくsvgからカスタムアイコンセットを生成しました。
Nodoze、2015

良いツールです。パーフェクト。:)
クリスチャンマーク

2
こんにちは、svgアイコンを含むフォルダーでフォントアイコンを生成しました。しかし、後で私はそれに単一のアイコンを追加したいのですが、追加することは可能ですか?または再び私はフォルダーで生成する必要がありますか?
Varadha31590 2016


21

Font Awesome 5では、独自のSVGデータを使用してカスタムアイコンを作成できます。こちらが、GitHubのレポのデモです。そして、これは、似たようなことが<script>ブロックでどのように行われるかを示すCodePenです。

どちらの場合も、次のlibrary.add()ようなオブジェクトを追加するためにを使用するだけです。

export const faSomeObjectName = {
  // Use a prefix like 'fac' that doesn't conflict with a prefix in the standard Font Awesome styles
  // (So avoid fab, fal, fas, far, fa)
  prefix: string,
  iconName: string, // Any name you like
  icon: [
    number, // width
    number, // height
    string[], // ligatures
    string, // unicode (if relevant)
    string // svg path data
  ]
}

コードサンプルのコメント「svg path data」でラベル付けさdれた<path>要素は、の子である要素の属性の値として割り当てられるものであることに注意してください<svg>。このように(明確にするためにいくつかの詳細は省略しています):

<svg>
  <path d=SVG_PATH_DATA></path>
</svg>

(ここで私の同様の答えから適応:https : //stackoverflow.com/a/50338775/4642871


新しいsvgがWebサイトに収まるように標準のプレフィックスを使用したい場合はどうなりますか?
Norbert Kardos、2018

1
任意の接頭辞を使用できます。あなたが標準の接頭辞を使用する場合でも、( 、fab、、fas 我々はこれらの標準の接頭辞のアイコンを追加し続けている)あなたは将来的には、その後、おそらく、今の命名の競合-いない場合のリスクが大きいでしょう。カスタムプレフィックスを使用しても、svgが「ウェブサイトに適合する」可能性が低くなることはありません。しかし、そのフレーズの意味がわからないので、明確にできるでしょうか?farfal
mwilkerson

すでにリクエストされている特定のソーシャルブランドアイコン(ユーザー数2億人以上)が必要です。このsvgアイコンをプロバージョンに追加して、html / cssの例外やその他のケースを発生させることなく、ウェブサイトで使用したいと考えています。他のすべてのブランドにはすでにアイコンがあるので、fabクラスは要素に存在します(そして実際に選択されたブランドは2進法でCSSに追加されます)
Norbert Kardos

1
はい、標準のプレフィックスを使用してカスタムアイコンを追加しても問題ありません。アイコン名が後でそのプレフィックスに追加するものと同じになる場合は、競合が発生することを覚えておいてください。では、競合する可能性の低いアイコン名を選択するのでしょうか?CodePenを分岐してデモンストレーションを行いました:codepen.io/fontawesome/pen/pZWXYX
mwilkerson '27

私のSVGはAdobe AIファイルから来ており、複数のパスがありました。これにより、上記で指定した "d"パラメータを適切に設定できませんでした。AIファイルをSVGとしてエクスポートする前に、まず複合パスに変換する必要がありました。私はここでそれを行う方法を学習しました:graphicdesign.stackexchange.com/questions/35054/...
アレックスStandiford

18

あなたが持っているものに依存します。svgアイコンが単なるパスの場合、 'd'属性を新しい<glyph>要素にコピーするだけで、そのグリフを追加するのは簡単です。ただし、パスはフォントの座標系(EM-square、通常は[0,0,2048,2048]-Truetypeフォントの標準)に合わせて調整し、必要なベースラインに合わせる必要があります。

ただし、すべてのブラウザーがsvgフォントをサポートしているわけではないため、どこでも機能させるには、他の形式に変換する必要があります。

Fontforgeはsvgファイルをインポートでき(グリフスロットを選択し、[ファイル]> [インポート]を選択してからsvg画像を選択します)、関連するすべてのフォント形式(svg、truetype、woffなど)に変換できます。


18

FontAwesomeからアイコンを分離し、独自のカスタムライブラリを作成して維持することをお勧めします。個人的には、独自のアイコンライブラリを作成する場合は、FontAwesomeを個別に維持する方がはるかに簡単だと思います。次に、FontAwesomeをCDNからサイトにロードし、最新の状態に保つことを心配する必要はありません。

独自のカスタムアイコンを作成する場合は、Adobe Illustratorまたは同様のソフトウェアを使用して各アイコンを作成します。アイコンが作成されたら、それぞれを個別のSVG形式でコンピューターに保存します。

次に、IcoMoonhttp : //icomoon.ioに行きます。これは(私の意見では)最高のフォント生成ソフトウェアであり、無料です。IcoMoonはでカスタムアイコングリフライブラリーを生成、その後、あなたはフォントライブラリにあなたの個々のSVG-保存されたフォントをインポートすることができますeotttfwoff、とsvgIcoMoonが生成しない1つの形式はwoff2です。

IcoMoonでアイコンパックを生成した後、FontSquirrelhttp : //fontsquirrel.comにアクセスして、フォントジェネレーターを使用します。IcoMoonでttf生成されたファイルを使用します。新しく生成されたアイコンパックが作成されると、アイコンパックの形式になります。woff2

以下のために必ずファイルを作成しeotttfsvgwoff、およびwoff2すべて同じ名前です。2つの異なるWebサイト/ソフトウェアからアイコンパックを生成していて、生成された出力に異なる名前を付けている。

両方の場所で、アイコンパックのCSSが生成されます。ただし、IcoMoonで生成されたCSS woff2は、@font-face {}宣言にフォーマットを含めません。CSSをプロジェクトに追加するときに必ず追加してください。

@font-face {
    font-family: 'customiconpackname';
    src: url('../fonts/customiconpack.eot?lchn8y');
    src: url('../fonts/customiconpack.eot?lchn8y#iefix') format('embedded-opentype'),
         url('../fonts/customiconpack.ttf?lchn8y') format('truetype'),
         url('../fonts/customiconpack.woff2?lchn8y') format('woff'),
         url('../fonts/customiconpack.woff?lchn8y') format('woff'),
         url('../fonts/customiconpack.svg?lchn8y#customiconpack') format('svg');
    font-weight: normal;
    font-style: normal;
}

IcoMoonソフトウェアを使用して、アイコンパック内の各アイコンのグリフユニコード値を取得できることに注意してください。これらの値は、次のように、CSSを介してアイコンを割り当てるのに役立ちます(上記font-familyの例で宣言されているを使用していると想定@font-face {...})。

selector:after {
    font-family: 'customiconpackname';
    content: '\e953';
    }

e953font-packで生成されたsvgファイルをテキストエディターで開くと、グリフユニコード値を取得することもできます。例えば:

<glyph unicode="&#xe953;" glyph-name="eye" ... />

動作していない、、、。プロセス全体を完了するだけでアイコンは表示されず、数字が表示される
Inzmam ul Hassan 2017

1
もう少し詳しく説明してもらえますか?私はあなたの問題を喜んでお手伝いします。で指定font-family: customiconpack;しましたselector:afterか?selector:afterコード例のために今すぐソリューションを更新しましょう。
ペグ

私のアイコンsvgファイルをアップロードしました。私はファイルをダウンロードしました。プロジェクトにそれらを置き、プロジェクトに新しいcssファイルを追加します。コードをファイルにコピーして、コードをアイコンのコードで変更しました。うまくいきませんでした。
Inzmam ul Hassan 2017

1
:我々は問題を議論することができますので、より簡単に、私が作成したこのチャットルームに参加してくださいchat.stackoverflow.com/rooms/132402/...
Pegues

2
ここでは、インポートしたPNGからIllustratorでSVGを作成したことが問題であることを他の人に知らせるためにコメントしています。アイコンをベクターとして再作成する必要があります。PNGはラスター形式で、ベクトル曲線はありません。
ペグ

13

@Samuel-bergströmへの同様のアプローチ:

  • Fontawesome SVGをダウンロードhttps://github.com/FortAwesome/Font-Awesome/blob/master/src/assets/font-awesome/fonts/fontawesome-webfont.svg
  • FontForgeをダウンロードhttp://fontforge.github.io/en-US/downloads/
  • Inkscapeをダウンロード
  • Inskscapeを開き、新しいフォントアイコンとして単一のレイヤー形状を作成します
  • SVGファイルを保存し、Inkscapeを閉じます
  • FontForgeを開きます(複数のモニターがある場合は、Windows-LeftArrowを使用して、モニターから消える奇妙なSWING Javaウィンドウがあり、ポップアップでモーダル問題があるため、タスクバーを確認する必要がありました)。
  • ファイル| fontawesome-webfont.svgを開きます
  • ファイル| インポート
  • 一番下までスクロールし、アイコンを右クリックします| グリフ情報
  • グリフ名をuniFXXXに更新します(XXXは501のようなもので、FontAwesomeのv4.5で使用されている最高のUnicodeよりも大きい数字です)
  • Unicode Vlaue U + fXXX
  • OKをクリックします
  • ファイル| 保存する
  • ファイル| フォントを生成...
  • FontForgeを閉じる
  • Webプロジェクトを開く
  • フォントファイルを(プロジェクト内の) "\ Content \ fonts \"フォルダにコピーします。
  • 「\ Content \ styles \ fa \ path.less」を次のように編集します。

@font-face {
      font-family: 'FontAwesome';
      //src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
      src: 
    	//url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
        //url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
        url('@{fa-font-path}/fontawesomeregular.woff?v=@{fa-version}') format('woff'),
        url('@{fa-font-path}/fontawesomeregular.ttf?v=@{fa-version}') format('truetype'),
        url('@{fa-font-path}/fontawesomeregular.svg?v=@{fa-version}#fontawesomeregular') format('svg');
    //  src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
      font-weight: normal;
      font-style: normal;
    }

他のファイルタイプをコメントアウトすることは「物議を醸す」かもしれませんが、コメントで.eotまたは.otfファイルを生成する方法を聞いてうれしいです。

  • そして最後に、サミュエルが述べているように、CSS / LESSを次のように更新します。

    .fa-XXX:before {content: "\ f501"; }


3

SVGのWebフォントとフォントの作成について少し調査しましたが、font-awesomeの既存のフォントにフォントを「追加」したい場合は、次のことを行う必要があります。

inkscapeに移動してグリフを作成し、SVGとして保存して、コードを読み取れるようにします。現在使用されていないUnicode文字を割り当てて、フォント内の既存のグリフと競合しないようにしてください。これは難しいかもしれないので、より簡単なapproadは既存のグリフを自分のグリフに置き換えることだと思います(使用しないものを選択して、最初の部分をコピーしてください:

svgを保存してから、オンラインコンバーターを使用してそれをweb-fontに変換し、webfontがすべてのブラウザーで機能するようにします。

これが完了すると、グリフの1つが置き換えられたSVGが必要になります。そうでない場合は、新しいグリフのCSSを作成する必要があります。この場合、既存のFAのFAを再利用してみてください。

>##CSS##
>.FA.NEW-GLYPH:after {
>content:'WHATEVER AVAILABLE UNICODE CHARACTER YOU FOUND'
>(other conditions should be copied from other fonts)
>}

2

youtカスタムsvgアイコンを含むfont-awesomeの一部のアイコン(またはすべて)が必要な場合は、次のことができます。

1- http://fontawesome.io/に移動しますデスクトップにzipを解凍して、たとえば抽出します。

2- http://fontastic.me/にアクセスし、メールを使用してアカウントを作成します。

3-ログインしたら、ヘッダーオプションをクリックします。[アイコンを追加]をクリックします。

4-フォント内の解凍したzipにあるfont-awesomeのSVGを選択します。

5-独自のsvgファイルをアップロードするプロセスを繰り返します。

6- Inside Home(ページのヘッダーで)ダウンロードするアイコンを選択し、それらをカスタマイズしてカスタム名を付け、公開を選択してリンクを取得するか、フォントとCSSをダウンロードします。

私の英語でごめんなさい!:D


それは機能しますが、独自のカスタムアイコンライブラリを作成し、fontawesomeサイドを使用することをお勧めします。fontawesomeを(新しいアイコンで)更新できるようになります。
ギヨームハラリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.