Releases: daisy19gnu/blinkgtk-dist
Release list
BlinkGTK 1.2.0-build2 — 版の名乗りと版面メトリクス
Chromium 151.0.7922.71 ベース。build1 と同じエンジン基盤で、版の名乗りと版面メトリクスの公開が入っています。
このビルドで加わったもの
版が正しく名乗られる (#129)
これまで: BlinkGTK/0.1.0 Chrome/143.0.0.0
本版: BlinkGTK/1.2.0 Chrome/151.0.0.0
navigator.userAgent が固定文字列で、エンジンを更新しても追従していませんでした。8 メジャー版古い版を名乗っていたことになります。「古い版を名乗って安全側」ではなく、実際にある機能を無いと判定される方向の誤りです。
版は blink_gtk_get_version() / blink_gtk_get_chromium_version() と同じ単一ソースから出ます。
縦書き版面の実測値を JavaScript から読める (#113)
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 のメインループが回りません。コンパイルも起動も通るぶん気付きにくいものでした。
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 を削除 (#127)
Chromium 151 が上流で同じ問題を解決したため、独自 patch を外して151 標準の挙動に一本化しました。
検証
- V8 三点 15.1.206.10 整合 (libv8 / snapshot_blob / v8_context_snapshot)
- 必須ファイル 12 件、SONAME-versioned
.so+ ICD JSON - RPM: 全 named 依存が Fedora で解決可能、GPG 署名済
- 同梱ドキュメント: ja/en 完備 + WebKitGTK 同等種別 + 版数整合
検証手順
gpg --import BlinkGTK-GPG-KEY.asc
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum -c SHA256SUMS必要なもの
GTK4 4.6.0+ / GLib 2.70.0+ / Wayland 1.18.0+ (Wayland 専用)
BlinkGTK 1.2.0-build1 — Chromium 151
BlinkGTK 1.2.0-build1 リリースノート
リリース日: 2026-08-01 / Chromium: 151.0.7922.71 / 言語: 日本語 | English
レンダリングエンジンを Chromium 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> のようなマークアップで、スペースの後に改行できるように
なりました。意図しない位置で行が折れる現象が減ります。
Web 標準が 1 世代進んだ
Chromium 150 から 151 で、44 の機能が新たに既定で有効になりました。角丸の論理方向指定、
text-fit、focusgroup、ホイールイベントの慣性情報などが含まれます。
版ごとの内訳は Chromium 147 → 151 の新機能
にまとめています。
移行時に確認していただきたいこと
Chromium 側の仕様変更で、動作が変わるものがあります。
| 変更 | 影響 |
|---|---|
| 圏点の組版 | 行送りが変わるため、総ページ数・行数が変わりうる |
document.implementation.createHTMLDocument() の readyState |
生成直後の状態が仕様準拠に変わりました |
ポップオーバー hint の入れ子表示 |
入れ子で表示しようとすると例外を投げます |
getComputedStyle のフラットツリー外要素 |
既定で無効になりました |
| Sub Apps API | 削除されました |
動かすために必要なもの
- Linux (Wayland)
- GTK 4.6 以降 / GLib 2.70 以降
- 組み込みアプリは PartitionAlloc allocator shim を直接リンクしてください。
pkg-config --libs blinkgtk-0.1を使えば自動的に含まれます。
この要件は 151 でも継続します(本版のビルドで確認済み)。
詳細は 組み込み・統合ガイド。
切り分け用のスイッチ
不具合の切り分けに使える環境変数です。通常の運用では設定しないでください。
| 変数 | 効果 |
|---|---|
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 と同じ規約です。
連絡先
BlinkGTK v1.1.0-build6
BlinkGTK 1.1.0-build6 リリースノート
日付: 2026-07-29
Chromium: 150.0.7871.46 (stable)
状態: 開発版 (1.1.0-dev)。本配布物は検証用途を含みます。
このリリースでできるようになったこと
文字サイズを変えてもページが白くならない
文字サイズを大きく変えた直後に、ページが白紙のまま固定される問題を解消しました。
見開きの縦書き表示で特に起きやすく、これまでは文字サイズ変更を備えた読書アプリが
成立しませんでした。
大きなリフローの途中で描画の差分領域が空と計算され、白いタイルが有効なまま
固定されるのが原因でした。真因まで辿って修正し、意図的に不具合を注入して
再発を検出する回帰試験を組み込んであります (Issue #120)。
静止時に CPU を消費しない
何も操作していない間、CPU を常時 1 コア近く消費し続けていた問題を解消しました。
バッテリー駆動の端末や、キオスク端末のように電源を入れたまま置いておく機器でも
使えます (Issue #115)。
日本語の縦書きで段組みができる
段組み (column-count) と writing-mode: vertical-rl を組み合わせたとき、列の
境目にかかる行が隣の列に欠けて描画される問題を解消しました。縦書きの電子書籍や、
新聞・雑誌のような多段組みの版面が組めます。
既定では無効です。従来の描画を変えないため、起動時に明示して有効にします。
myapp --enable-blink-features=CJKVerticalColumnFragmentation現段階の実装は、列幅 600px・column-gap: 0・直交ルートの border/padding が 0 という
条件を前提としています。この範囲を外れる版面は従来どおりの描画になります
(Issue #110)。
権限の要求をアプリ側で決められる
Web ページからの位置情報・通知などの要求を、アプリが受け取って許可・拒否を返せる
ようになりました。既定は拒否です。シグナルを繋がなければ、すべての要求が自動的に
拒否されます。
キオスク端末や電子書籍リーダーのように「利用者に権限ダイアログを出したくない」
「特定の要求だけ通したい」という用途で、挙動を保証できます。
static gboolean on_permission(BlinkWebView *view,
BlinkPermissionRequest *req,
gpointer user_data) {
const char *kind = blink_permission_request_get_type_name(req);
if (g_strcmp0(kind, "notifications") == 0)
blink_permission_request_allow(req); /* 通知だけ許可 */
else
blink_permission_request_deny(req);
return TRUE; /* 処理したことを伝える */
}
g_signal_connect(view, "permission-request", G_CALLBACK(on_permission), NULL);User-Agent と Cookie を差し替えられる
blink_web_view_set_user_agent() で User-Agent を上書きし、
blink_web_view_set_cookie() で Cookie を仕込めます。特定のサービス向けの専用
クライアントを作る場合や、認証済みの状態で起動したい場合に使えます。
Python や JavaScript から書ける
GObject Introspection まわりを整備しました。列挙型 (LoadEvent / LoadError /
GpuMode / ContentPolicy) を GType として登録し、プロパティ変更の notify:: 通知と
uri-changed シグナルが実際のナビゲーションで発火するようにしています。
PyGObject と GJS から動作を確認済みです。
マウス操作が実用に耐えるようになった
ホイールスクロールの座標、スクロールバーのつまみのドラッグ、ページ遷移後の
クリックが正しく動くようになりました。これまでは画面中央以外がスクロールできない、
本を切り替えたあとクリックが効かず再起動が必要、といった状態でした
(Issue #112 / #114)。
アプリを好きな場所に置ける
blink_gtk_set_resources_path() が Chromium のすべてのリソースに効くように
なりました。従来はリソースパックだけが実行ファイルの隣を見ていたため、独自の
ディレクトリ構成を持つアプリが起動できませんでした。
100 行で組み込み方が分かる
同梱するサンプルを、https://google.com/ を表示するだけの blinkgtk_browser
(105 行) 1 本にしました。examples/ で make と打つだけでビルドできます。従来
同梱していた開発用ブラウザは、描画経路の切り替えなど開発時にしか使わない機能を
多く含み、組み込み方を知るための例としては大きすぎました。
なお メインループだけは GTK と書き方が違います。g_application_run() ではなく
blink_gtk_run_main_loop() を呼んでください (前者では画面が白いままになります)。
GTK4 そのものの使い方は https://docs.gtk.org/gtk4/ を参照してください。
動かすために必要なもの
Chromium 150.0.7871.46 (stable) をベースにしています。
パッケージは WebKitGTK と同じく 3 つに分かれています。アプリを 動かす だけなら
runtime、ビルド するなら devel も、Python や JavaScript から使う なら gir も
入れてください。
| 中身 | 必要になる場面 | |
|---|---|---|
| runtime | 共有ライブラリと Chromium ランタイム | 実行 |
| devel | ヘッダと blinkgtk-0.1.pc |
ビルド |
| gir | GObject Introspection typelib | Python / GJS |
リンクは必ず pkg-config --cflags --libs blinkgtk-0.1 を通してください。
-lblinkgtk だけを手で書くと、ビルドも起動も通るのにページが白いままになります
(Chromium の allocator shim が実行ファイルの直接依存として必要なためです)。
共有ライブラリの SONAME は libblinkgtk-0.1.so.0 に版数付けされています。
各リリースには第三者ライセンス表記 (THIRD_PARTY_NOTICES.html) と SHA256SUMS が
付きます。
切り分け用のスイッチ
上記の修正が原因で不都合が出た場合に、修正前の挙動へ戻すための環境変数です。
通常は設定不要です。
| 環境変数 | 戻る挙動 |
|---|---|
BLINKGTK_120_INVAL_FALLBACK=0 |
白紙固定の修正 (差分領域のフォールバック) を無効化 |
BLINKGTK_120_ACT_REDRAW=0 |
白紙固定の修正 (再描画の供給) を無効化 |
BLINKGTK_CAPTURE_DAMAGE_GATE=0 |
CPU 消費削減のうち、描画取得の間引きを無効化 |
BLINKGTK_PUMP_LEGACY=1 |
CPU 消費削減のうち、メインループの変更を無効化 |
BLINKGTK_PUMP_RESCUE=0 |
メインループの起床ハートビートを無効化 |
BLINKGTK_EGL_FRACTIONAL=1 |
実験中の分数スケーリングを有効化 (既定は整数、Issue #117) |
公開している環境変数の一覧は、同梱の api-reference/environment-variables-ja.md にあります。
ここに載っていないものは内部診断用で、予告なく変わります。
修正の一覧
上記に含まれない修正と、build ごとの内訳です。
build6
同梱ドキュメントの是正のみで、バイナリに変更はありません。
- ドキュメントに書かれていたビルドコマンド (
gcc ... -lblinkgtk) が、記載どおりに
実行すると失敗する状態でした。10 ファイル 16 箇所を是正しています。doc のビルド
コマンドを実際に実行して検証するゲートを追加しました。 - 「WebKitGTK と完全互換」という記述は誤りでした。関数名も対象オブジェクトも
異なります。実態に沿う表現に改めました。 - 対象バージョン表記が v0.9 系のまま残っていた箇所を更新しました。
- 開発用の内部番号 (CP 番号・Build 番号) を利用者向けの記述から除きました。
- ドキュメント間のリンクが Web で開けなかった問題を修正しました。
- 説明が先に長く続いて手順に辿り着けない構成を、先に手順・後に仕組みへ改めました。
build5
blink_gtk_set_resources_path()がリソースパックに効いていなかった問題を修正。
実行ファイルをリソースと別の場所に置くと
Check failed: data_pack->LoadFromPath(path)で起動できませんでした。- 同梱サンプルの実行ファイルに、ビルド環境の絶対パスが
rpathとして埋め込まれて
いた問題を修正。 - 同梱サンプルを
blinkgtk_browserに入れ替え。 - 設定 API のドキュメントから、同梱サンプルに存在しないコマンドラインオプションの
例を削除し、API での設定例に置き換え。
build4
build2 / build3 の同梱ドキュメントに、同梱バイナリに存在しない API を記載した箇所が
20 種ありました。記載どおりに書くとビルドできない状態で、settings-api /
c-api-reference / navigation-api / signals-api と各チュートリアルが該当します。
- 記載名が実装と食い違っていたものを実名に修正
(blink_web_view_set_enable_javascript→blink_web_view_set_javascript_enabled、
blink_web_view_set_auto_load_images→blink_web_view_set_images_enabled)。 - User-Agent / Cookie / 権限要求を実装。
- 実装のないドキュメント (INI 形式の設定ファイル API、アクセシビリティ API) は同梱から
取り下げ。実装後に改めて提供します。 - 配布物そのものを展開して doc と binary の整合を機械検証するゲートを追加し、公開の
前提条件としました。 - 保守されていない検査用プログラム (
api_check.c/api_tester.c) の同梱を終了。 examples/Makefileを pkg-config ベースに差し替え (従来のものは autotools が生成した
もので、生成環境の絶対パスを含み配布先では動きませんでした)。- tarball / RPM / DEB のすべてを build4 として再生成 (build3 は RPM のみの差し替え)。
build2 (v1.1 系の初回一般公開版、2026-07-21)
build1 は内部検証のみで一般公開していません。
- Chromium 150 (stable) へ移行。V8 スナップショットの整合、描画スモーク、実機での
縦組み描画 (EGL 経路を含む) を検証済み。 - 共有ライブラリの SONAME を
libblinkgtk-0.1.so.0に版数付け。 - runtime / devel / gir の 3 分割配布を開始。
- メインループに 100ms の起床ハートビートを追加し、滞留した処理の遅延を有界化
(アイドル時の負荷増は実測 0.5% 未満)。 - 公開している環境変数の一覧 (
environment-variables-{ja,en}.md) を同梱ドキュメントに
追加。 - 診断用の基盤 (フレーム検査・不具合注入など) は環境変数で無効を既定として同梱して
おり、通常の動作には影響しません。
互換性
- 利用側 (consumer) は PartitionAlloc allocator shim の直接リンクが必要です
(同梱の pkg-configblinkgtk-0.1.pcが処理します。Issue #90)。 - C API に互換性を壊す変更はありません。
- SONAME 版数付け (
libblinkgtk-0.1.so.0) により、consumer は再リンクで versioned な
依存を持ちます。devel パッケージの pkg-config 経由でビルドすれば自動的に整合します。
既知の制限
CJKVerticalColumnFragmentationは列幅 600px / column-gap 0 / 直交ルートの
border·padding 0 を前提とした段階の実装です (experimental、既定無効)。- tarball (FHS) 実行時は runtime の
ld.so.conf.d断片またはLD_LIBRARY_PATHで
private dir (/usr/lib64/blinkgtk-0.1/) を解決してください。 - アイドル時の CPU 消費 (Issue #115) は継続調査中です。