カテゴリー: 開発

  • Material Symbolsのアイコンが検索結果に文字化けして表示される問題と対策

    Google の Material Symbols を使ったサイトで、Bing の検索結果に arrow_forward や calendar_month といったテキストがそのまま表示されてしまうケースがありました。

    調べてみると Google の GitHub リポジトリでも Issue #897 として報告されている既知の問題で、対処法もいくつか提案されていました。今回はその中から最もシンプルな方法を採用したので、その内容を共有します。

    何が起きているのか

    Material Symbols は「リガチャ」という仕組みで、HTML に書いたテキストをウェブフォントでアイコンに変換して表示しています。

    Bash
    <span class="material-symbols-outlined">arrow_forward</span>

    ブラウザではフォントが読み込まれるのでアイコンとして表示されますが、検索エンジンのクローラーはフォントを読み込みません。そのため arrow_forward というテキストがそのままインデックスされ、検索結果にこんな感じで出てしまいます。

    call 096-XXX-XXXX location_on ルート 営業時間:10:00~18:00 arrow_downward 店舗情報 arrow_downward スタッフ紹介 …

    これは Google の公式ドキュメントで推奨されている書き方に従った結果なので、実装ミスではありません。

    対策:data 属性方式に切り替える

    Issue #897 で提案されていたワークアラウンドのうち、data 属性を使う方法を採用しました。

    Before

    Bash
    <span class="material-symbols-outlined">arrow_forward</span>

    After

    Bash
    <span class="material-symbols-outlined" data-icon="arrow_forward" aria-hidden="true"></span>

    やっていることはシンプルで、アイコン名をテキストノードではなく data-icon 属性に移しています。テキストノードが空なので、クローラーにインデックスされることはありません。

    CSS 側の対応

    data-icon の値を CSS の content で取り出して擬似要素として表示します。

    Bash
    /* 全スタイル(Outlined / Rounded / Sharp)まとめて対応 */
    [class*="material-symbols-"][data-icon]::before {
      content: attr(data-icon);
    }

    これだけで、ブラウザでの見た目は従来と変わらずアイコンが表示されます。

    補足

    CSS 擬似要素で表示しているアイコンは対象外

    以下のように CSS の content で直接アイコンを出しているケースは、もともと HTML にテキストが出力されないので対策不要です。

    Bash
    .my-select::after {
      font-family: 'Material Symbols Outlined';
      content: 'expand_more';
    }

    aria-hidden だけでは不十分

    aria-hidden="true" は Google のクローラーでは尊重されますが、Bing では効かない場合があるようです。data 属性方式ならテキストノード自体が存在しないので、検索エンジンを問わず確実です。

    参考

  • Ubuntuで最新版のNeovimをインストールする


    Ubuntuで最新のNeovimを利用するときは、インストールの簡便さから、公式パッケージリポジトリ経由ではなくAppImage形式を利用しています。最近のリリース(v0.10.4)では、AppImageのファイル名が従来の「nvim.appimage」から「nvim-linux-x86_64.appimage」に変更されたようです。


    インストール手順:

    1. AppImageのダウンロードおよび実行権限の付与

    Bash
    curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage
    chmod u+x nvim-linux-x86_64.appimage

    2. Neovimの起動

    以下のコマンドを実行することで、Neovimが起動します。

    Bash
    ./nvim-linux-x86_64.appimage

    あとは、PATHの通ったディレクトリに「nvim」とリネームして配置しておけば、システム全体で利用可能になります。