Windows 11 字体渲染折腾个底掉

更新了 Windows 11 ,在 Intel 12 大小核的调度下,系统运行极其稳定、平滑。

唯 x 让人不满意的有几点:

  1. 字体渲染,丧心病狂的比 Win 10 还拉跨。极端锐化,看得我老眼昏花,看着屏幕完全无法对焦。
  2. 任务栏无法选择不合并,必须借用第三方工具,如:StartAllBack
  3. 右键菜单,设计简化其实挺好的,原有的菜单功能(如 7zip 解压),必须二层菜单,非常麻烦,可以参考:Windows11恢复Windows10右键菜单样式

2-3 都有解决方案(2 要掏钱,所以就勉强忍耐了,毕竟用了那么久 OSX),唯独 1 这字体,真的看着巨难受,实在无法忍。

本文针对 1 字体渲染的问题,有以下的折腾优化方案,操作有两步:

  1. 安装 mactype
  2. Chrome/Edge 安装 Tampermonkey 或 Violentmonkey,添加如下脚本:

以下脚本源自:https://n2o.io/go?page=userstyles

原安装脚本:https://greasyfork.org/zh-CN/scripts/419362-%E5%85%A8%E5%B1%80%E6%80%9D%E6%BA%90%E9%BB%91%E4%BD%93

// ==UserScript==
// @name 全局思源黑体
// @namespace franciszhao
// @version 2.2.9-alpha
// @description 一款使用 Adobe 品牌字体替换网页原有字体的用户样式表,为你呈现更统一美观的页面风格。
// @author Francis Zhao <[email protected]>
// @homepageURL https://n2o.io/go?page=userstyles
// @supportURL https://n2o.io/go?page=userstyles
// @license MIT
// @grant GM_addStyle
// @run-at document-end
// @include *
// ==/UserScript==
(
  () => {
    (
      function () {
        'use strict';
        var u = `html {
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
  text-rendering: optimizeLegibility !important;
}

body, p {
  font-family: \${rootFont} !important;
  font-weight: 400 !important;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Roboto Condensed", \${rootFont} !important;
  font-weight: 500 !important;
}

strong, b, th {
  font-family: "Roboto Condensed", \${rootFont} !important;
  font-weight: 500 !important;
}

button,
input,
keygen,
optgroup,
select,
textarea {
  font-family: \${rootFont} !important;
}

code,
kbd,
pre,
samp {
  font-family: \${monoFont} !important;
}
`, o;
        (
          function (t) {
            t[t.default = 0] = 'default', t[t.monospace = 1] = 'monospace';
          }
        )(o || (
          o = {}
        ));
        const m = '"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", emoji',
              r = (t = 0) => {
                switch (t) {
                  case 1:
                    return `monospace, ${m}`;
                }
                return `system-ui, -apple-system, sans-serif, ${m}`;
              },
              f = (t, n = 0) => t == null ? r(n) : Array.isArray(t) ? [
                ...t.filter(Boolean).map(e => `"${e}"`),
                r(n),
              ].filter(Boolean).join(',') : typeof t != 'string' || t.trim() === '' ? r(n) : [t, r(n)].join(','),
              i = {},
              h = t => t === 'monoFont' ? o.monospace : o.default,
              d = (t, n) => (
                i[t] == null && (
                  /font/i.test(t) ? i[t] = f(n, h(t)) : i[t] = n + ''
                ), i[t]
              ),
              g = (t, n, e) => t.replace(/\${([^{}]+)}/gm, (c, a) => d(a, n[a] || null)) + `
` + e;
        (
          (t, n, e, c, a) => {
            if (t == null || t.getElementById(e)) return;
            const p = () => {
              try {
                const s = g(u, c, a), l = t.createElement('style');
                l.setAttribute('id', e), l.appendChild(t.createTextNode(s)), (
                  t.head || t.querySelector('head') || t.documentElement
                ).appendChild(l);
              } catch (s) {
                console.warn(`inject reset styles error: ${s.message}`);
              }
            };
            n ? t.addEventListener('DOMContentLoaded', function () {
              p();
            }) : p();
          }
        )(
          document,
          // 是否使用 dom ready 注入样式
          false,
          // 注入样式 id
          `__reset_style_${new Date().valueOf()}_${Math.floor(Math.random() * 1e5)}`,
          // 字体配置
          {
            rootFont: [
              'Roboto',
              'PingFang SC',
            ],
            monoFont: [
              'JetBrains Mono',
              'PingFang SC',
            ],
          },
          // 额外注入的样式
          '',
        );
      }
    )();
  }
)();

以上脚本为本地开发后经 vite 转译,之后会将这个构建代码开源出来。

是否启用 dom ready ,有些网站存在延迟加载样式的情况,使得注入的样式被后续覆盖,使用 dom ready 能较好的解决此问题,但就会存在页面加载时一闪的情况(先按照网站原来的字体样式渲染,而后 dom ready 才注入 reset 样式)。

至此,Win 11 内的字体渲染,基本接近 OSX 的水平,上截图:

开源中国首页截图

WebStorm界面

百度截图

输入法问题

这又是一个老问题,话说 OSX 更新到 12 以后,输入法切换彻底进入 Win 8-10 的恐怖年代。新版本增加了一个地球仪键来切换输入法,又摈弃了 Caps lock 键,这就和搜狗输入法的配置又存在冲突了。

而且以前可以删除掉默认的英文,只保留一种输入法。12 又不允许了。

而且输入法/英文,各个窗口不停的在重置,简直把人逼疯了。

直接倒退回到 2014 年的水平,X你个输入法

这次换回 Win 11,输入法问题有了新的解决办法。

  1. 不安装任何输入法,就使用系统自带的微软输入法。

  2. 修改输入法按键设置,我去掉了 <kbd>Shift</kbd> ,改为 <kbd>Ctrl + Space</kbd> ,因为很容易误触(比如输入大写,可能存在 <kbd>shift</kbd> 先按或后离开导致误触):

    修改输入法按键设置

  3. 安装 PowerToys,微软团队官方出品:

    下载 PowerToys

  4. 打开 PowerToys 的键盘管理器,添加 <kbd>Caps Lock</kbd> to <kbd>Ctrl + Space</kbd>。

    添加键映射

到此,即可轻松实现 OSX 10-11 时期 Caps Lock 切换输入法,非常简单有效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章