BlinkGTK 1.2.0-build2 リリースノート

リリース日: 2026-08-05 / Chromium: 151.0.7922.71 / 言語: 日本語 | English

レンダリングエンジンを Chromium 151 に更新しました。日本語の組版に直接効く変更が
まとまって入っています。とくに縦組みで圏点を使う文書は、版面が変わります


build2 で加わったもの

版が正しく名乗られる

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 がずれることはもうありません。

縦書き版面の実測値を JavaScript から読める

縦組み 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() ではない */

圏点の独自 patch を外しました

v1.1 系で同梱していた圏点まわりの独自 patch を削除し、Chromium 151 標準の
挙動に一本化
しました。151 で上流が同じ問題を解決したため、二重に手を入れる
必要がなくなっています。挙動は下記「圏点を付けても行送りが太らない」のとおりです。


v1.2.0 系列でできるようになったこと

圏点を付けても行送りが太らない

これまで、圏点(傍点)を付けた行だけ行の高さが広がっていました。JIS X 4051 と JLReq は
圏点を行間に置き、行送りを変えないことを求めているので、規格とずれた状態でした。

151 で解消しています。縦組み、font-size: 16pxtext-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> のようなマークアップで、スペースの後に改行できるように
なりました。意図しない位置で行が折れる現象が減ります。

Web 標準が 1 世代進んだ

Chromium 150 から 151 で、44 の機能が新たに既定で有効になりました。角丸の論理方向指定、
text-fitfocusgroup、ホイールイベントの慣性情報などが含まれます。
版ごとの内訳は Chromium 147 → 151 の新機能
にまとめています。


移行時に確認していただきたいこと

Chromium 側の仕様変更で、動作が変わるものがあります。

変更 影響
圏点の組版 行送りが変わるため、総ページ数・行数が変わりうる
document.implementation.createHTMLDocument()readyState 生成直後の状態が仕様準拠に変わりました
ポップオーバー hint の入れ子表示 入れ子で表示しようとすると例外を投げます
getComputedStyle のフラットツリー外要素 既定で無効になりました
Sub Apps API 削除されました

動かすために必要なもの


切り分け用のスイッチ

不具合の切り分けに使える環境変数です。通常の運用では設定しないでください。

変数 効果
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 と同じ規約です。


連絡先