Developer 528d70fc33 fix: TOC anchor navigation - remove anchor text from parsed content
- Fix parse_blocks: after extracting anchor from \\x03..\\x04 markers,
  remove the anchor text too (was contaminating display text)
- When TOC jump occurs, clear pending_anchor to prevent saved position
  from overriding the TOC navigation on first frame
- Add tests for heading with/without anchor parsing
2026-05-22 21:03:56 +08:00
2026-05-17 22:20:50 +08:00

ePub Reader

基于 Rust + egui 的 Windows ePub 阅读器,单 exe 文件,无需额外依赖。

截图

主界面

启动页 → 选择 ePub 文件 → Kindle 风格阅读界面。

功能

  • 📂 打开 .epub 文件(原生文件对话框)
  • 📖 Kindle 风格阅读界面(顶部工具栏 + 中央正文 + 底部进度条)
  • 🖱️ 点击左右区域翻页(左 30% 上一页、右 30% 下一页)
  • ⌨️ 键盘 ← → 翻页
  • 📋 目录侧栏(可展开/收起)
  • 🔖 书签功能
  • 🔍 字体大小调节A⁺ / A⁻
  • 🌓 日间/夜间/棕褐色模式切换
  • 🎨 多种背景纹理(牛皮纸/稿纸/作文纸/自定义图片)
  • 📏 响应式分页引擎(基于 egui Galley 精确测量)
  • 🔤 字体切换(内置三款中文字体:思源黑体 / 霞鹜文楷 / 思源宋体)
  • 🔗 内容锚点定位(字体/窗口大小变化后自动恢复阅读位置)
  • 📊 底部进度条可拖动跳转
  • 💾 自动保存阅读位置
  • 📅 最近文件列表
  • ⚙️ 设置持久化settings.json

项目结构

epub-read/
├── src/
│   ├── main.rs          # 程序入口
│   ├── app.rs           # App 状态管理 + 事件循环
│   ├── book.rs          # ePub 解析 + 章节数据结构
│   ├── reader.rs        # 响应式分页引擎 + 阅读视图渲染
│   ├── theme.rs         # 主题/配色/设置/书签/阅读位置
│   ├── style.rs         # 排版样式配置(对齐/行高/缩进)
│   ├── texture.rs       # 背景纹理生成
│   ├── font.rs          # 字体注册/加载/切换
│   └── persistence.rs   # 配置文件读写
├── fonts/
│   ├── NotoSansSC-Regular.ttf         # 思源黑体(内嵌)
│   ├── LXGWWenKai-Regular.ttf         # 霞鹜文楷(运行时加载)
│   └── SourceHanSerifSC-Regular.otf   # 思源宋体(运行时加载)
├── Cargo.toml
└── .cargo/config.toml   # 静态链接配置

系统要求

  • Windows 7+
  • 无需安装任何运行时

下载

Releases 下载最新版本 epub-read.exe,直接运行。

构建

环境要求

  • MSYS2 + MinGW64
  • Rust 工具链 x86_64-pc-windows-gnu
# 在 MINGW64 终端中
cargo build --release
# 输出: target/release/epub-read.exe

静态链接说明

已配置 .cargo/config.toml 启用 +crt-static,编译出的 exe 不依赖 MinGW 运行时 DLL。 内嵌 Noto Sans SC 中文字体(思源黑体),额外两款字体(霞鹜文楷、思源宋体)放在 exe 同级 fonts/ 目录运行时加载。

技术栈

选型
GUI egui / eframe
ePub 解析 epub
文件对话框 rfd
序列化 serde / serde_json
中文字体 思源黑体 / 霞鹜文楷 / 思源宋体

开发

cargo test    # 运行测试33 个)
cargo check   # 编译检查
cargo run     # 调试运行

许可

MIT

Description
基于windows系统的epub阅读工具
Readme 55 MiB
Languages
Rust 100%