Skip to main content

Module layout

Module layout 

Source

Functions§

collect_external_css_urls 🔒
DOM ツリーを走査して外部 <link rel="stylesheet" href="..."> の href を集める。 href は resolve_dom_paths 済み(絶対パス or 完全URL)。以前はインライン <style> しか集めておらず、外部 CSS ファイルを一切取得・適用していなかったため、CSS を 全て外部ファイルに置くサイト(一般的な構成)ではスタイルが丸ごと無視され、 素の HTML 同然の表示になっていた。relstylesheet を含むもの、または rel 未指定で href が .css で終わるものを対象とする(preload/icon 等は除外)。
collect_scripts_from_dom 🔒
DOM ツリーを走査して全 <script> 要素を集める。src 属性があれば (Some(resolved_src), “”) を、無ければインライン本文 (None, text) を返す。 以前は生 HTML 文字列を正規表現的にスキャンするだけで、<script src="..."> の 外部スクリプトは本文が空のため完全に無視されていた(fetch すら行われない)。
collect_style_blocks_from_dom 🔒
DOM ツリーを走査して全 <style> 要素の textContent を連結して返す。 元の HTML 文字列ではなく実際のツリーを見ることで、document.createElement('style') 等で 動的に追加された <style> 要素のスタイルも取得できる。
extract_text_stroke 🔒
parse_aspect_ratio 🔒
aspect-ratio(CSS Box Sizing Level 4。16 / 9, 4/3, 1, auto 16/9 等)を解釈する。
parse_line_height 🔒
line-height(丸ごと未対応だった単位あり。以前は px(絶対値)と裸数値 (font-sizeへの倍率。仕様どおり子要素へも同じ倍率が継承される)の2種 のみ対応で、%line-height:150%)/emline-height:1.5em)は t.parse::<f32>()が単位付き文字列を数値としてパースできず静かに失敗し、 (font_size + 4)という汎用フォールバック値へ落ちていた(エラーになら ず一見動いているように見えるため気づきにくいバグだった)。%/emは どちらも意味上「font-sizeへの倍率」で裸数値と等価のため、同じ倍率計算 式へ合流させる。2026-07-17 発見・実装(自己テストのためparse_and_ layout内のネスト関数からモジュールトップレベルへ移動。ロジック不変)。
parse_shadow_len_tok 🔒
box-shadow/text-shadowのオフセット/ぼかし長さトークンを解決する (丸ごと未対応だった単位あり。以前はpxのみ対応で、rembox-shadow: 0.5rem 0.5rem 1rem redのような相対単位指定)はtoken.strip_suffix ("px")に一致せず数値パースにも失敗するため、呼び出し元の位置カウンタ px_countが進まないまま静かに無視されていた——エラーにはならずcolor だけ正しく拾われるため、「オフセット0・ぼかし0の見えない影」という 気づきにくい壊れ方をしていた。emは要素自身の算出フォントサイズが この関数の引数だけでは解決できないため対象外のまま(resolve_ translate_lenと同じ判断)。2026-07-17 発見・実装(自己テストのため モジュールトップレベル関数として新設。呼び出し元はbox-shadow/ text-shadowの2箇所)。
resolve_border_radius 🔒
border-radiusの1角分の半径値を解決する(丸ごと未対応だった単位あり。 以前はpx/%のみ対応で、remborder-radius:1remのような相対単位 指定)は単位付き文字列のパース失敗で静かに0〔角丸無し〕へフォール バックしていた。box-shadow/text-shadowparse_shadow_len_tokと 同型のバグ。emは要素自身の算出フォントサイズがこの関数の引数だけ では解決できないため対象外のまま(resolve_translate_lenと同じ判断)。 2026-07-17 発見・実装(自己テストのためクロージャからモジュール トップレベル関数へ変更。呼び出し元は1箇所のみ)。
resolve_text_indent 🔒
text-indent(丸ごと未対応だった単位あり。以前はpxと裸数値〔px 扱い〕のみ対応で、%(包含ブロック幅基準)/em(font-size基準)は t.parse::<f32>()が単位付き文字列を数値としてパースできず静かに 失敗し、インデント無し(0)へフォールバックしていた。古典的な段落 インデントの定番text-indent:2emや、レスポンシブなtext-indent:5% が効かなくなっていた(エラーにならず一見正常に描画されるため気づき にくいバグだった)。2026-07-17 発見・実装(自己テストのためモジュール トップレベル関数として新設。呼び出し元は1箇所のみ)。