ReadViewSDK/Doc/WXRead/resources-doc.md

182 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.2MIT License。标准化各浏览器的默认样式差异。