FB2 / EPUB / MOBI 在 ReadEra 里的渲染优化细节
可重排格式的渲染为什么难
EPUB、FB2、MOBI 这类格式被称为"可重排格式"是因为它们的排版不是固定的——内容是结构化标记,阅读器需要根据当前设备的屏幕宽度、字号、行距等参数,重新生成一版适合当前设备的排版。
这个重新生成的过程就是渲染。不同阅读器渲染质量天差地别——很多阅读器直接"按标记原样显示",不管标记里有多少不规范。ReadEra 做了很多额外优化让渲染结果更好看。
FB2:ReadEra 的俄罗斯根
ReadEra 起源于俄语市场,FB2 是俄罗斯/东欧最常见的电子书格式。ReadEra 对 FB2 的优化做得最深入:
自动优化章节结构
很多俄语市场来源的 FB2 文件的章节标记不完整——<section> 标签层级混乱、<subtitle> 缺失、甚至整个文件只有一个根 <section>。
ReadEra 的做法:
- 扫描整个 FB2 文件的
<title>、<subtitle>、<section>标签 - 如果发现结构不完整(比如所有章节都在同一层级),按标题文本特征(长度、是否以数字开头、是否含关键字)尝试切分
- 生成更合理的目录树
西里尔字母连字符
俄语、乌克兰语、保加利亚语等使用西里尔字母的语言,连字符(hyphenation)规则非常特殊——不同于拉丁字母的英文连字符。ReadEra 内置了西里尔字母专用连字符词典,确保:
- 每行末尾的俄语单词不会被生硬截断
- 连字符位置符合俄语正字法规则
- 避免某些极长俄语单词导致行尾大片空白
这是很多西方开发者做的阅读器(Moon+、Librera)做不好的地方——他们的连字符词典只有英文。
自动从 ZIP/RAR 解压
这是 FB2 用户最常用的功能——很多俄语 FB2 资源发布时默认打成 ZIP 或 RAR。ReadEra 直接打开压缩包,无需手动解压。详见 压缩包直接读。
EPUB:标准 + 适度修正
EPUB 是国际主流电子书格式,结构规范。ReadEra 对 EPUB 的策略是"尊重标准 + 修正常见不规范":
自动识别目录
EPUB 规范要求目录放在 .ncx 或 .nav.xhtml 里。ReadEra 会:
- 直接读取书里自带的目录结构
- 检查目录层级是否合理(有些 EPUB 的目录只有一层,不管原文有几章节)
- 如果目录过于扁平,扫描
<h1>到<h6>标题标记尝试重建层级
修正嵌套问题
部分旧 EPUB 有标题嵌套错误(<h3> 出现在 <h1> 前面)。ReadEra 不会按错误嵌套生成目录——它按标题实际出现的顺序和深度重新整理。
支持 EPUB2 和 EPUB3
两个版本都支持。EPUB3 的 HTML5 嵌入内容、嵌入字体、媒体片段(音频/视频)都能正常渲染。
MOBI / AZW3:Kindle 体系兼容
Amazon Kindle 用的格式,ReadEra 都能读:
| 格式 | Kindle 版本 | ReadEra 支持 |
|---|---|---|
| AZW3 | Kindle Paperwhite/KOBO 之后的 Kindle | ✓ |
| MOBI | 旧版 Kindle / Paperwhite | ✓ |
| AZW | 第一代 Kindle | ✗ |
ReadEra 对 MOBI/AZW3 的处理相对朴素——它们的结构比 EPUB 更封闭(部分字段是 Kindle 私有),ReadEra 能解析但不会做太多自动优化(因为不知道哪些字段是 Kindle 私有的)。
ReadEra 渲染器的"适度哲学"
ReadEra 的渲染策略可以总结为:
- 尊重原标记优先:书里有的标题、段落、引用、代码块都按原标记显示
- 修正常见不规范其次:自动生成目录(DOC/DOCX)、优化 FB2 章节结构、修正 EPUB 层级
- 智能排版细节:西里尔字母连字符、中文段落间距、英文两端对齐 + 连字符开关
- 不做过度干扰:不自动改写段落、不重排顺序、不替换图片——保持原书内容不变
这个策略和部分"激进优化"的阅读器不同——ReadEra 追求的是"看起来和原书设计者想要的差不多,但在手机屏上更舒服",而不是"按阅读器自己的逻辑重新设计整本书"。
和系统字体的关系
渲染的字体效果完全取决于你选的字体 + 字体本身的字重和字形。ReadEra 在渲染时:
- 中文:按你选的系统字体渲染(思源黑体/苹方等)
- 英文:同一份系统字体通常也有拉丁字母字形
- 混合排版:中英混排时自动切换字体(有些字体只支持中文或只支持英文,ReadEra 会自动选下一个可用的)
- Premium 自定义字体:如果你上传了自己的 TTF/OTF,用它替换系统字体
具体字体设置见 字体与排版细节。