バージョン: 1.2.0-build2 / 言語: 日本語 | English
BlinkGTK は Chromium のレンダリングエンジン Blink
をそのまま載せています。つまり
Chromium が新しい版で獲得した Web の能力は、BlinkGTK
を新しい版に上げるとそのまま
手に入ります。この文書は、BlinkGTK がベースにしてきた Chromium
147・148・149・150・151
の間で何が変わったのかを、実際にできるようになったことの側から辿ったものです。
仕様書の抜粋ではありません。エンジンのソースツリーそのものを版ごとに突き合わせて
差分を取り、そこから読者に関係するものを選んでいます(取得方法は末尾に書きます)。
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', ...)
を機能検出に使うと外します。
現時点では「使えない」前提で版面を組んでください。
5 つの版で、エンジンが持つ機能フラグは 1,103 → 1,214 に増えました。
| 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 | 移行作業中 (2026-08) |
1 版あたり 30〜50 個の機能が既定で有効になり、20〜35
個が消えています。削除があるという
点は見落とされがちですが、上げるときに壊れる可能性があるのはむしろこちら側です。
各章の最後に「移行の注意」を置いたのはそのためです。
一言で: 派手な新機能より、CSS の細部の辻褄合わせが多い版です。
下線が文字を避けるようになりました(text-decoration-skip-ink
の適用範囲拡大)。
日本語だと ぎ や p
のように基線より下に出る部分に下線が重なると、可読性が目に見えて
落ちます。147 では試験段階でしたが、148 から既定で有効になりました。
可変フォントの avar2 対応も入りました。1
つのフォントファイルで太さや字幅を連続的に
変えられる仕組みの、新しい版のテーブルに対応したものです。
@supports の中で at-rule()
関数が使えるようになりました。「このブラウザはrevert キーワードが @rule
の文脈でも効くようになりました<video> <audio>
の遅延読み込み(loading="lazy")が既定で有効に (ノーブレークスペース)を正規化するようになりました。<command>
要素の残骸が削除されました。ほとんどのアプリには影響しませんが、
古いコードをそのまま持ち込んでいる場合は確認してください。
一言で: 多段レイアウトの表現力が増え、日本語組版の器がひとつ用意された版です。
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
に改名されました。仕様側の議論が
落ち着いた結果です。
shape-outside が path()
shape() rect() xywh()
を受けるようになりました。CSSPseudoElement インターフェースposition: sticky の追従判定が軸ごとに独立しましたcurrentColor になりました段罫線プロパティの改名(上記)は、149
より前の名前で書いたスタイルが無効になります。
使っている場合は書き換えが必要です。
一言で: この 5 版でいちばん実りが多く、BlinkGTK v1.1.0 の土台になった版です。
text-box-trim
が入れ子リストでも効くようになりました。行の上下に生じるフォント
由来のアキ(ハーフレディング)を削って、指定した文字の高さで版面を作るための仕組みです。
日本語では、見出しと本文のアキを設計値どおりに詰めるときにこれが要ります。
全角スペースの扱いが直りました。テキストの位置対応表(オフセットマッピング)を
再利用する際に全角スペースで崩れる不具合が修正され、選択範囲や折り返し位置が
全角スペース混じりの文章でずれなくなりました。
書記素クラスタの境界チェックが入りました。絵文字の合字や結合文字を、
カーソル移動や削除で分断しにくくなります。
::first-line に text-transform
が効くようになり、行分割の中断処理も改善されました。
corner
を起点に 18 個のプロパティが入り、corner-block-start など)でも指定できますtext-fit —
与えられた枠に収まるよう文字サイズを自動調整しますimage() 関数と light-dark()
の画像対応。ライト/ダークで画像を出し分けられますbackground-clip: border-areaflex-wrap の行分配を均等化する
balancescroll-axis-lock — スクロール軸を固定できますfocusgroup —
矢印キーによるフォーカス移動をまとめて定義できますcorners プロパティが corner
に改名されましたhint の挙動が変わりました一言で: 日本語組版にとって、この 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(注記の開始側のアキ)が入りました。既定では
無効ですが、ルビや圏点の前後アキの制御に関わる項目として、次版以降の動きを注視する
価値があります。
<textarea>
の空プレースホルダの改行処理を修正TextStream メソッド、UserMediaElementfeImage が EXIF の向きを尊重するように| 変更 | 影響 |
|---|---|
| 圏点がルビ経路に | 圏点付き文書の行の高さと総行数が変わる可能性 |
document.implementation.createHTMLDocument() の
readyState |
生成直後の状態が仕様準拠に変わりました |
ポップオーバー hint の入れ子表示 |
入れ子で表示しようとすると例外を投げるようになりました |
getComputedStyle のフラットツリー外要素 |
既定で無効化されました |
| Sub Apps API | 削除されました |
BlinkGTK
の主な用途が日本語縦組みの電子書籍であることを踏まえて、
関係する項目だけを版ごとに並べます。空欄はその版に存在しなかったことを意味します。
| 項目 | 147 | 148 | 149 | 150 | 151 |
|---|---|---|---|---|---|
ルビのはみ出し (ruby-overhang) |
試験 | 試験 | 試験 | 試験 | 既定で有効 |
| 圏点をルビ経路で処理 | — | — | — | — | 既定で有効 |
text-autospace がルビ注記を無視 |
— | — | — | — | 既定で有効 |
| 開きタグ前スペース後の改行 | — | — | — | — | 既定で有効 |
| 注記の開始側アキ | — | — | — | — | 試験 |
入れ子リストの text-box-trim |
— | — | — | 既定で有効 | 既定で有効 |
| 全角スペースの位置対応修正 | — | — | — | 既定で有効 | 既定で有効 |
| ルビ行での編集カーソル移動修正 | — | — | 既定で有効 | 既定で有効 | 既定で有効 |
| 下線が文字を避ける | 試験 | 既定で有効 | 既定で有効 | 既定で有効 | 既定で有効 |
ぶら下げ (hanging-punctuation) |
— | — | プロパティのみ (開発中) | 同左 | 同左 |
| 縦組み多段の分割 (BlinkGTK 独自) | — | — | — | 試験 | 試験 |
読み取れることは 2 つあります。
ひとつ、ルビと圏点は 151
で一気に前進しました。長く試験段階に置かれていた
ruby-overhang
が既定になり、圏点の実装が整理されました。縦組みリーダーを作るなら、
151 ベースの BlinkGTK は明確に価値があります。
ふたつ、ぶら下げ組版はまだ届いていません。プロパティは
149 で用意されましたが、
実装は 151 でも開発中のままです。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 独自) | 無効 (要求時のみ有効) |
本文の記述はこの実測と一致しています。ぶら下げが使えないと書いたのは、
上流の宣言だけでなく実際のビルドでも無効だからです。
各版のツリーからこの 2 ファイルを解析して「機能名 →
状態」の対応表を作り、
隣り合う版どうしで差を取っています。本文で挙げた件数(既定で有効になった数、
追加数、削除数)はすべてこの差分の実数です。
機能名から意味を推測すると誤りが混ざるため、内容に確信が持てないものは
本文に載せていません。件数と、この文書に挙げた項目の数が合わないのはそのためです。