Skip to content

BlinkGTK 1.2.0-build2 — 版の名乗りと版面メトリクス

Latest

Choose a tag to compare

@daisy19gnu daisy19gnu released this 03 Aug 15:02

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 専用)