#gallery を表示すると画像 3 枚が alt
テキストのままになる。
画像は要求されているが、取得順が後ろすぎて実行時間内に届かない。
ordinal=10..13 Noto Sans JP(1 本 5.3MB × 4 = 約 21MB)
ordinal=14 /img/top8.jpg ← 画像はフォントの後ろ
現状の順序は投入順(HTML/CSS
に現れた順)でしかない。 font_queue と
IMAGE_QUEUE が別々にあるため、
種類をまたいだ順序付けができない。
打ち切りはしない(spec/resource_loading.md
R-2)。 最後まで取得する。順序だけを変える。
| 優先度 | 種類 | 理由 |
|---|---|---|
| 0 | CSS | レンダリングをブロックする。これが無いと何も正しく描けない |
| 1 | 表示領域内の画像 | いま見えている内容そのもの |
| 2 | Web フォント | font-display: swap なら代替フォントで先に描ける |
| 3 | 表示領域外の画像 | まだ見えていない |
| 4 | スクリプト | このエンジンでは描画への寄与が最も小さい |
このサイトの CSS は @font-face に
font-display: swap を指定している。
仕様上、フォントより表示領域内の画像を先に取るのが正しい。
font-display: swap
でないフォントは 代替で描けないため画像より先(優先度 1
と同列に上げる)web_engine/fetch_priority.rs(純粋・no_std・グローバル状態なし)
pub enum ResourceKind { Css, Image, Font, Script }
pub fn priority(kind: ResourceKind, in_viewport: bool, font_swap: bool) -> u8;
/// 2 つの投入項目の順序(優先度が同じなら投入順)。
pub fn should_fetch_before(a: (u8, u32), b: (u8, u32)) -> bool;