1. 为什么Scratch 3.0的字体看着那么费劲?
不知道你有没有这种感觉,用Scratch 3.0做项目的时候,特别是屏幕分辨率高一点或者显示器尺寸小一点,界面上的字就变得特别小,密密麻麻的,看久了眼睛特别累。尤其是中文,有时候笔画多的字直接就糊成一团了,根本看不清。我自己带学生上课的时候,就经常有孩子凑到屏幕跟前,眯着眼睛找积木,体验真的很不好。
这其实不是你的错觉,而是Scratch 3.0在设计时的一个“历史遗留问题”。Scratch 1.0和2.0时代,界面相对固定,字体调节功能是内置的。但到了3.0,整个项目重构,采用了更现代化的Web技术栈(比如React),界面为了适配各种设备,大量使用了相对单位和响应式设计。初衷是好的,但在实际落地时,对于字体大小的全局把控出现了一些偏差,导致在高分屏或特定分辨率下,默认的字体尺寸显得过小。更关键的是,Scratch本身是面向全球孩子的,其字体和排版优先考虑的是字母文字(比如英文),对于结构复杂的汉字,在微小字号下的渲染效果就大打折扣,清晰度严重不足。
所以,我们今天要做的,就是给Scratch 3.0“动个小手术”,从根源上优化它的字体显示方案。这不是简单地把所有字调大,而是一套系统的、针对不同界面元素的适配方案。目标是在任何常见的屏幕分辨率下,从菜单栏到积木块,所有文字都能清晰可辨,保护视力,也提升创作效率。下面,我就把自己在实际二次开发项目中摸索出来的整套方案,毫无保留地分享给你,就算你之前没怎么接触过Scratch的源码,跟着步骤也能搞定。
2. 动手前的准备:认识Scratch 3.0的字体体系
在开始修改之前,我们得先摸清Scratch 3.0的“家底”,知道字体都藏在哪,是怎么被管理的。盲目搜索修改,效率低还容易改出问题。
Scratch 3.0的界面主要由几个核心部分构成,对应着不同的源码模块和样式定义:
- GUI (图形用户界面): 这是我们最常接触的部分,位于
scratch-gui项目中。它包含了菜单栏、舞台区、角色列表、背景库、声音库等所有主要界面元素。这里的字体样式,大多通过CSS文件(包括Sass/Scss)来定义。 - Blocks (积木系统): 这是Scratch的灵魂,但它独立在
scratch-blocks项目中。所有你看到的积木形状、颜色、以及积木上的文字,都由这个库控制。这是一个关键点,很多朋友只改了GUI的字体,发现积木上的字没变,问题就出在这里。 - VM (虚拟机): 负责运行代码,和字体关系不大,我们暂时不用管。
字体大小的定义方式也主要有两种:
- 绝对单位 (如
pt,px): 在scratch-blocks中大量使用,比如12pt。这种单位在不同设备上显示的实际物理尺寸可能不同。 - 相对单位 (如
rem,em): 在scratch-gui的现代CSS中更常见,它们相对于根元素或父元素的字体大小,更利于响应式设计,但基准值设置不合理也会导致整体偏小。
我们的优化思路是:双管齐下。既要调整 scratch-gui 中界面控件的字体基准和具体值,也要攻克 scratch-blocks 这个“堡垒”,让积木文字同步变大。同时,我们会采用一种更健壮的方式,而不是直接修改 node_modules 里的文件(那样一装依赖就没了)。
3. 攻克核心界面:scratch-gui字体优化实战
让我们先从主要的操作界面 scratch-gui 开始。我建议你先把项目克隆到本地,用 npm start 跑起来,这样一边改一边就能在浏


488

被折叠的 条评论
为什么被折叠?



