Files
Evan 4fc16952b3 wip(windows): 补齐隐私与许可交付,修好外部人的构建入口
- 新增 PRIVACY.md:逐项写明每个联网端点、发送内容、默认开关与关闭方式,明确云候选默认开启、
  token 在 config.toml 明文存储、无任何遥测
- 设置页「用户协议」「隐私政策」两个无 handler 的死按钮接上;前者改名为「开源许可协议」指向
  LICENSE,开源产品的用户条款就是许可证本身,不再承诺一份不存在的 EULA
- 安装包随包装入 GPL 正文并在安装向导显示(GPLv3 §4/§6),补上打包测试断言
- release.yml 增加 build provenance attestation,并在发布后向 MSIME-Web 发 repository_dispatch,
  让 msime.app/update.json 不再等两小时一次的 cron
- 所有 CMakePresets 的 vcpkg 路径改用 $env{VCPKG_ROOT},server 的 Boost 回退不再指向个人目录
- ui/README.md 指向本机绝对路径的 markdown 死链改成相对链接
- 新增 check-developer-paths.sh 并接入 required 的 quality 检查,防止路径回潮
- docs/installation.md 不再写死版本号
2026-09-06 12:05:06 +09:00
..
2026-06-11 15:55:59 +08:00
2026-06-11 15:55:59 +08:00
2026-06-11 15:55:59 +08:00
2026-06-11 15:55:59 +08:00
2026-06-11 15:55:59 +08:00
2026-06-11 15:55:59 +08:00
2026-06-11 15:55:59 +08:00
2026-06-11 16:01:11 +08:00
2026-06-11 15:55:59 +08:00

TsfEditControl

一个基于 Win32 TSF 的编辑控件实验工程,使用 Direct2D / DirectWrite 负责绘制。项目里把文本输入、组合串显示、候选框定位和基础编辑逻辑放进了控件本身,demo 只是一个最小宿主。

功能

  • Direct2D / DirectWrite 文本渲染
  • TSF 输入法接入
  • preedit / display attribute 绘制
  • 候选框位置上报
  • 软换行
  • 选区、插入点和鼠标命中
  • 独立 demo 程序

目录

  • include/TsfD2DTextBox.h:对外头文件
  • src/:控件实现和 TSF 相关代码
  • demo/TsfD2DTextBoxDemo.cpp:最小示例程序
  • CMakeLists.txt:顶层 CMake 配置
  • CMakePresets.json:VS2022 + vcpkg preset
  • vcpkg.json:依赖声明

构建

如果本机已经装好了 vcpkg,并且 preset 里的路径配置可用,可以直接执行:

cmake --preset vcpkg
cmake --build --preset debug

生成的 demo 默认位于:

build/bin/Debug/TsfEditControlDemo.exe

生成目标

  • TsfEditControl:静态库
  • TsfD2DTextBox:兼容旧命名的别名 target
  • TsfEditControlDemo:demo 可执行文件

命名说明

对外类型名暂时还是 TsfD2DTextBox,主要是为了不动现有接口。工程名和 target 已经改成了 TsfEditControl,后面如果要统一命名,再一起收口文件名、类名和 demo 名称。

脚本

scripts/ 目录提供了几个常用脚本:

  • ./scripts/configure.ps1:执行 CMake configure
  • ./scripts/build.ps1:配置并编译,默认 Debug
  • ./scripts/run-demo.ps1:配置、编译并启动 demo

示例:

./scripts/build.ps1
./scripts/build.ps1 -Configuration Release
./scripts/run-demo.ps1