惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
P
Privacy International News Feed
Security Latest
Security Latest
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Last Watchdog
The Last Watchdog
S
Schneier on Security
Engineering at Meta
Engineering at Meta
Google Online Security Blog
Google Online Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Cyberwarzone
Cyberwarzone
C
Cyber Attacks, Cyber Crime and Cyber Security
G
GRAHAM CLULEY
A
Arctic Wolf
博客园 - 聂微东
I
Intezer
腾讯CDC
罗磊的独立博客
T
Tailwind CSS Blog
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
L
Lohrmann on Cybersecurity
人人都是产品经理
人人都是产品经理
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 【当耐特】
P
Palo Alto Networks Blog
Simon Willison's Weblog
Simon Willison's Weblog
W
WeLiveSecurity
N
News and Events Feed by Topic
SecWiki News
SecWiki News
S
Security Affairs
T
Threat Research - Cisco Blogs
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
T
Troy Hunt's Blog
N
News and Events Feed by Topic
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
I
InfoQ
Hacker News: Ask HN
Hacker News: Ask HN
T
The Blog of Author Tim Ferriss
Schneier on Security
Schneier on Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security

atpX

自建 S3 兼容对象存储服务 Garage 听风的歌 偶尔是深夜就好了 新玩具 AirPods Pro 3 公交车上的时间 从 WHOIS 到 RDAP 通过 WireGuard 访问 NFS 共享文件 自建音乐串流服务探索 我停止了探索 Fediverse 互联网背景噪音 我的数字生活降级 小城与确定性的墙 一只特立独行的猪 Fediverse 与社交 承认的勇气 mediaX - 轻量书影音记录管理工具 我的博客写作流程 网站新增 Misc 页面 擅长对线的鲍勃 在 Chroot 环境下使用 Rsync 同步 再见 JavaScript 当我玩博客时我在玩什么 为什么我的博客没有友链页面 小熊猫与大熊猫 (HDR 照片测试) 是时候为网站开启 HTTP/3 支持了吗 使用 AdGuard Home 搭建自用 DoH 服务 谈谈读书与消遣 2023 年终总结 西安两日游 从 AirPods「升级」到 EarPods Docker 搭建去中心化的微博客平台 Mastodon 聊聊 iPhone 15 Pro 使用感受 能否将 TOTP 二次验证存放在密码管理器里 认识史蒂夫·乔布斯 与“锤哥”克里斯·海姆斯沃斯一起养生 逃离爆炸的信息 你想活出怎样的人生 重温《龙珠》动画 为什么关闭评论 从域名注册商到 DNS 服务,找到自己的组合 从 Typecho 迁移到 Hugo 个人博客的最终归宿是静态网站吗 我选择了放弃 jQuery 关于我的小破站折腾速度优化这件事 记一次家庭网络折腾 贴一些 SmokePing 记录 我的域名邮箱选择 不存在的语录 Typecho 评论验证插件 CaptchaPlus 谈谈写字这件事 新的网站 Logo 探索 曲线解决 Typecho 图片占位抖动问题 自建 vaultwarden / bitwarden_rs 密码管理器 使用 Plausible 自建网站流量统计分析工具 如何优雅地徒手剥开火腿肠 简单的集中隔离生活记录 新玩具 M2 MacBook Air 使用 acme.sh 申请 Google 公共证书 Docker 搭建去中心化的微博客平台 Misskey 搭建 Lsky Pro 兰空图床 折腾树莓派系统的一天 我的吉卜力之旅 使用 Uptime Kuma 自建服务器/网站在线率监控 Spartan Host Review - Best Hosting & Service Support Debian 下 Nginx 配合 Fail2Ban 减少恶意扫描和攻击 升级 Typecho 到最新开发版本 v1.2.0 Linux rm 命令详解 Debian 系统安装 Docker 教程 BandwagonHost - Reliable Blog and Business VPS Hosting 使用 Isso 为 Hugo/Hexo 等静态网站添加评论功能 推荐 5 款免费开源的网站流量分析统计工具 搭建 Shynet 网站流量统计分析工具 聊聊 DDoS 攻击那些事 Hugo 使用 Fancybox 实现图片灯箱/放大功能 从 Debian 10 升级到 Debian 11 教程 使用 Umami 自建网站流量统计分析工具 Linux 一次执行多个命令的 3 种方式 Typecho 修改永久链接后旧链接 301 跳转到新链接 从不同需求推荐几家稳定可靠的 VPS 服务商 Build EchoIP service with Docker 浅谈一下这些年折腾过的 VPS 单线复用解决一根网线同时 IPTV 和宽带问题 不完全吃灰的树莓派 开发一个自己的 Telegram Bot 使用 Nginx 实现 TCP 四层反向代理 画画真难 我读村上春树 使用 acme.sh 自动签发和更新证书 卡拉马佐夫式悲剧 安装 File Browser 轻量网盘工具 新玩具树莓派到手 Linux 定时自动备份数据到 OneDrive/Google Drive 记一次服务器崩溃 使用 rsync 同步文件 短信的消失 幻灭的艺术家 新玩具戴尔 S2721DGF 开箱 蝴蝶 用 Docker 整合 SeafilePro 搭建私人云盘 搭建自己的 kms 服务器
如何提高用户网页阅读体验
ATP · 2023-03-09 · via atpX
improving-online-reading-experience

如何提高网页中文字的阅读体验,这是可以写一本书的问题,仅仅是粗略的搜索一番,也是众说纷纭。我倒认为这是一件很主观的事,即使是同样的排版设置,在不同的设备,不同的系统甚至不同的浏览器中表现都不一样,也可以说在网页设计中排版是极其自由的,加上每个读者阅读喜好不同,关于如何提高用户阅读体验这件事,自然没有统一的标准。

对于自建网站,尤其是博客网站来说,如何排版完全取决于站长,最不济的情况下自己看着舒服就行。但我认为网页作为表达你想法的媒介,让看的人有一个过得去的阅读体验其实是件很重要的事。

这里推荐一下 B 站 UP 主 oooooohmygosh 的视频合集——有趣的设计,非常生动形象,特别是其中讲文字排版的几期视频,应该会对你有所帮助。引用一段他在 几件小事,快速拯救你的排版 这期视频中的话:

也许你并不是一个平面设计师,也许你只是撰写一个博文,或者只是发布一条朋友圈。但你也应该或多或少从读者的体验来思考,优化你的排版毕竟你并不只是自己看,而是想要别人来读,你为此付出的这些努力,都是所谓设计的一部分。

具体该如何设置,我没有经过专业学习,不能道出一二。只能狭隘的说说经过一些初步认识和学习后,在自己博客字体选择与正文排版上的一些选择与取舍,也谈不上抛砖引玉,只是主观感受,仅供参考。

* 以下内容默认讨论的是电脑网页端情形,更专业的参考,推荐阅读 孔雀计划:中文字体排印的思路

字体选择

其实这几年也研究过很多次关于网站字体的选择,尝试了很多方案,但都不尽人意。同时这也是一个被很多博友反复研究过的事情了,例如:

这里不再重复啰嗦各个字体的区别,哪个字体更好看之类的问题,你需要做的是选出几个自己喜欢的字体,在考虑到对网页加载速度造成的影响、多数读者的观感等因素之后,进行对比取舍。

衬线字体与非衬线字体

就个人的感受来说,衬线字体是更加好看的,特别是中文衬线字体看起来相当地优雅。不过考虑到电子屏幕上特别是低分屏上,需要有所妥协,一个直观的感受是:

- 电子屏上非衬线字体阅读会更加轻松,较小的字体也能清晰的辨别,对设备的显示要求也更低。

- 在纸质或者墨水屏上衬线字体阅读会更加舒适,甚至对于小说这一类书籍,衬线字体会让我更容易读下去。🧐

字体家族

分为西文字体和中文字体的选择。

先说说西文字体。在尝试 Inter 字体之前,我是坚定的 Open Sans 爱好者,也一直用了很多年,但在用过 Inter 之后就更换阵营了,Inter 适配性更广,观感也更加自然,唯一的缺点也是不少字体的通病,大写的 i (I) 和小写的 l (L) 不分 (Il)。

Opan Sans vs Inter
Open Sans & Inter

还有一个小问题是,Inter 字符集比较全,官方提供的字体文件比较大,单个字重的 woff2 文件大小在 100kb 左右,网上没找到只包含拉丁字符的精简版本,之后想到使用 Google Fonts,Google Fonts 有国内节点(谷翔),大多数地区速度都很快,但不幸的是我以前碰到过几次抽风,加上国内环境的不确定性,所以考虑换一个方案。后来用了一段时间 360 奇舞团维护的免费 CDN 服务 75CDN,提供了 Google Fonts 的本地 CDN,速度很快,体验很棒,但 Inter 字体目前只有常规字重,略显可惜。

然后又开始自己反代谷歌字体使用,但体验不尽人意,提前高优先级加载会阻塞网页加载,异步加载使用 font-display: swap 属性也会加载后重新渲染网页造成明显的 CLS 问题。在我多次考虑要不要放弃使用 Inter 字体转而直接用系统自带的字体时,偶然发现了一个提供谷歌字体本地化服务的网站 google webfonts helper,可以非常方便的下载 Web Fonts,单个字重的 woff2 文件大小只有 25kb 左右,通过使用 preload 预加载几乎不会对网页造成 CLS 影响。

再来谈中文字体。考虑到中文字体的体积,即使使用一些字体工具只提取常用字符来进行精简,仍然不小,本地化几乎不考虑。其实中文如果用 Google Fonts 的话是不错的选择,按需加载,在有国内 CDN 的情况下体验很不错,不过我最后还是更倾向于从系统自带字体中选。

Mac OS 上几乎不用担心,默认的苹方效果相当不错。Linux 上不少发行版也内置了不错的中文字体,而且考虑到 Linux 用户大概率会自己装字体,问题也不大。到了 Windows 上就有些为难了,默认的微软雅黑只能说中规中矩,但也能用。所以有相当一段时间我的中文字体设置如下:

font-family: 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;

最近喜欢上了设置一些奇奇怪怪的子重,如 Medium, SemiBlod 等,Windows 上中文字体多字重的缺失对我来说是个不小的问题,而且一旦配合上西文字体,即使同样的字重放在一起也会粗细不均。

经过漫长的探索与尝试,我放弃了治疗,最后决定将选择还给用户,直接使用用户的系统默认字体,不过西文字体我还是再坚持一下 Inter。由此我的网页字体最终设置如下:

font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;

Updated 2024-02-19:

最近发现了一个关于是否使用 system-ui争议,简单来说就是在 Windows 中文系统(特别是旧版本)中,使用 system-ui 可能会出现非预期的显示效果,当然 system-ui 本身没有任何问题,只是某些情况下 Windows 系统的默认字体会比较抽象。如果你想确保在极端环境中网页字体也能呈现出你想表达的效果,可以考虑手动指定字体。

字号

随着高分屏的普及,文字变得更加“高清”,同时也变小了。

字号的选择首先要看单位,常用的单位有 px, em, rem, % 等,我更倾向于使用 px,似乎略显老套,不过更加稳定可控。目前 Chrome 以及绝大数多浏览器默认字体大小为 16px。但不知道大家有没有注意,现在很多国外网站的默认字体都越来越大,例如 Github Blog 为 18px,Medium 为 20px,还有一些网站如 Google Web Dev 是根据当前窗口大小动态设置的,font-size: clamp(1rem, 0.96rem + 0.18vw, 1.125rem); 当然英文和中文不能一概而论,也不是说字号小就不对,如果排版适当反而会有一种精致感,但我更倾向于稍微大一些,读起来会更加轻松。

考虑到目前使用 24 寸 1080P(92 ppi)显示器的用户仍占主流,而 4K、5K 等高分屏用户也大概率会开启缩放,于是我将网页的字体设置为了 18px,但最后还是取决于你网站的内容和风格,只要整体协调,都是好的选择。

* 下文排版讨论默认为 18px 字体情况下

排版设置

一旦谈到页面排版就会比较复杂了,但对于博客文章来说并不会涉及到过多,只需要考虑一些简单的页面宽度、间距以及书写规范即可。

正文宽度

正文宽度会直接影响当前文段内容的信息量,但如果不加以控制,每次读到行尾进行行间跳转开始找下一行时就会不太轻松,在大屏幕特别是带鱼屏上甚至会频繁的转头才行提前治疗颈椎病,当然,一些专业性的文章自然不可避免。我认为在 24 寸 1080P 分辨率下,对于普通文字内容来说一个舒适的阅读宽度在 640px ~ 800px 区间(也和字体大小有关),随着分辨率的增加可以适当增加正文宽度。

正文宽度换一个名字叫行长,一般情况下建议一行的行长为文字尺寸的整数倍,各行的位置尽可能头尾对齐。多数中文网站会使用两端对齐,确实看起来会更加舒适,不过我个人更加喜欢参差不齐的感觉,没有指定对齐方式,同时在中英文夹杂的情况下能避免很多问题。

段距与行距

字间距一般情况下不用调整,字体在设计的时候设计师就已经进行了精细的调整,绝大多数情况下已经是最优的显示效果了,因此主要关注段距与行距。

行间距作为一个影响排版的重要因素,过大或过小都会导致阅读体验下降。西文的行间距一般是 1.2 倍左右,中文在 1.5 ~ 2 倍之间体验会比较好。

段距的话按网上推荐的说法是取一个空行的高度(行高 + 行间距)或者为行间距的 1.25 倍。在以文字为主的网页中,如果参照我设置的 18px 字体,1.8 行间距,段距设置在 25px ~ 30px 之间是不错的选择。

网页阅读不只有文字,常常还有多级标题,图片和代码块这些,它们的行距可以和文字一致或者稍微高一些用以突出,这个就看个人的喜好了。

中英文混排

中英文混排是一个老生常谈的问题,不过据我观察,不少博主并没有特别在意这件事,Github 上有一个比较热门的中文文案排版指北,这里也简单谈谈中英文混排要不要加空格的问题。

虽然里面在中西文之间添加空格只是一个折中的办法,但确实能在一定程度上提高阅读体验。不过也有部分朋友反对这种做法,在 v2ex 上也是个月经话题。显然,从本文就可以看出我是属于支持的那一派,因为实在不喜欢中英文挤在一坨。但也确实会在某些情况下出现排版问题,如下图中谷歌搜索页面会去掉前一个中英文之间的空格。

mixed-typeface
Google 贴心的去掉了前面的空格。

客观来看,归根结底还是一个习惯问题,我是认为如果大多数人都认为加上阅读起来会比较舒服,那加上也无妨,而不是纠结这件事应该是交给渲染器去做(例如 iOS 和 Microsoft Word 中会自动留空)的,自己该不该做。虽然不优雅,也更不应该去推崇,不加上没毛病,加上也只是在当前的 Web 环境下的无奈之举。