みかづきブログ・カスタム

基本的にはちょちょいのほいです。

Next.jsにAdobe Fonts(Typekit Webフォント)を導入する ✍️

f:id:kimizuka:20210225111102j:plain

Adobe Fontsで日本語フォントをWebフォントとして使おうとすると、

<script>
  (function(d) {
    var config = {
      kitId: 'XXXXXXX',
      scriptTimeout: 3000,
      async: true
    },
    h=d.documentElement,t=setTimeout(function(){h.className=h.className.replace(/\bwf-loading\b/g,"")+" wf-inactive";},config.scriptTimeout),tk=d.createElement("script"),f=false,s=d.getElementsByTagName("script")[0],a;h.className+=" wf-loading";tk.src='https://use.typekit.net/'+config.kitId+'.js';tk.async=true;tk.onload=tk.onreadystatechange=function(){a=this.readyState;if(f||a&&a!="complete"&&a!="loaded")return;f=true;clearTimeout(t);try{Typekit.load(config)}catch(e){}};s.parentNode.insertBefore(tk,s)
  })(document);
</script>

というscriptを埋め込むように指示されます。
Next.jsで使う場合、いろいろ方法はありますが、

dangerouslySetInnerHTMLnext/headを使い、

<Head>
  <script dangerouslySetInnerHTML={{ __html: `
    (function(d) {
      var config = {
        kitId: 'XXXXXXX',
        scriptTimeout: 3000,
        async: true
      },
      h=d.documentElement,t=setTimeout(function(){h.className=h.className.replace(/\bwf-loading\b/g,"")+" wf-inactive";},config.scriptTimeout),tk=d.createElement("script"),f=false,s=d.getElementsByTagName("script")[0],a;h.className+=" wf-loading";tk.src='https://use.typekit.net/'+config.kitId+'.js';tk.async=true;tk.onload=tk.onreadystatechange=function(){a=this.readyState;if(f||a&&a!="complete"&&a!="loaded")return;f=true;clearTimeout(t);try{Typekit.load(config)}catch(e){}};s.parentNode.insertBefore(tk,s)
    })(document);
  ` }} />
</Head>

という感じで埋め込むのが簡単だと思いました。