# DRDA 对话框来源与构建记录

参考项目：[PastelPigeon/drda_generator](https://github.com/PastelPigeon/drda_generator)，下载日期 2026-09-08，分支 master。GitHub commits API 当时不可达，因此不标注未经核实的 commit；下载文件的 SHA-256 保存在 source-sha256.json。

## 原件

`drda_generator/` 保留下载时的原始字节：

- `assets/dialogue_textures/dark/dialogue_1@3-all.png` 至 `dialogue_7@3-all.png`：1335×376 的七帧暗世界文本框，透明外缘、黑色内底、白紫双线与像素四角。
- `assets/fonts/dtm_original.otf`：Determination Mono。
- `assets/fonts/fzb_original.ttf`：FZBitmap_GBK_11X12。
- 两个 `.tres`、字体 registry、场景与绘制脚本作为排版和帧序依据。
- `License.txt` 保留仓库原始声明。

下载地址前缀为 `https://raw.githubusercontent.com/PastelPigeon/drda_generator/master/`。

## 网页适配

- 原图直接作为 CSS border-image，四边切片 64 源像素；文章页桌面显示为 32px，首页桌面为 28px，手机均为 24px。省略中央 fill，仅绘制原始边缘与四角，中央由 CSS 黑底承接，文章标题为 94% 不透明度、首页文章框为 96%；系统要求减少透明效果时恢复纯黑。中央可随标题高度延长，四角不会被拉成长条，原始 PNG 字节未修改。
- 根据场景实际使用的 DialogueTexture 脚本，每帧保持 3 个处理帧，按 60fps 换算为 50ms，七帧合计 350ms。使用 CSS 离散帧动画。网页默认静止，悬停或键盘聚焦时播放两轮；减少动效时始终停在第一帧。
- 采用无头像对话布局：白色星号与左对齐文字。不引入自拟姓名签。文本框独立放在壁纸上，下方另接浅色阅读卡片，文章统计位于卡片顶部。
- 中文以原字库 12px 栅格的 2 倍字号 24px 显示。英文和中文使用原字形，CSS 文字保持可选择和可复制。适配长文章标题，因此不固定原游戏框的宽高比，也不限制三行。桌面长标题可在全角冒号处分行；手机隐藏该分行，使用平衡换行与 Intl.Segmenter 的短中文词组分组。原生标题链接和 heading 节点不被复制，Flowers 和打印恢复其原位置。
- Latin-1 字符转换为 Determination WOFF2 子集；FZBitmap 仅保留 GB2312 字符、常用符号和全角标点，未收录字符由系统字库补足。
- 首页与文章页共用同一份七帧边框数据。首页每篇文章独立成框，即使博客园把同一天的多篇文章放在同一个 `.day` 中；标题、摘要、阅读全文、统计和封面保留原节点。Flowers 与打印下，新增外壳采用 `display: contents`，退出游戏对话框排版。
- V3.3.0 将同一份七帧资源扩展到顶部导航、博客统计、右侧栏与手机菜单按钮。常规框体使用 24px 边框，统计为 20px，44×44 手机按钮为 12px；中央采用 96% 黑底，原始纹理及角饰字节保持不变。手机关闭菜单后仅保留小按钮框；文章侧栏内部滚动，边框不随内容移走。Flowers 与打印不应用这些边框。
- PNG 未重绘。字库子集属于派生文件，放在相邻 `assets/dialogue/`。全部运行素材内嵌到发布 CSS，不依赖 GitHub 或额外 CDN 请求。

从项目根目录重新构建：

```powershell
python V3/assets/dialogue-src/build_dialogue_assets.py
```

依赖 `fonttools[woff]`。构建器以源字库与字符集的 hash 复用已生成子集，输出可重复打包。
