@font-face で定義されたフォントは Shadow DOM で利用可能
@font-faceルールで定義されたカスタムフォントは、CSSOM(CSS Object Model)ツリーに登録される。
CSSOMツリーはグローバルなスコープを持つため、ドキュメント全体で利用可能。
<style>
@font-face {
font-family: 'MyCustomFont';
src: url('mycustomfont.woff2') format('woff2');
}
</style>
<div id="host"></div>
<script>
const host = document.getElementById('host');
const shadowRoot = host.attachShadow({ mode: 'open' });
shadowRoot.innerHTML = `
<style>
p {
font-family: 'MyCustomFont', sans-serif;
}
</style>
<p>このテキストはカスタムフォントで表示されます。</p>
`;
</script>Shadow DOM内のp要素は、グローバルに定義されたMyCustomFontを利用して表示される。フォントの定義がカプセル化の対象外であり、ドキュメント全体で共有されるリソースであるため。