リリース日: 2026-08-05 / Chromium: 151.0.7922.71 / 言語: 日本語 | English
レンダリングエンジンを Chromium 151
に更新しました。日本語の組版に直接効く変更が
まとまって入っています。とくに縦組みで圏点を使う文書は、版面が変わります。
navigator.userAgent
が実際のエンジン版を返すようになりました。
これまで: BlinkGTK/0.1.0 Chrome/143.0.0.0
本版: BlinkGTK/1.2.0 Chrome/151.0.0.0
これまでは固定文字列で、エンジンを更新しても追従しませんでした。8
メジャー版
古い版を名乗っていたことになります。「古い版を名乗って安全側」ではなく、
実際にある機能を無いと判定される方向の誤りです。機能検出をバージョンで
分岐しているサイトでは、挙動が変わり得ます。
版は blink_gtk_get_version() /
blink_gtk_get_chromium_version() と
同じ単一ソースから出ます。UA と C API
がずれることはもうありません。
縦組み multicol
の版面について、エンジンが実際に使った値をページ内 JS
から
読めるようになりました。行送りや列境界を矩形から逆算する必要がなくなります。
window.__blinkgtk.verticalFlowMetrics(element)
// → { stride, originX, contentWidth, columnCount, lineCount, generation,
// lines: [{ inlineSize, blockOffset, columnIndex, hasHanging }] }columnIndex
はエンジン内部の列添字そのもので、座標比較の結果ではありません。
境界ちょうどの行が 1 列ずれる、という誤りが原理的に起きません。
起動時に
--enable-blink-features=CJKVerticalColumnFragmentation
が必要です。
無効なときは window.__blinkgtk
自体が生えないので、typeof で検出できます。
現時点の制限: 対象要素そのものが「縦書き かつ
multicol」である必要があります。
外側が横書き multicol・内側が縦書き、という二層構造では
null が返ります。
二層への対応は次のビルドで行います。
同梱ドキュメントの C / C++ サンプル 28
件が、書かれたとおりに書くと
ページを表示しない状態でした。g_application_run()
では Chromium の
メインループが回らないためで、コンパイルも起動も通るぶん気付きにくいものでした。
利用者が最初に読む QUICKSTART を含めて是正し、検出ゲートを追加しています。
GError *error = NULL;
g_application_register(G_APPLICATION(app), NULL, &error);
g_application_activate(G_APPLICATION(app));
int status = blink_gtk_run_main_loop(); /* g_application_run() ではない */v1.1 系で同梱していた圏点まわりの独自 patch
を削除し、Chromium 151 標準の
挙動に一本化しました。151
で上流が同じ問題を解決したため、二重に手を入れる
必要がなくなっています。挙動は下記「圏点を付けても行送りが太らない」のとおりです。
これまで、圏点(傍点)を付けた行だけ行の高さが広がっていました。JIS X
4051 と JLReq は
圏点を行間に置き、行送りを変えないことを求めているので、規格とずれた状態でした。
151
で解消しています。縦組み、font-size: 16px、text-emphasis-style: sesame
で
段落の実 pitch を測った値です。
| 行間の余裕 | 圏点なし | 圏点あり | 差 | |
|---|---|---|---|---|
あり (line-height: 2.6 = 41.59px) |
旧 | 41.59 | 44.09 | +2.50 |
| 本版 | 41.59 | 41.59 | 0 | |
なし (line-height: 1.75 = 28px) |
旧 | 28.00 | 37.00 | +9.00 |
| 本版 | 28.00 | 30.00 | +2.00 |
行間に余裕があれば太りません。余裕がない場合も +9.00 から +2.00 に縮んでいます。
縦組みで圏点を多用する文書は、総ページ数が減ることがあります。
良い方向の変化ですが、
ページ番号を固定している場合は確認してください。
ruby-overhang
が既定で有効になりました。ルビ文字が親文字より長いとき、隣の文字の上へ
どこまではみ出してよいかを制御できます。はみ出しを許さない
none も使えます。
JLReq
がルビの掛け方について定めている部分に、エンジンが正面から対応した形です。
text-autospace
による日本語と欧文のあいだの自動アキ調整が、ルビのテキストに
引きずられなくなりました。ルビ付きの本文で字間が不揃いになる問題が減ります。
日本語 <span>語</span>
のようなマークアップで、スペースの後に改行できるように
なりました。意図しない位置で行が折れる現象が減ります。
Chromium 150 から 151 で、44
の機能が新たに既定で有効になりました。角丸の論理方向指定、
text-fit、focusgroup、ホイールイベントの慣性情報などが含まれます。
版ごとの内訳は Chromium 147 →
151 の新機能
にまとめています。
Chromium 側の仕様変更で、動作が変わるものがあります。
| 変更 | 影響 |
|---|---|
| 圏点の組版 | 行送りが変わるため、総ページ数・行数が変わりうる |
document.implementation.createHTMLDocument() の
readyState |
生成直後の状態が仕様準拠に変わりました |
ポップオーバー hint の入れ子表示 |
入れ子で表示しようとすると例外を投げます |
getComputedStyle のフラットツリー外要素 |
既定で無効になりました |
| Sub Apps API | 削除されました |
pkg-config --libs blinkgtk-0.1
を使えば自動的に含まれます。不具合の切り分けに使える環境変数です。通常の運用では設定しないでください。
| 変数 | 効果 |
|---|---|
BLINKGTK_GPU_MODE=software / egl |
描画経路を選ぶ |
BLINKGTK_EMPHASIS_INLINE=0 |
圏点の行間配置を切る (組版の比較検証用) |
1.2.0 は製品の版で、Chromium baseline が 150 から 151
に変わったことを表します。
build1
は同じ製品版のなかでの作り直しの回数です。不具合のご報告には
build 番号までお知らせください。
パッケージ名やパスに出てくる
0.1(libblinkgtk-0.1.so.0 など)は API
の版で、
製品の版とは独立しています。GTK4 の gtk-4.0
と同じ規約です。