Repository navigation
feat(qt): 固定 Unicode 样本贯通 Qt 呈现与独立 child 接收(#30 切片) - #313
Merged
Merged
Conversation
Add qt_unicode_render: a fixed five-sample set (ASCII, CJK, supplementary plane, combining mark, record-only ZWJ/keycap) goes through the formal Qt key path into a real child, whose ReadConsoleW receive file is the independent byte oracle; the child echoes the same bytes with CR->CRLF and the widget paints the parsed Screen offscreen. The test asserts exact receive/echo bytes, literal Cell/width/marks, per-cell painted ink, actual RawFont fallback faces and missing-glyph count, and an unclipped reference ink bound; a second empty session observes target isolation. Measured locally: CJK renders with host Alibaba PuHuiTi, two emoji with Segoe UI Emoji (advance 21 px over an 18 px span but reference ink 3..17 stays inside), the combining mark keeps marks=1, and U+200D/U+FE0F are still replaced by U+FFFD by the recovery parser (recorded gap, no new clustering/width policy). The capture is offscreen only: presented_done=null, not physical presentation or native IME. Add the independent echo fixture and the cell-geometry diagnostics, register the target and runtime manifest in the Qt CI job, and record the evidence. Qt formal-path CTest 6/6; core CTest 41/41 including the 15 Unicode parser tests. #30/#155 stay open. Co-authored-by: JavaZeroo <[email protected]>
Record the final two-run and regression results for qt_unicode_render in validation.json: exact receive/echo hashes, per-cell glyph families, missing-glyph counts, advance and ink spans, the ZWJ/keycap recovery gap, and the fixed dependency/source/binary identities. Also align the report's measured timings with the final runs. The recorded implementation sources still match the implementation commit; this follow-up changes only documentation. #30/#155 stay open. Co-authored-by: JavaZeroo <[email protected]>
Collaborator
Author
验证摘要(同源码)
当前 head CI
CI 环境的字体观察(记录,不当作通过)CI 的 windows-2025 镜像没有可用的 CJK fallback 面( 边界U+200D/U+FE0F 仍被 recovery parser 替换为 U+FFFD(只记录,未新增字素/宽度策略);offscreen 局部证据, |
4 tasks
This was referenced Nov 4, 2026
Open
JavaZeroo-Bot
added a commit
that referenced
this pull request
Nov 4, 2026
Resolve docs/EVIDENCE.md and docs/FEATURES.md conflicts by keeping both #313's fixed-Unicode Qt presentation evidence and its limits and #314's confirmed hidden-frame full-body decision, intentional-difference record and formal-path status. No production or frozen-record changes; the preserved strict audit failure, offline supplement and semantic_acceptance=false keep their identity. Co-authored-by: JavaZeroo <[email protected]>
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
范围
在同一个正式 C++ / Qt Widgets / 随包固定 Microsoft ConPTY 构建里,补上当前未覆盖的“解析后实际绘制”端到端合同(#30 的一个独立 R2 切片,不消费 #27 隐藏帧决定):
ReadConsoleW精确接收(独立字节 oracle)→ child 按文档化 CR→CRLF 回显同字节 → 核心解析 →TerminalWidget绘制 → 离屏QImage抓图。Cell/width/marks、每格实际墨迹、QTextLayout实测RawFontfallback 面与 missing glyph、同字体无裁剪参考墨迹落在格内;第二条空会话验证目标隔离。改动
src/qt/unicode_render_test.cpp(新):上述合同测试;TerminalWidget仅新增只读 cell 几何诊断访问器。experiments/shell/unicode_echo_client.cpp(新):独立接收 + 同字节回显夹具,要求处于自有 Job。CMakeLists.txt:新 fixture、qt_unicode_render_test与 CTestqt_unicode_render(offscreen + OwnedJob supervisor)。.github/workflows/qt-cpp.yml构建/运行时清单/CTest 选择加入新测试。experiments/shell/results/2026-11-04-qt-unicode-presentation/(README + validation.json)、src/qt/README.md、docs/FEATURES.md、docs/EVIDENCE.md。验证(同源码实测)
qt_cpp_shell、qt_unicode_input、qt_unicode_render、qt_cpp_resize、qt_terminal_modes、qt_terminal_modes_retained,9.92 s)。32a5695a…、echo SHA-25696ae6f16…两次一致,除 child pid 与一个混合 cell 的 fallback 面顺序外逐字段一致。core的 16 项核心 + 15 项 Unicode Python 测试、keyboard、recovery、resize_replay_contract及全部*_core)。Alibaba PuHuiTi;emoji →Segoe UI Emoji;ASCII/结合标 → 随包Roboto Mono(sha256af0bff75…)。已知缺口与边界
presented_done=null,不是物理呈现、原生 IME、真实 96/144 DPI 或 WindTerm 等价;fallback 依赖宿主字体,缺失时测试记录host_fallback_rendered=false而非算通过。qt_unicode_input字节合同、旧f72c5c4输入回归或历史 Win32/DWrite 渲染证据。复验与全部身份见 固定结果。