7.5 KiB
WXRead/resources 文件说明
目录结构
resources/
├── js/
│ ├── Text/ # 文本编辑/展示相关
│ │ ├── WeReadApi.js
│ │ ├── rich_editor.js
│ │ ├── rich_display.js
│ │ ├── correctArticle.js
│ │ └── style_html.js
│ ├── Readability.js
│ ├── weread-highlighter.js
│ ├── rangy-core.js
│ ├── rangy-classapplier.js
│ ├── rangy-highlighter.js
│ ├── rangy-textrange.js
│ ├── highlight.min.js
│ ├── cssInjector.js
│ └── patch_6.2.1.4.js
├── css/
│ ├── Style/
│ │ ├── style.css
│ │ ├── preview.css
│ │ └── normalize.css
│ ├── default.css
│ ├── dark.css
│ ├── replace.css
│ ├── replaceForLatinLanguageBook.css
│ ├── replaceForMPChapter.css
│ ├── MPExtra.css
│ ├── MediaPlatform.css
│ ├── WREpubMPVideo.css
│ └── xcode.min.css
└── fonts/ # 字体文件
JS 文件
核心功能
Readability.js
Arc90 的 Readability 库 (v1.7.1),用于从网页中提取正文内容。通过正则匹配和 DOM 分析算法,从杂乱的 HTML 中识别出文章主体,过滤导航、广告、侧栏等非内容元素。是读书解析公众号文章内容的基础依赖。
weread-highlighter.js
读书的划线/高亮核心模块。依赖 Rangy 库实现以下功能:
- 初始化 Rangy 高亮器,注册
highlight(划线)、review(自己的想法)、friend-review(好友想法)、reference(想法圈划线)、tts(朗读高亮)等样式 - 监听
selectionchange事件,将选区位置信息通过wereadBridge通知原生层 - 提供
getShareAbstractText()从文章段落中提取分享摘要文本 - 字体缩放
changeFontSizeWithScale()支持 - 图片点击事件绑定和 H5 链接转换
cssInjector.js
CSS 动态注入/移除工具。提供 inject(json) 和 remove(identifier) 两个方法,通过创建/删除 <style> 元素实现运行时样式切换。
patch_6.2.1.4.js
版本补丁脚本。修改 WRAboutViewController 的 viewDidLoad,将版权信息文案中的 "rights" 和 "reserved" 首字母改为大写。
Rangy 库系列 (第三方)
rangy-core.js
Rangy 核心库 (v1.3.0, MIT License)。跨浏览器的 Range 和 Selection 操作库,提供统一的 API 处理 DOM 选区。
rangy-classapplier.js
Rangy ClassApplier 模块。对 Range 和 Selection 添加/移除/切换 CSS 类,是实现划线高亮的基础。
rangy-highlighter.js
Rangy Highlighter 模块。依赖 core 和 ClassApplier,提供更高层的文本高亮 API,支持序列化/反序列化高亮位置。
rangy-textrange.js
Rangy TextRange 模块。支持按字符/词偏移移动选区边界、文本搜索、选区保存/恢复等功能。
highlight.min.js
highlight.js 代码语法高亮库(压缩版)。用于在阅读器中高亮显示 <pre><code> 代码块。
Text 子目录
Text/WeReadApi.js
读书 WebView Bridge。定义 WeReadBridge 类,通过隐藏 iframe + 自定义 URL scheme(wereadapijs://)实现 JS 与原生层的双向通信。支持回调机制和可用功能查询。
Text/rich_editor.js
富文本编辑器核心模块。定义 RE 对象,管理编辑器 DOM 引用和编辑操作。
Text/rich_display.js
富文本展示模块。定义 RDisplay 对象,处理展示模式下的交互(书籍卡片触摸反馈、点击高亮等)。
Text/correctArticle.js
文章内容校正脚本。用于对公众号文章的 HTML 结构进行清洗和修正。
Text/style_html.js
JS Beautifier 库。HTML/JS/CSS 代码格式化工具(MIT License),用于代码块的美化显示。
CSS 文件
默认/基础样式
default.css
公众号文章的基础阅读样式。覆盖微信原生样式,定义:
- 文章区域布局(
rich_media_area_primary:padding、字号 18px、行高 30px) - 标题样式(
rich_media_title:24px/36px) - 内容区域溢出处理、blockquote 样式
- 隐藏工具栏(
rich_media_tool) - 划线/想法/高亮样式(
.highlight橙色、.review红色虚线、.friend-review灰色虚线) - 隐藏 iPad 上的 PC 二维码
- TTS 朗读高亮(
.tts蓝色背景) - 公众号图片链接禁用点击
dark.css
深色模式样式。全局覆盖为纯黑背景(rgba(0,0,0,1)),文字颜色设为灰色(rgba(180,180,182,1)),链接为蓝色,blockquote 为深色背景。适配搜狗百科和百度搜索的特殊元素。
xcode.min.css
代码语法高亮配色方案(highlight.js 的 Xcode 主题),白色背景,关键字紫色、字符串红色、注释绿色等。
内容替换样式
replace.css
EPUB 书籍的主要排版样式。定义:
- 代码块字体(Menlo/Consolas)、版权标题、图片说明文字
- 六级标题样式(
.firstTitle~.sixthTitle,1.0em~1.5em) - 首字下沉(
.ftext)、引用(.conQuot)、副标题(.subHead) - 图片垂直居中(
wr-vertical-center-style)、翻译行高 - 章节工具栏高度(
.book-chapter-tool:78px)
replaceForLatinLanguageBook.css
拉丁语系书籍的排版样式。与 replace.css 类似,但标题使用 Source Han Serif CN 字体并加粗(而非 SourceHanSerifCN-Medium normal),适配西文排版习惯。
replaceForMPChapter.css
公众号文集(小文章)的排版样式。在 replace.css 基础上增加了:
.weread-page-relate跨页关联标记.chapter-reward打赏区域(120px).chapter-tool工具栏(140px).re_bookItem书籍卡片间距img[data-image-size="large"]大图全宽.unsupported_iframe不支持控件的提示样式- 强制清除
<p>、<strong>、<span>、<section>的背景色
公众号专用样式
MPExtra.css
公众号文章的完整样式表(从微信 CSS 复制并修改)。包含:
- 微信 UI 组件样式(
.rich_media_*、.weui-*) - 小程序卡片样式(
.weapp_*) - GIF 图片播放提示
- 全局消息提示栏
- 对话框组件(
.weui-dialog) - 公众号音频播放器样式(
.audio_*,含 Retina 适配) - 被删公众号链接隐藏处理
- iPhone 横屏适配
MediaPlatform.css
公众号文章阅读的精简样式。覆盖微信原生样式中的关键属性:背景色、字号、行高、blockquote、QQ 音乐区域、分享图片等。主要用于非文集场景的公众号阅读。
WREpubMPVideo.css
腾讯视频播放器的自定义样式。完全重写视频控制器 UI:
- 自定义播放/暂停、全屏按钮图标(使用 CDN sprite 图)
- 进度条、时间显示器布局
- 隐藏广告和下载提示
- 响应式适配(iPhone 6/6P 尺寸)
Style 子目录
Style/style.css
笔记/想法的编辑和展示样式(EPUB 基准 1em=16px)。定义:
- 编辑器容器(
.re)基础样式 - 段落、标题、列表、blockquote 样式
- 书籍卡片组件(
.re_bookItem,含 Retina 边框) - 图片样式(
.re_img、.bodyPic) - QQ 表情样式
- 深色模式(
.re_Night)
Style/preview.css
想法/笔记的预览样式。与 style.css 类似但适用于阅读展示场景,字号 18px,行高 30px,使用 -apple-system 字体。
Style/normalize.css
normalize.css v3.0.2(MIT License)。标准化各浏览器的默认样式差异。