カテゴリー
Angular Universalのサーバー(AWS Lambda)側で独自フォント(TTF/WOFF/WOFF2)がデコードできないときの対処法
※ 当ページには【広告/PR】を含む場合があります。
2022/03/07
2024/03/24
Angular UniversalからAWS Lambda経由で独自Fontファイルを読み込みする
Firefox
Chrome
Firefoxの場合
#...
downloadable font: rejected by sanitizer (font-family: "KaTeX_Main" style:normal weight:400 stretch:100 src index:0) source: https://deep.tacoskingdom.com/KaTeX_Main-Regular.woff2
downloadable font: incorrect file size in WOFF header (font-family: "KaTeX_Main" style:normal weight:400 stretch:100 src index:1) source: https://deep.tacoskingdom.com/KaTeX_Main-Regular.woff
downloadable font: rejected by sanitizer (font-family: "KaTeX_Main" style:normal weight:400 stretch:100 src index:1) source: https://deep.tacoskingdom.com/KaTeX_Main-Regular.woff
downloadable font: bad table directory searchRange (font-family: "KaTeX_Main" style:normal weight:400 stretch:100 src index:2) source: https://deep.tacoskingdom.com/KaTeX_Main-Regular.ttf
downloadable font: bad table directory entrySelector (font-family: "KaTeX_Main" style:normal weight:400 stretch:100 src index:2) source: https://deep.tacoskingdom.com/KaTeX_Main-Regular.ttf
downloadable font: bad table directory rangeShift (font-family: "KaTeX_Main" style:normal weight:400 stretch:100 src index:2) source: https://deep.tacoskingdom.com/KaTeX_Main-Regular.ttf
downloadable font: Invalid table tag: 0x604F53 (font-family: "KaTeX_Main" style:normal weight:400 stretch:100 src index:2) source: https://deep.tacoskingdom.com/KaTeX_Main-Regular.ttf
downloadable font: (font-family: "KaTeX_Main" style:normal weight:400 stretch:100 src index:2) source: https://deep.tacoskingdom.com/KaTeX_Main-Regular.ttf
downloadable font: rejected by sanitizer (font-family: "KaTeX_Main" style:normal weight:400 stretch:100 src index:2) source: https://deep.tacoskingdom.com/KaTeX_Main-Regular.ttf
#...
Chromeの場合
Failed to decode downloaded font: <URL>
19:1 Failed to decode downloaded font: https://deep.tacoskingdom.com/KaTeX_Main-Regular.woff2
19:1 Failed to decode downloaded font: https://deep.tacoskingdom.com/KaTeX_Main-Regular.woff
19:1 Failed to decode downloaded font: https://deep.tacoskingdom.com/KaTeX_Main-Regular.ttf
19:1 OTS parsing error: Size of decompressed WOFF 2.0 is less than compressed size
19:1 OTS parsing error: Failed to convert WOFF 2.0 font to SFNT
19:1 OTS parsing error: incorrect file size in WOFF header
【解決策】Angular Universalでバイナリとして扱うMIMEファイルを追加する
lambda.js
//...省略
//👇サーバーから配給するファイルのうちバイナリとして扱いたいMIMEタイプ
const binaryMimeTypes = [
//...中略
//👇古い形式のMIMEタイプは除外
//'application/x-font-ttf',
//👇主要なフォントファイルのMIMEタイプで置き換え
'font/eot',
'font/opentype',
'font/otf',
'font/ttf',
'font/woff',
'font/woff2'
]
//...
binaryMimeTypes
(折角なのでおさらい)独自フォントをAngularアプリに仕込む
lambda.js
styles.scss
HOGEフォント
PIYOフォント
//👇HOGE-FONTとしてフォントファミリーを注入
@font-face {
font-family: 'HOGE-FONT';
font-style: normal;
font-weight: 500;
src: url('/assets/fonts/hoge.woff') format('woff');
}
//👇Piyo-Gothicとしてフォントファミリーを注入
@font-face {
font-family: 'Piyo-Gothic';
font-style: normal;
font-weight: 500;
//👇形式の異なるフォントファイルを複数指定してファイルの読込み優先度も付けることが可能
src: url('/assets/fonts/piyo_gothic.woff2') format('woff2'),
url('/assets/fonts/piyo_gothic.woff') format('woff'),
url('/assets/fonts/piyo_gothic.ttf') format('truetype');
}
//...以下略
styles.scss
src/assets
fonts
$ tree
.
├── angular.json
├── package.json
#...中略
└── src
├── styles.scss
#...中略
└── assets
#...中略
└ fonts
├── hoge.woff
├── piyo_gothic.ttf
├── piyo_gothic.woff
└── piyo_gothic.woff2
url(...)
src: url('./assets/fonts/hoge.woff') format('woff');
src: url('assets/fonts/hoge.woff') format('woff');
src: url('/assets/fonts/hoge.woff') format('woff');
hoge.woff
src: url('/assets/fonts/hoge.woff') format('woff');
server.ts
//...
h2 {
font-family: "HOGE-FONT";
}
//...
p {
font-family: "Piyo-Gothic";
}
//...
参考サイト
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー