Skip to content

Commit 098be1f

Browse files
committed
feat: add support for serif fonts and text justification options in settings
1 parent 99dacf9 commit 098be1f

7 files changed

Lines changed: 103 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## [v2.0.4] - 2025-05-20
2+
3+
### ✨ 新特性
4+
5+
- **支持衬线字体**:支持调整字体为衬线字体。
6+
- **支持文本对齐**:支持选择是否左右对齐文本。
7+
18
## [v2.0.3] - 2025-05-12
29

310
### ✨ 新特性

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "wechat-reader-enhancer",
33
"type": "module",
4-
"version": "2.0.3",
4+
"version": "2.0.4",
55
"private": true,
66
"description": "为微信公众号文章生成结构化目录,提升阅读体验",
77
"scripts": {

public/injected.css

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
body.wx_wap_page.serif-fonts {
1+
body.wx_wap_page.wre-serif-fonts {
22
font-family:
33
SimSun,
44
Times New Roman,
55
Georgia,
66
Merriweather,
77
Playfair Display;
88
}
9+
body.wx_wap_page.text-justify p {
10+
text-align: justify;
11+
}

src/composable/config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export const defaultSettings: Settings = {
77
minLevel: 1, // 识别的最小标题级别
88
maxLevel: 6, // 识别的最大标题级别
99
tocPosition: `left`, // 目录位置
10+
useSerifFont: `0`, // 是否使用衬线字体
11+
justifyText: `0`, // 是否使用对齐文本
1012
isEnabled: true,
1113
serviceType: ``,
1214
endpoint: ``,

src/content/App.vue

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,26 @@ function buildToc() {
8080
// 获取文章标题
8181
articleTitle.value = getArticleTitle()
8282
}
83+
function handleSeriFont() {
84+
if (settings.value.useSerifFont === `1`) {
85+
if (!document.body.classList?.contains(`wre-serif-fonts`)) {
86+
addClass(document.body, `wre-serif-fonts`)
87+
}
88+
}
89+
else {
90+
removeClass(document.body, `wre-serif-fonts`)
91+
}
92+
}
93+
function handleJustifyText() {
94+
if (settings.value.justifyText === `1`) {
95+
if (!document.body.classList?.contains(`text-justify`)) {
96+
addClass(document.body, `text-justify`)
97+
}
98+
}
99+
else {
100+
removeClass(document.body, `text-justify`)
101+
}
102+
}
83103
/**
84104
* 初始化插件
85105
*/
@@ -97,6 +117,11 @@ async function init() {
97117
98118
// addVerticalText()
99119
initLinkifier()
120+
121+
// 是否使用衬线字体
122+
handleSeriFont()
123+
// 是否使用文本对齐
124+
handleJustifyText()
100125
console.log(`公众号阅读增强插件初始化完成`)
101126
}
102127
catch (error) {
@@ -115,6 +140,8 @@ async function update() {
115140
// 初始化滚动监听
116141
initScrollObserver(toRaw(itemList.value))
117142
createQrCode()
143+
handleSeriFont()
144+
handleJustifyText()
118145
}
119146
catch (error) {
120147
console.error(`公众号阅读增强插件更新失败:`, error)

src/popup/App.vue

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,66 @@ function showMessage(message: string, isError: boolean = false) {
184184
</div>
185185
</div>
186186

187+
<!-- 使用衬线字体 -->
188+
<label>使用衬线字体</label>
189+
<div class="flex-between">
190+
<div style="display: flex; gap: 10px; align-items: center;">
191+
<label>
192+
<input
193+
v-model="settings.useSerifFont"
194+
type="radio"
195+
value="1"
196+
aria-label=""
197+
title=""
198+
name="useSerifFont"
199+
@change="updateSettings(settings)"
200+
>
201+
202+
</label>
203+
<label>
204+
<input
205+
v-model="settings.useSerifFont"
206+
type="radio"
207+
value="0"
208+
aria-label=""
209+
title=""
210+
name="useSerifFont"
211+
@change="updateSettings(settings)"
212+
>
213+
214+
</label>
215+
</div>
216+
</div>
217+
<!-- 文本左右对齐 -->
218+
<label>文本左右对齐</label>
219+
<div class="flex-between">
220+
<div style="display: flex; gap: 10px; align-items: center;">
221+
<label>
222+
<input
223+
v-model="settings.justifyText"
224+
type="radio"
225+
value="1"
226+
aria-label=""
227+
title=""
228+
name="justifyText"
229+
@change="updateSettings(settings)"
230+
>
231+
232+
</label>
233+
<label>
234+
<input
235+
v-model="settings.justifyText"
236+
type="radio"
237+
value="0"
238+
aria-label=""
239+
title=""
240+
name="justifyText"
241+
@change="updateSettings(settings)"
242+
>
243+
244+
</label>
245+
</div>
246+
</div>
187247
<div class="buttons">
188248
<button id="resetButton" class="secondary" @click="onReset">
189249
恢复默认

src/types/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export interface Settings {
1818
minLevel: number // 识别的最小标题级别
1919
maxLevel: number // 识别的最大标题级别
2020
tocPosition: string // 目录位置 (left/right)
21+
useSerifFont: string // 是否使用衬线字体
22+
justifyText: string // 是否使用对齐文本
2123
isEnabled: boolean // 插件是否启用
2224
serviceType: string // 模型服务类型
2325
endpoint: string // 模型API地址

0 commit comments

Comments
 (0)