Chromium 147 → 154 — BlinkGTK に何が増えたか

バージョン: 1.2.5-build5 / 言語: 日本語 | English

BlinkGTK は Chromium のレンダリングエンジン Blink をそのまま載せています。つまり
Chromium が新しい版で獲得した Web の能力は、BlinkGTK を新しい版に上げるとそのまま
手に入ります
。この文書は、BlinkGTK がベースにしてきた Chromium 147・148・149・150・151・152・153・154
の間で何が変わったのかを、実際にできるようになったことの側から辿ったものです。

仕様書の抜粋ではありません。エンジンのソースツリーそのものを版ごとに突き合わせて
差分を取り、そこから読者に関係するものを選んでいます(取得方法は末尾に書きます)。


この文書の読み方 — 「入った」と「使える」は違う

Web の機能は、ある日いきなり全ユーザーに届くわけではありません。Blink では機能ごとに
ランタイムフラグという札が付いていて、その状態によって既定で動くかどうかが決まります。
本文ではこの 3 つを区別します。ここを混ぜると「ドキュメントには書いてあるのに動かない」
という事故になるので、最初に約束しておきます。

表記 フラグの状態 意味
既定で有効 stable 何もしなくても有効です。BlinkGTK でもそのまま使えます
試験段階 experimental 既定では無効。起動フラグで明示的に有効化すれば動きます
開発中 test テスト実行時のみ。プロパティが CSS として解釈されても、描画には反映されません

3 番目が曲者です。たとえば hanging-punctuation(行末の句読点をぶら下げる、日本語組版で
長く待たれてきたもの)は、149 で CSS プロパティとしての受け皿が入りました。
getComputedStyle() で値も返ります。しかし実装のフラグは 151 の時点でも test のままで、
実際の行組版には反映されません。「プロパティが存在する」ことと「組版が変わる」ことは
別の出来事です。

実際に測ると、この食い違いは 機能検出のコードを裏切る形で出ます
(BlinkGTK v1.2.0 / Chromium 151 実測):

フラグなし                                        → CSS.supports(...) = false
--enable-blink-features=CSSHangingPunctuation で  → CSS.supports(...) = true
                                                     getComputedStyle = "allow-end"

CSS.supports() が true を返しますが、行組版は 1px も変わりません。
版面をちょうど本文 8 字幅にして「本文 8 字 + 句点」を流すと、ぶら下げが行われれば
1 行に収まるはずのところ、none でも allow-end でも 2 行のままでした。

つまり CSS.supports('hanging-punctuation', ...) を機能検出に使うと外します。
現時点では「使えない」前提で版面を組んでください。


全体像

8 つの版で、エンジンが持つ機能フラグは 1,103 → 1,222 になりました。152 で一度 1,240 まで増え、153 で定着した切替フラグの整理により減っています。

Chromium 機能フラグ総数 前版から既定で有効になったもの 新規追加 削除 CSS プロパティ BlinkGTK 側
147 1,103 — — — 800 v1.0.6 〜 v1.0.10-build16
148 1,116 34 47 34 800 v1.0.11-dev
149 1,140 39 52 28 803 (追従のみ)
150 1,172 48 51 19 820 v1.1.0-build1 〜 build6
151 1,214 44 64 22 822 v1.2.0-build1 〜 build9
152 1,240 41 56 29 820 v1.2.1-build1 〜 build3
153 1,220 28 39 59 824 v1.2.2-build1 〜 build6
154 1,222 16 27 25 824 v1.2.3-build1 〜

1 版あたり 16〜48 個の機能が既定で有効になり、19〜59 個が消えています。153 の削除 59 件は他の版より多く、そのうち 48 件は「すでに既定で有効だった切替フラグ」でした。
削除があるという
点は見落とされがちですが、上げるときに壊れる可能性があるのはむしろこちら側です。
各章の最後に「移行の注意」を置いたのはそのためです。


147 → 148 — 下線とコンテナクエリが整った版

一言で: 派手な新機能より、CSS の細部の辻褄合わせが多い版です。

文字まわり

下線が文字を避けるようになりました(text-decoration-skip-ink の適用範囲拡大)。
日本語だと ぎ や p のように基線より下に出る部分に下線が重なると、可読性が目に見えて
落ちます。147 では試験段階でしたが、148 から既定で有効になりました。

可変フォントの avar2 対応も入りました。1 つのフォントファイルで太さや字幅を連続的に
変えられる仕組みの、新しい版のテーブルに対応したものです。

CSS

そのほか

移行の注意

<command> 要素の残骸が削除されました。ほとんどのアプリには影響しませんが、
古いコードをそのまま持ち込んでいる場合は確認してください。


148 → 149 — 段組みの罫線と、ぶら下げの「受け皿」

一言で: 多段レイアウトの表現力が増え、日本語組版の器がひとつ用意された版です。

日本語組版に関わる変更

hanging-punctuation が CSS プロパティとして入りました。行頭・行末に句読点や
括弧が来たとき、版面の外へぶら下げる指定です(none / first / last / allow-end)。
JIS X 4051 と JLReq が求めるぶら下げ組版に直結するプロパティで、値のパースも
getComputedStyle() も動きます。

ただし前述のとおり、実装フラグは 151 の時点でも test のままです。
書けるようになったが、まだ組版には反映されません。ここは Chromium の今後を待つ部分であり、
BlinkGTK としても継続して追っている項目です。

ルビが入った行での編集操作が直りました(行単位のカーソル移動)。ルビ付きの本文で
上下キーを押したときの挙動が、ルビの有無で崩れなくなります。編集系アプリで役立ちます。

text-decoration-skip-spaces も追加されました。下線を引くとき、単語間のスペースを
飛ばすかどうかを制御できます。

段組みの罫線

段と段のあいだに罫線を引く仕組み(column-rule / row-rule)が大きく拡張されました。
罫線の端をどこで止めるか、交差部でどう振る舞うかを、*-inset-cap *-inset-junction
系のプロパティで指定できます。多段組みの版面を作るときに、罫線が段の端まで伸び切って
しまう問題を CSS だけで解けます。

なお 148 の時点では column-rule-edge-inset column-rule-interior-inset という名前
でしたが、149 で -inset-cap -inset-junction に改名されました。仕様側の議論が
落ち着いた結果です。

そのほか

移行の注意

段罫線プロパティの改名(上記)は、149 より前の名前で書いたスタイルが無効になります。
使っている場合は書き換えが必要です。


149 → 150 — 版面を詰める道具が増えた版

一言で: この 5 版でいちばん実りが多く、BlinkGTK v1.1.0 の土台になった版です。

日本語組版に関わる変更

text-box-trim が入れ子リストにも適用されるようになりました。行の上下に生じるフォント
由来のアキ(ハーフレディング)を削って、指定した文字の高さで版面を作るための仕組みです。
日本語では、見出しと本文のアキを設計値どおりに詰めるときにこれが要ります。

全角スペースの扱いが直りました。テキストの位置対応表(オフセットマッピング)を
再利用する際に全角スペースで崩れる不具合が修正され、選択範囲や折り返し位置が
全角スペース混じりの文章でずれなくなりました。

書記素クラスタの境界チェックが入りました。絵文字の合字や結合文字を、
カーソル移動や削除で分断しにくくなります。

::first-line に text-transform が適用されるようになり、行分割の中断処理も改善されました。

CSS

そのほか

移行の注意


150 → 151 — ルビと圏点が仕様として整った版

一言で: 日本語組版にとって、この 5 版でもっとも直接的な収穫がある版です。

日本語組版に関わる変更

ルビのはみ出し(ruby-overhang)が既定で有効になりました。147 からずっと
試験段階だったものが、151 でようやく既定になります。ルビ文字が親文字より長いとき、
隣の文字の上へどこまではみ出してよいかの制御です。はみ出しを許さない none 値も
同時に入りました。JLReq がルビの掛け方について定めている部分に、エンジン側が
正面から対応した形です。

圏点(傍点)がルビと同じ経路で処理されるようになりました。これは実装の内側の
話に見えますが、組版結果が変わります。従来は圏点を付けると行の高さそのものが
広がっていましたが、151 では行の高さは line-height のまま保たれ、
必要なぶんは外側のコンテナが伸びます。

この変更による違いを、151 のビルドで実測しました。縦組み、font-size: 16px、
text-emphasis-style: sesame で、段落の実 pitch を測った値です。

行間の余裕 圏点なし 圏点あり 差
あり (line-height: 2.6 = 41.59px) 150 41.59 44.09 +2.50
151 41.59 41.59 0
なし (line-height: 1.75 = 28px) 150 28.00 37.00 +9.00
151 28.00 30.00 +2.00

行間に余裕があれば、圏点で行送りが太らなくなりました。 余裕がない場合も、
150 の +9.00 から +2.00 へ縮んでいます。縦組みで圏点を多用する日本語文書では、
版面の行数が変わり、総ページ数が減ることがあります。既存レイアウトの確認を
おすすめするのはそのためです (良い方向の変化ですが、変化は変化です)。

text-autospace がルビ注記を無視するようになりました。和欧混植の自動アキ調整が、
ルビのテキストに引きずられて本文の字間を乱すことがなくなります。

開きタグ直前のスペースの後で改行できるようになりました。
日本語 <span>語</span> のようなマークアップで、意図しない位置に改行が寄る問題が減ります。

試験段階では AnnotationSpaceOnStart(注記の開始側のアキ)が入りました。既定では
無効ですが、ルビや圏点の前後アキの制御に関わる項目として、次版以降の動きを注視する
価値があります。

編集・選択

そのほか

移行の注意 — ここは壊れる可能性があります

変更 影響
圏点がルビ経路に 圏点付き文書の行の高さと総行数が変わる可能性
document.implementation.createHTMLDocument() の readyState 生成直後の状態が仕様準拠に変わりました
ポップオーバー hint の入れ子表示 入れ子で表示しようとすると例外を投げるようになりました
getComputedStyle のフラットツリー外要素 既定で無効化されました
Sub Apps API 削除されました

151 → 152 — ルビの置き方が作り直された版

一言で: 151 で「次版以降の動きを注視する価値がある」と書いた注記のアキが、
152 で既定になりました。あわせてルビの配置計算そのものが作り直されています。

日本語組版に関わる変更

注記の開始側のアキ(AnnotationSpaceOnStart)が既定で有効になりました。
151 では試験段階でした。ブロックの開始側に境界線が無いとき、ルビの注記が
その余白へはみ出せるようになります。行の高さを膨らませずにルビを置くための
仕組みです。

ただし適用されない場面があります。実装は列が均等割りのとき
(balanced columns)を除外条件にしています。縦書きの段組みでこの経路を
当てにしないでください。
上流が付けたテストも横書き(writing-mode の
指定なし)で、ページや列の断片化を使っていません。

ルビの配置計算が木構造になりました(TreeRubyPlacement)。
注記の行を平坦に並べて位置を決めるのではなく、親子関係のある木として組み立て、
基準となる行からの相対位置で配置します。上下両方に注記が付く場合や、
入れ子になったルビ(熟語ルビ・二重ルビ)の位置決めがこの経路を通ります。

ルビの親文字の中のタブ位置が仕様どおりになりました(TabSizeInRubyBase)。
タブ位置は「最も近いブロックコンテナの content edge から数えた倍数」と
CSS Text 3 が定めています。152 でその定義に合わせました。

測っていないこと: 上の 3 つはフラグとコードが実在することを確かめたもので、
組版結果がどう変わるかは測っていません。150 → 151 の圏点のような実測は、
152 についてはまだありません。実際の版面で確かめてから使ってください。

CSS

新しく増えたプロパティは 2 つだけで、いずれも日本語組版には関係しません
(row-rule-visibility-items / window-drag)。

試験段階から既定へ移ったものがあります。

機能 151 152
CSSAlphaColorFunction(色の alpha 指定) 試験段階 既定
CSSPseudoElementBackdrop(::backdrop) 試験段階 既定
CSSPseudoElementViewTransitions(ビュー遷移の擬似要素) 開発中 既定
CompositeClipPathAnimation(clip-path のアニメーション合成) 試験段階 既定

そのほか既定になったもの

151 で試験段階だったものを含め、43 種が既定になりました。主なものです。

領域 機能
Shadow DOM ShadowRootReferenceTarget / ShadowRootSlotAssignment
ストレージアクセス RequestStorageAccessFor
Range API OpaqueRange / LegacyAbstractRange / RangeBoundaryFastPath
画面共有の音声選択 GetDisplayMediaAudioSelection
サニタイザ StreamingSanitizer

移行の注意 — 消えたフラグ

152 でフラグが 29 種消えました。ただし、そのうち 25 種は 151 の時点で既に既定 (stable) でした。
これは挙動が恒久化して、設定で切り替えられなくなったことを意味します。

逃げ道として設定していた場合は無視されるようになります。 代表的なもの:

消えたフラグ 151 での状態
MulticolColumnWrapping(段組みの折り返し) 既定
OffMainThreadCSSPaint 既定
PageRevealEvent 既定
PaintTimingMixin 既定
SystemFallbackEmojiVSSupport 既定

残る 4 種は既定ではなかったものです。

ConnectionAllowlist は ConnectionAllowlistEmbeddedEnforcement に
置き換わりました。

152 → 153 — 縦組みの行末に、上流の手が入った版

この版の主役は、縦書きで行が途中までしか埋まらない現象の解消です。
当方から上流へ報告し (crbug 542686223)、
Chromium 側で修正されました。

差分の規模は、追加 39 件 (既定で有効 18 / 試験段階 14 / 開発中 3 / その他 4)、
削除 59 件、状態が変わったもの 19 件 (うち既定で有効へ昇格 10 件)。
CSS プロパティは追加 5 件・削除 1 件です。

縦組みで、閉じ括弧が行末に来ても行が埋まります (既定で有効)

縦書きの段落で、閉じ括弧が行末に来ると行が半分ほどで折り返す現象がありました。
35 文字入る行に 17 文字しか入らず、text-align: justify を指定していると
残りを引き伸ばすため、字間が倍 (16px → 33.5px) に開きます。読み手には、
そこだけ間延びした行として見えます。

153 で LineBreakerHanKerningEnd という機能が新設され、最初から既定で有効です。
152 のツリーにはこの名前が 1 件も存在しません。

実測 (縦書き 1 段落 35 文字、高さ 544〜564px を 1px 刻み、ソフトウェア描画):

フラグ 1 行に入る文字数 (552〜559px)
既定 (何も指定しない) 35
明示的に有効化 35 (既定と同じ)
明示的に無効化 17

明示的に無効化すると 17 文字に戻ります。これが、この機能が動作していることの
裏付けです。存在しないフラグ名を渡した対照では 35 のままで、スイッチそのものは
結果に影響しないことも確かめています。

横組みでは起きません。縦組みに固有の現象でした。ただし縦組みの中では条件を
選ばず、書体を変えても (serif / sans-serif / Noto Serif CJK JP / Noto Sans CJK JP)、
ルビを併用しても、line-height: normal でも同じように起きていました。
13 通りの設定のうち 8 通りで発生し、153 ではすべて解消しています。

ぶら下げは、この版でもまだ使えません

行末の句読点をぶら下げる hanging-punctuation は、149 で CSS プロパティとしての
受け皿が入って以来、149・150・151・152・153 と 5 版続けて実装フラグが test
のままです。CSS.supports() は真を返しますが、行組版は変わりません。
機能検出に使うと外します。詳しくは冒頭の「この文書の読み方」を参照してください。

ルビのはみ出し (CSSRubyOverhang) と圏点のルビ経路処理 (TextEmphasisAsRuby) は
151 以降そのまま既定で有効です。この版で変わったところはありません。

文字入力の自動修正が、HTML の指定どおりに働きます (既定で有効)

HTML の autocorrect 属性が、プラットフォームの入力方式 (IME) に反映されるように
なりました。自動修正は既定で有効で、URL・メールアドレス・パスワードの入力欄では
強制的に無効になります (autocorrect=off を持つフォームに属する場合も同様)。
仕様は HTML Standard にあります。

日本語入力そのものの挙動を変えるものではありませんが、氏名や住所のように
自動修正が邪魔になる欄を持つフォームでは、autocorrect=off の指定が反映されるように
なった、と考えてください。

カメラとマイクの許可を、ページの中に置けます (既定で有効)

<camera> と <microphone> という HTML 要素が加わりました。カメラ・マイクの
使用許可を求める操作部品を、ブラウザのダイアログではなくページの中に直接
埋め込める
ようになります。

XML の解析が Rust の実装に替わりました (既定で有効)

JavaScript の DOMParser で XML を解析する場合と、XMLHttpRequest の
responseXML を使う場合に、Rust で書かれた XML パーサが使われるようになりました。
XSLT 処理が要らないと分かっている経路に限った切り替えです。
EPUB のように XML を多く扱う用途では、解析まわりの堅牢性に関わります。

追加された CSS プロパティ

プロパティ 状態 備考
text-decoration-inset 試験段階 下線などの位置を内側にずらす指定
overscroll-container-type 試験段階 端を超えたスクロールの扱い
max-content-sizing 開発中 プロパティは解釈されますが、描画には反映されません

-internal- で始まる 2 件はブラウザ内部用で、ページからは使えません。
-internal-overscroll-area は削除され、-internal-overscroll-container に
置き換わっています。

削除された 59 件について

削除の 59 件は、その大半 (48 件) がすでに既定で有効だった切替フラグです。
挙動が定着したあと、切り替える必要がなくなったものを整理したものと読めます。
機能が失われたわけではありません。

なお、この差分の取り方と、載せる項目の選び方は末尾の「出典と、この差分の取り方」に
書いたとおりです。名前から意味を推測すると誤りが混ざるため、実装を確かめられなかった
ものは本文に載せていません
。既定で有効へ昇格した 10 件のうち本文で触れたのは
3 件で、残りは確かめきれなかったか、ページの表示に関わらないものです。


154 → 155 — ルビの後の行のずれの修正と、margin-trim が入った版

日本語組版では、ルビの注釈の領域 (ルビが行の外へはみ出す分の空き) の計算に上流の変更が
2 件入りました。
既定で動くのは 1 件 (ルビの後の行が上にずれる不具合の修正) で、段組みの中の
もう 1 件は試験段階のフラグの下だけです。

差分の規模は次のとおりです。Blink の機能のうち既定で有効になったものが 25 件 (うち試験段階などからの昇格 6 件、
新しく足されて最初から有効のもの 19 件)。削除が 24 件 (うち 20 件は既定で有効だったフラグを外した恒久化)。
既定から外れたものが 1 件、試験段階などで新しく足されたものが 18 件。利用者が書ける CSS プロパティの
増減はありません (増えたのは内部用の 3 件)。

ルビの後の行が上にずれる不具合が直りました (上流の修正)

要素自身・前の兄弟・子の負の margin (疑似要素によるものなど) を相殺した結果が負になると、
ルビの注釈の領域が負の値になることがあり、そのときルビの無い後続の行が上にずれていました。注釈の領域が padding より小さくならないように
直されています (上流のコミット 46d20dbfa5c05)。

段組みの中のルビの注釈の領域 — 試験段階のフラグの下だけ (既定では変わりません)

段の高さをそろえる段組み (column-fill: balance) の子でも、ブロックの末尾側のルビの注釈の
領域を次のブロックへ伝える変更が入りました (上流のコミット 4226ea59b9645)。ただし変更は
試験段階のフラグ AnnotationSpaceForMultiCol の下だけにあり、155 ではこのフラグは
既定で無効です。BlinkGTK もこのフラグを有効にしていないので、既定の配置は変わりません。

::first-line の行の高さの計算が、フラグ FirstLineTextMetrics が入る前の計算に戻りました

154 まで既定で有効だったこのフラグの計算を外し、古い Blink と WebKit と同じ計算に戻しました。CSS の仕様が古い Blink と WebKit の挙動に
合わせて改められたためで、退行ではありません (上流のコミット d726ab7f7fc2d)。

margin-trim と text-decoration-skip-spaces が使えます (既定で有効)

151 から入っていたものが恒久化されました (挙動は変わりません)

圏点をルビと同じ仕組みで配置する変更と、ルビを含む行でのカーソルの上下移動の修正は、
151 から既定で有効でした。155 でフラグが外れ、恒久化されました。text-indent やタブの幅の
計算などのフラグの削除も、154 で既定で有効だったものの恒久化です。

測っていないこと

154 の章と同じ縦組みの行分割の測定 (高さ 544〜564px の 42 点と、設定を変えた 13 通り) を、
公開した 1.2.4-build2 で行い、154 (1.2.3-build4) と全件同じ値でした (2026-10-11)。
それ以外の項目は上流のコミットの説明とソースに基づき、動かして測ってはいません。

153 → 154 — 縦組みの行分割は据え置き、XML の解析は元の実装へ戻った版

日本語組版にとっては、変わらなかったことが一番の情報です。 153 で直った縦組みの
行末の処理はそのまま引き継がれ、ルビ・圏点・ぶら下げの状態も 153 と同じです。

差分の規模は、追加 27 件 (既定で有効 10 / 試験段階 10 / 開発中 4 / その他 3)、
削除 25 件、状態が変わったもの 10 件 (うち既定で有効へ昇格 6 件、既定から外れたもの 3 件)。
CSS プロパティの増減はありません (824 件のまま)。

縦組みの行分割は 153 と同じです (実測)

153 で行分割を測ったのと同じ計測ツールで、154 を測り直しました。縦書き 1 段落 35 文字、
高さ 544〜564px を 1px 刻み、ソフトウェア描画です。

測ったもの 154 153
544〜551px の 1 行目の文字数 (inline box 無し / 有り) 33 33
552〜564px の 1 行目の文字数 (inline box 無し / 有り) 35 35
設定を変えた 13 通り (句点で終わる・text-spacing-trim・ルビ・書体 4 種など) 153 と全件一致 (比較の基準)

帯掃引の 42 点と 13 通りが、153 の値と 1 つ残らず一致しました。 行末の禁則で
行が途中までしか埋まらない現象 (153 で解消) も、154 で戻っていません。

範囲はこの計測ツールが測るものに限ります。エンジン全体の layout test を回したわけでは
ありません。

text-box-trim がインライン要素にも適用されます (既定で有効)

text-box-trim は、行の上下に付くフォント由来の余白を削る指定です。これまでは
ブロック要素にしか適用されませんでした。154 からは <span> のようなインライン要素に
指定しても、その要素の上下の余白が削られます。

ページが text-box-trim をインライン要素に指定していなければ、何も変わりません。
指定しているページでは、154 から見え方が変わります。

XML の解析は、153 の Rust の実装から従来の実装に戻りました

153 で DOMParser と XMLHttpRequest の responseXML に使われるようになった
Rust の XML パーサは、154 では既定で使われません (状態が stable から
experimental に戻りました)。153 より前と同じ実装で解析します。

EPUB の OPF や目次を DOMParser で読むリーダーでは、153 と 154 で解析の実装が
違うことになります。153 で解析の結果が変わったと感じていた場合は、154 で元に
戻っているはずです。

ポップアップとダイアログが、タップで正しく閉じます (既定で有効)

ポップオーバーやダイアログの外側をタップして閉じる操作 (light dismiss) が、
pointerdown / pointerup ではなく click を契機にするようになりました。
タッチ操作で閉じ損ねる不具合への対処です。

動画の字幕に、設定ボタンが付きます (既定で有効)

<video> の標準の操作部品に、字幕の表示設定を開くボタンが加わりました。
字幕の枠の置き方も、テキストの揃え (text-align) ではなく字幕の指定
(WebVTT の位置揃え) に従って決めるようになっています。

ページ側の指定で働くもの (既定の挙動は変わりません)

機能 使い方
iframe を中身の大きさに合わせる 親が frame-sizing を指定し、子のページが <meta name="responsive-embedded-sizing"> を置いたときだけ働きます
setHTMLUnsafe() でスクリプトを動かす runScripts: true を渡したときだけです。渡さなければ従来どおり動きません
スクロールマーカーをタブ / リンクとして扱う scroll-marker-group に tabs または links を続けて指定したときだけです (例: scroll-marker-group: after tabs)

ぶら下げは、この版でもまだ使えません

hanging-punctuation の実装フラグは、149 から 154 まで 6 版続けて test の
ままです。CSS.supports() は真を返しますが、行組版は変わりません。

削除された 25 件について

削除の 25 件のうち 21 件は、すでに既定で有効だった切替フラグです。
段組みの罫線 (CSSGapDecoration) もその 1 つで、153 では 31 か所あった切り替えの
判定が 154 では 0 か所になり、常に有効として動きます。CSS プロパティの増減は
無いので、機能が失われたわけではありません。

名前から意味を推測すると誤りが混ざるため、実装を確かめられなかったものは
本文に載せていません
。既定で有効へ昇格した 6 件のうち本文で触れたのは 5 件です。


日本語組版の現在地 — 8 版を通した俯瞰

BlinkGTK の主な用途が日本語縦組みの電子書籍であることを踏まえて、
関係する項目だけを版ごとに並べます。空欄はその版に存在しなかったことを意味します。

項目 147 148 149 150 151 152 153 154
縦組みの行末で行が埋まる — — — — — — 既定で有効 既定で有効
ルビのはみ出し (ruby-overhang) 試験 試験 試験 試験 既定で有効 既定で有効 既定で有効 既定で有効
圏点をルビ経路で処理 — — — — 既定で有効 既定で有効 既定で有効 既定で有効
ルビの置き方の再実装 — — — — — 既定で有効 既定で有効 既定で有効
ルビの親文字での tab-size — — — — — 既定で有効 既定で有効 既定で有効
text-autospace がルビ注記を無視 — — — — 既定で有効 既定で有効 既定で有効 既定で有効
開きタグ前スペース後の改行 — — — — 既定で有効 既定で有効 既定で有効 既定で有効
注記の開始側アキ — — — — 試験 既定で有効 既定で有効 既定で有効
インライン要素の text-box-trim — — — — — — — 既定で有効
入れ子リストの text-box-trim — — — 既定で有効 既定で有効 既定で有効 既定で有効 既定で有効
全角スペースの位置対応修正 — — — 既定で有効 既定で有効 既定で有効 既定で有効 既定で有効
ルビ行での編集カーソル移動修正 — — 既定で有効 既定で有効 既定で有効 既定で有効 既定で有効 既定で有効
下線が文字を避ける 試験 既定で有効 既定で有効 既定で有効 既定で有効 既定で有効 既定で有効 既定で有効
ぶら下げ (hanging-punctuation) — — プロパティのみ (開発中) 同左 同左 同左 同左 同左
縦組み多段の分割 (BlinkGTK 独自) — — — 試験 試験 試験 試験 試験

読み取れることは 2 つあります。

ひとつ、ルビと圏点は 151 で一気に前進しました。長く試験段階に置かれていた
ruby-overhang が既定になり、圏点の実装が整理されました。縦組みリーダーを作るなら、
151 ベースの BlinkGTK は明確に価値があります。

ふたつ、ぶら下げ組版はまだ届いていません。プロパティは 149 で用意されましたが、
実装は 154 でも開発中のままです。JLReq の完全準拠にはこの一手が要ります。
BlinkGTK はここを継続課題として追っています。

最後の行の「縦組み多段の分割」は上流 Chromium にはない、BlinkGTK が独自に足している
機能です(縦組みで段組みを使ったときの分割処理)。Chromium から受け取るだけでなく、
足りないところは自分で埋める、という立ち位置を示しています。


出典と、この差分の取り方

推測を含めないために、すべてエンジンのソースツリーから機械的に抽出しています。
同じ手順で誰でも再現できます。

見たもの ファイル
機能フラグと既定の有効/無効 third_party/blink/renderer/platform/runtime_enabled_features.json5
CSS プロパティの一覧 third_party/blink/renderer/core/css/css_properties.json5

さらに、151 については BlinkGTK のビルドで実際にどうなっているかを確認しています。
上流の宣言が stable でも、ビルド構成によって最終的な既定値は変わりうるためです。
下表は、生成されたコード (runtime_enabled_features.cc) から読んだ実際の初期値です。

機能 BlinkGTK 151 ビルドの既定値
ルビのはみ出し (CSSRubyOverhang) 有効
圏点をルビ経路で処理 (TextEmphasisAsRuby) 有効
text-autospace がルビ注記を無視 有効
開きタグ前スペース後の改行 有効
ぶら下げ (CSSHangingPunctuation) 無効
縦組み多段の分割 (BlinkGTK 独自) 無効 (要求時のみ有効)

153 についても同じ確認をしています。LineBreakerHanKerningEnd は上流の宣言が
stable ですが、宣言を読むだけでは実際に組版へ反映されているか分かりません。そこで
起動時にこのフラグを明示的に無効化して測り直し、1 行に入る文字数が 35 から
17 に戻ることを確かめました。存在しないフラグ名を渡した対照では 35 のままです。
つまりこのフラグが結果を作っていることが、宣言ではなく挙動で裏付けられています。

154 では、153 と同じ計測ツールで行分割を測り直しました。帯掃引の 42 点と設定を変えた
13 通りが、153 の値とすべて一致しています。
「縦組みの行分割は 153 と同じ」と書いたのは、この実測によります。

本文の記述はこの実測と一致しています。ぶら下げが使えないと書いたのは、
上流の宣言だけでなく実際のビルドでも無効だからです。

各版のツリーからこの 2 ファイルを解析して「機能名 → 状態」の対応表を作り、
隣り合う版どうしで差を取っています。本文で挙げた件数(既定で有効になった数、
追加数、削除数)はすべてこの差分の実数です。

機能名から意味を推測すると誤りが混ざるため、内容に確信が持てないものは
本文に載せていません
。件数と、この文書に挙げた項目の数が合わないのはそのためです。


関連する文書