字型替換 (Font replacer)

替換網站寫死在 CSS 中的字型

目前為 2022-01-05 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Font replacer
  3. // @name:zh-CN 字体替换 (Font replacer)
  4. // @name:zh-TW 字型替換 (Font replacer)
  5. // @namespace font-replacer
  6. // @grant none
  7. // @version 1.0
  8. // @author Coxxs
  9. // @description Replace fonts hard coded by websites
  10. // @description:zh-cn 替换网站硬编码在 CSS 中的字体
  11. // @description:zh-tw 替換網站寫死在 CSS 中的字型
  12. // @include *
  13. // @license MIT
  14. // @run-at document-start
  15. // ==/UserScript==
  16. function addStyle(css) {
  17. const _insertStyle = (css) => {
  18. let style = document.createElement("style")
  19. style.innerHTML = css
  20. document.head.prepend(style)
  21. }
  22. if (document.head) {
  23. _insertStyle(css)
  24. } else {
  25. const observer = new MutationObserver((mutations, observer) => {
  26. if (!document.head) return
  27. _insertStyle(css)
  28. observer.disconnect()
  29. })
  30. observer.observe(document.documentElement, { childList: true, subtree: true })
  31. }
  32. }
  33. class Replacer {
  34. constructor() {
  35. this.css = []
  36. }
  37. add(from, to) {
  38. for (const font of to) {
  39. let extra = ''
  40. if (font.weight) {
  41. extra += `font-weight:${font.weight};`
  42. }
  43. this.css.push(`@font-face{font-family:"${from}";${extra}src:local("${font.name}")}`)}
  44. }
  45. toString() {
  46. return this.css.join('')
  47. }
  48. }
  49. let replacer = new Replacer()
  50. /**** Replace rules START *****/
  51.  
  52. const SourceHanSansSC = [
  53. { name: 'Source Han Sans SC' },
  54. ]
  55.  
  56. const SourceHanSansTC = [
  57. { name: 'Source Han Sans TC' },
  58. ]
  59.  
  60. const HarmonyOSSans = [
  61. { name: 'HarmonyOS Sans SC' },
  62. ]
  63.  
  64. const MiSans = [
  65. { name: 'MiSans Thin', weight: 100 },
  66. { name: 'MiSans ExtraLight', weight: 200 },
  67. { name: 'MiSans Light', weight: 300 },
  68. { name: 'MiSans Regular', weight: 400 },
  69. { name: 'MiSans Medium', weight: 500 },
  70. { name: 'MiSans Demibold', weight: 600 },
  71. { name: 'MiSans Bold', weight: 700 },
  72. { name: 'MiSans Heavy', weight: 900 },
  73. ]
  74.  
  75. // Simpified Chinese
  76. const FontSC = SourceHanSansSC
  77. replacer.add("宋体", FontSC)
  78. replacer.add("SimSun", FontSC)
  79. replacer.add("新宋体", FontSC)
  80. replacer.add("NSimSun", FontSC)
  81. replacer.add("微软雅黑", FontSC)
  82. replacer.add("Microsoft YaHei", FontSC)
  83. replacer.add("Microsoft YaHei UI", FontSC)
  84. replacer.add("黑体", FontSC)
  85. replacer.add("SimHei", FontSC)
  86. // replacer.add("华文中宋", FontSC)
  87. // replacer.add("STZhongsong", FontSC)
  88. // replacer.add("华文细黑", FontSC)
  89. // replacer.add("STXihei", FontSC)
  90. // replacer.add("STHeiTi", FontSC)
  91. // replacer.add("幼圆", FontSC)
  92.  
  93. // Traditional Chinese
  94. const FontTC = SourceHanSansTC
  95. replacer.add("微軟正黑體", FontTC)
  96. replacer.add("Microsoft JhengHei", FontTC)
  97. replacer.add("Microsoft JhengHei UI", FontTC)
  98. replacer.add("新細明體", FontTC)
  99. replacer.add("PMingLiU", FontTC)
  100. replacer.add("細明體", FontTC)
  101. replacer.add("MingLiU", FontTC)
  102.  
  103.  
  104. /**** Replace rules END *****/
  105. addStyle(replacer.toString())

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址