为 Kindle 版微信读书替换衬线字体

date
Dec 24, 2022
slug
replace-weread-font-with-serif-for-kindle
status
Published
summary
我经常在微信读书读大部头,但是它的 Kindle 版本只能使用无衬线字体,总觉得差了点意思,于是就动了改造的念头。使用到了 nginx 反向代理技术和 sub_filter 内容替换模块。
tags
Engineering
Reading
type
Post
auth

起因

我经常在微信读书读大部头,但是它的 Kindle 版本只能使用无衬线字体,总觉得差了点意思,于是就动了改造的念头。

改造效果

notion image

实现方案

简单来说就是自己通过 nginx 的反向代理能力,修改微信读书的样式,让字体成为 Kindle 内置的衬线字体。
  • 应用的 CSS 样式:
    • font-weight: 500;
      font-family: Baskerville, serif, STSong !important
  • 前置条件:
    • 自有域名
    • 安装了 nginx 的服务器一台
  • 交互如下:
notion image

具体步骤

一、编译 nginx 使其支持替换模块

  1. 查询系统安装的 nginx 版本和编译参数,通过nginx -V 可以看到我的版本和参数
  1. 下载对应的 nginx 版本,我的是 1.18.0 所以下载这个文件:
    1. wget http://nginx.org/download/nginx-1.18.0.tar.gz
  1. 解压 nginx 文件并进入解压文件夹,也是和你的版本号有关:
    1. tar -xavf nginx-1.18.0.tar.gz
      cd nginx-1.18.0
  1. 克隆模块代码仓库:
    1. git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module
  1. 编译并安装,只需要在原有编译参数后添加 --add-module=./ngx_http_substitutions_filter_module 即可:
  1. (不一定需要)如果这时候报错,说明部分需要的库你没有安装,安装即可,我额外安装了
    1. 确定 nginx 位置,使用whereis nginx 即可看到,
      1. 我的在 /usr/sbin/nginx 这个位置
    1. 替换 nginx 执行文件,
      1. cp ./objs/nginx /usr/sbin/nginx

    二、设置域名和申请证书

    为了快速输入我们的地址,需要绑定域名:
    • r.yourdomain.com 为主要访问服务器,指向你的服务器地址;
    • read.yourdomain.comres.yourdomain.comwereadsource.yourdomain.com 为静态资源服务器,指向你的服务器地址;
    证书的获取参考其他教程,不做赘述,建议使用 acme.sh,省心。

    三、Nginx 新增站点配置

    在 Nginx 配置文件目录(默认位于 /etc/nginx/sites-enabled/ )新增 read.conf 微信阅读反代配置文件,文件内容如下(需自行替换 yourdomain.com 域名和对应证书路径):

    四、重启 nginx

    systemctl restart nginx 配置生效,访问 r.yourdomain.com 即可。


    © Reynard 2021 - 2024