Skip to main content

covers_all

Function covers_all 

Source
pub fn covers_all(s: &str, has_glyph: impl Fn(char) -> bool) -> bool
Expand description

s に含まれる文字をすべて描けるなら true

has_glyph は「そのフォント自身が字形を持っているか」を返す述語 (代替チェーンを辿った結果ではない点が要点。辿ってしまうと 「持っている」と誤判定してサブセットを選んでしまう)。

§先頭 1 文字では足りない

【2026-08-05】当初は先頭の非空白文字 1 つだけを見ていた。 「同じ文字体系が続くはず」という前提を置いたが、これは誤り。 実サイトには

IoT、情報家電、AI技術を駆使して

のように 1 つの文字列で書体が混ざる例がふつうにある。 先頭が I なので Latin サブセットが選ばれ、後続の日本語が 豆腐(■)になっていた。全文字を確かめる必要がある。

空白は書体を問わないので除く。空文字列・空白のみは true (描くものが無いので、どのフォントを選んでも結果は変わらない)。

計算量: O(L)(L は文字数)。文字列は短く、 1 回の描画につきウェイト候補の数だけしか呼ばれない。