Greasy Fork is available in English.

“搞定”CJK!

中文字体和标点设定及修正脚本

目前为 2016-07-02 提交的版本。查看 最新版本

作者
stecue
评分
0 0 0
版本
1.1.0
创建于
2016-05-19
更新于
2016-07-02
许可证
GPLv3
适用于
所有网站

FixCJK!

全功能、跨平台的中英文网页字体设定/调整以及中文网页排版修正/美化脚本,“搞定”CJK!

简介

FixCJK! 是为 Gecko​/​Webkit​/​Blink 内核浏览器编写的用户脚本,适用平台包括但不限于:Firefox​/​Icecat​/​Chrome​/​Chromium​/​Opera,以及各种采用 Webkit​/​Blink 内核的“国产”浏览器。主要功能为:

  1. 强力字体设置。忽略浏览器和系统设置,直接强力设定映射为“无衬线(sans-serif)”和“有衬线(serif)”的实际字体列表。
  2. 替换中易宋体为矢量字体。
  3. 将中英文混排中错误使用了中易宋体的英文部分设置为使用单独的拉丁字体。默认是 Ubuntu Mono(其字符宽度正好是中易宋体的一半并自带良好的 hinting 信息)。
  4. 对于矢量粗体,将使用字体文件提供的真粗体而不是合成伪粗体(最初目的是绕过 Linux 版 Chrome​/​Chromium 的这个 bug)。
  5. 设定中文全角标点字体。对于弯引号,根据上下文自动识别并设定为全角字体。
  6. 中文全角标点压缩。弥补中文字体标点不自带 kerning 信息的普遍设计缺陷,使中文网页排版更符合印刷惯例并贴近国家标准。
  7. 自动空格:中英文之间自动加空格,类似于这个扩展。考虑到大多数人的习惯,自动加空格仅在“双击”之后触发。

其中功能 1-47 对所有浏览器的所有版本均有效;功能 5-6 只保证在最新 Gecko 和 Webkit/Blink 内核上正常工作。

用法

脚本安装

较新的浏览器都需要附加组件来安装和管理用户脚本。如果您是 Firefox 用户,请先安装 Greasemonkey;Chrome​/​Chromium 用户,请先安装 Tampermonkey;Opera 用户也请安装 Tampermonkey。其他浏览器用户请参考相应的文档安装适当的附加组件或者插件。之后,请到 Greasy Fork 或者 OpenUserJS 网站安装本脚本的最新稳定版。如果您喜欢超前体验胜过稳定,或者有意帮忙测试,也可以到GitHub 上的项目主页获取最新开发分支版本

字体设置

推荐下载安装 Noto Sans CJK SC 字体和 Ubuntu Mono 字体。默认设置覆盖了大多数 Windows 和 Linux 设备。如果需要自定义设置(包括中英文字体以及修正级别),请直接修改脚本中从CJKdefaultFixPunct的定义。注意:自动更新可能会重置你对脚本做的修改。

用户控制

在页面初次加载完成时,本脚本自动进行字体与标点的调整。对于初始加载时没有载入的动态内容以及“自动空格”,可以通过以下三种层次的键盘/鼠标操作控制脚本的页面修正行为。这三种操作的效果是逐层递进的。后面一个层次的鼠标操作也将触发之前一个层次的全部页面修正动作。

滚动换字体:用键盘或鼠标滚动页面时,将快速检查新出现的元素并设定、替换相应的字体。

单击修标点:在网页内任意一点单击,脚本将重新检查所有的网页元素并进行中文引号识别及全角标点压缩。重新检查允许最小间隔时间默认为 1 到 2 秒。间隔时间过短的连续点击将被忽略。

双击加空格:中英文之间自动加空格,已有空格的不再添加额外空格。

长击强力检:(慎用)长按鼠标左键(>1.5秒)再松开后,将忽略一切内建的定时器,强力检查、修正所有可疑元素。对于页面元素超多的网页,执行此操作可能会花费很长时间。一般来说,Windows平台上的Chrome​/​Opera最快、耗时最少,Firefox则慢一些。某些Linux发行版中的Firefox可能会尤其慢,请务必慎用此功能!

已知问题

  1. 由于任何页面元素都可能存在需要修正的文本,脚本需要遍历所有元素。尽管作者一直在优化脚本算法,执行时间仍可能过长。为了尽量少影响网页加载时间,脚本内置了定时机制;超时自动退出运行。所以字体和标点修正效果可能和机器配置以及浏览器有关。按F12并选择控制台(或 console)可查看脚本执行日志信息。
  2. 由于脚本注入位置的差异,一些看起来并非动态生成的网页元素(比如本项目在 GitHub 上的中文 Readme 文件)在页面载入完成时也可能尚未被修正。此时一般只需单击网页内的任意一点(包含动态效果或者链接的元素除外)即可修正该网页。

意见反馈

任何意见或建议,请 Email、提 issue 或者在知乎私信@猫立刻