├── Dockerfile ├── LICENSE ├── README.md ├── css ├── replacefont-extension-bold.css └── replacefont-extension-regular.css ├── docker-compose.yml ├── fonts ├── LICENSE ├── NotoSansCJKjp-Bold-subset.woff2 ├── NotoSansCJKjp-Regular-subset.woff2 └── README.md ├── icons ├── icon-128x128.png ├── icon-16x16.png └── icon-48x48.png ├── manifest.json ├── popup ├── popup.html ├── style.css └── water.css ├── preload-fonts.js └── zip.sh /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=linux/x86_64 node:20 2 | 3 | RUN apt-get update 4 | RUN apt-get install -y locales 5 | RUN locale-gen ja_JP.UTF-8 6 | RUN localedef -f UTF-8 -i ja_JP ja_JP 7 | ENV LANG ja_JP.UTF-8 8 | ENV TZ Asia/Tokyo 9 | WORKDIR /font -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Frog 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # やっぱり Noto Sans 2 | 3 | Chrome -> https://chrome.google.com/webstore/detail/oecglhldbofcklanmhckefiflhfhabdd 4 | 5 | Firefox -> https://addons.mozilla.org/ja/firefox/addon/replace-with-noto/ 6 | 7 | ## English 8 | This is a browser extension that replaces hard-to-read fonts with Noto Sans. 9 | 10 | Fonts that be replaced: 11 | 12 | - MS Gothic 13 | - MS P Gothic 14 | - Meiryo 15 | - Yu Gothic 16 | - Yu Gothic UI 17 | - Meiryo UI 18 | - M PLUS Rounded 1c 19 | 20 | Changing the browser's default font will result in cleaner text on many more sites. 21 | 22 | [Chrome のフォントを美しい Noto Sans にする方法](https://r-40021.github.io/blog/2022-05/font) 23 | 24 | ## 日本語 25 | 26 | これは、読みづらいフォントを Noto Sans に置き換えるブラウザ拡張機能です。 27 | 28 | 置き換えられるフォント 29 | 30 | - MS ゴシック 31 | - MS Pゴシック 32 | - メイリオ 33 | - 游ゴシック 34 | - Yu Gothic UI 35 | - Meiryo UI 36 | - M PLUS Rounded 1c 37 | 38 | ブラウザのデフォルトフォントを変更すると、さらに多くのサイトで文字が綺麗になります。 39 | 40 | [Chrome のフォントを美しい Noto Sans にする方法](https://r-40021.github.io/blog/2022-05/font) 41 | 42 | ![フォントを置き換えて見やすく](https://user-images.githubusercontent.com/75155258/159868921-7dd6896a-19b0-41c9-86c3-8041ec9fe730.png) -------------------------------------------------------------------------------- /css/replacefont-extension-bold.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /* Bold */ 4 | @font-face { 5 | font-family: 'MS PGothic'; 6 | src: local('Noto Sans CJK JP Bold'), 7 | local('Noto Sans JP Bold'), 8 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 9 | local('BIZ UDPGothic'); 10 | font-weight: bold; 11 | font-display: swap; 12 | } 13 | @font-face { 14 | font-family: 'ms pgothic'; 15 | src: local('Noto Sans CJK JP Bold'), 16 | local('Noto Sans JP Bold'), 17 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 18 | local('BIZ UDPGothic'); 19 | font-weight: bold; 20 | font-display: swap; 21 | } 22 | @font-face { 23 | font-family: 'MS Pゴシック'; 24 | src: local('Noto Sans CJK JP Bold'), 25 | local('Noto Sans JP Bold'), 26 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 27 | local('BIZ UDPGothic'); 28 | font-weight: bold; 29 | font-display: swap; 30 | } 31 | @font-face { 32 | font-family: 'ms pゴシック'; 33 | src: local('Noto Sans CJK JP Bold'), 34 | local('Noto Sans JP Bold'), 35 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 36 | local('BIZ UDPGothic'); 37 | font-weight: bold; 38 | font-display: swap; 39 | } 40 | @font-face { 41 | font-family: 'MS Pゴシック'; 42 | src: local('Noto Sans CJK JP Bold'), 43 | local('Noto Sans JP Bold'), 44 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 45 | local('BIZ UDPGothic'); 46 | font-weight: bold; 47 | font-display: swap; 48 | } 49 | @font-face { 50 | font-family: 'MS Gothic'; 51 | src: local('Noto Sans CJK JP Bold'), 52 | local('Noto Sans JP Bold'), 53 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 54 | local('BIZ UDPGothic'); 55 | font-weight: bold; 56 | font-display: swap; 57 | } 58 | @font-face { 59 | font-family: 'ms gothic'; 60 | src: local('Noto Sans CJK JP Bold'), 61 | local('Noto Sans JP Bold'), 62 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 63 | local('BIZ UDPGothic'); 64 | font-weight: bold; 65 | font-display: swap; 66 | } 67 | @font-face { 68 | font-family: 'MS ゴシック'; 69 | src: local('Noto Sans CJK JP Bold'), 70 | local('Noto Sans JP Bold'), 71 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 72 | local('BIZ UDPGothic'); 73 | font-weight: bold; 74 | font-display: swap; 75 | } 76 | @font-face { 77 | font-family: 'ms ゴシック'; 78 | src: local('Noto Sans CJK JP Bold'), 79 | local('Noto Sans JP Bold'), 80 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 81 | local('BIZ UDPGothic'); 82 | font-weight: bold; 83 | font-display: swap; 84 | } 85 | @font-face { 86 | font-family: 'MS ゴシック'; 87 | src: local('Noto Sans CJK JP Bold'), 88 | local('Noto Sans JP Bold'), 89 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 90 | local('BIZ UDPGothic'); 91 | font-weight: bold; 92 | font-display: swap; 93 | } 94 | @font-face { 95 | font-family: "MS UI Gothic"; 96 | src: local('Noto Sans CJK JP Bold'), 97 | local('Noto Sans JP Bold'), 98 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 99 | local('BIZ UDPGothic'); 100 | font-weight: bold; 101 | font-display: swap; 102 | } 103 | @font-face { 104 | font-family: "メイリオ"; 105 | src: local('Noto Sans CJK JP Bold'), 106 | local('Noto Sans JP Bold'), 107 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 108 | local('BIZ UDPGothic'); 109 | font-weight: bold; 110 | font-display: swap; 111 | } 112 | @font-face { 113 | font-family: "Meiryo"; 114 | src: local('Noto Sans CJK JP Bold'), 115 | local('Noto Sans JP Bold'), 116 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 117 | local('BIZ UDPGothic'); 118 | font-weight: bold; 119 | font-display: swap; 120 | } 121 | @font-face { 122 | font-family: "YuGothic"; 123 | src: local('Noto Sans CJK JP Bold'), 124 | local('Noto Sans JP Bold'), 125 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 126 | local('BIZ UDPGothic'); 127 | font-weight: bold; 128 | font-display: swap; 129 | } 130 | @font-face { 131 | font-family: "Yu Gothic"; 132 | src: local('Noto Sans CJK JP Bold'), 133 | local('Noto Sans JP Bold'), 134 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 135 | local('BIZ UDPGothic'); 136 | font-weight: bold; 137 | font-display: swap; 138 | } 139 | @font-face { 140 | font-family: "游ゴシック"; 141 | src: local('Noto Sans CJK JP Bold'), 142 | local('Noto Sans JP Bold'), 143 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 144 | local('BIZ UDPGothic'); 145 | font-weight: bold; 146 | font-display: swap; 147 | } 148 | @font-face { 149 | font-family: "YuGothic Medium"; 150 | src: local('Noto Sans CJK JP Bold'), 151 | local('Noto Sans JP Bold'), 152 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 153 | local('BIZ UDPGothic'); 154 | font-weight: bold; 155 | font-display: swap; 156 | } 157 | @font-face { 158 | font-family: "Yu Gothic Medium"; 159 | src: local('Noto Sans CJK JP Bold'), 160 | local('Noto Sans JP Bold'), 161 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 162 | local('BIZ UDPGothic'); 163 | font-weight: bold; 164 | font-display: swap; 165 | } 166 | @font-face { 167 | font-family: "游ゴシック Medium"; 168 | src: local('Noto Sans CJK JP Bold'), 169 | local('Noto Sans JP Bold'), 170 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 171 | local('BIZ UDPGothic'); 172 | font-weight: bold; 173 | font-display: swap; 174 | } 175 | @font-face { 176 | font-family: "Yu Gothic UI"; 177 | src: local('Noto Sans CJK JP Bold'), 178 | local('Noto Sans JP Bold'), 179 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 180 | local('BIZ UDPGothic'); 181 | font-weight: bold; 182 | font-display: swap; 183 | } 184 | @font-face { 185 | font-family: "Meiryo UI"; 186 | src: local('Noto Sans CJK JP Bold'), 187 | local('Noto Sans JP Bold'), 188 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 189 | local('BIZ UDPGothic'); 190 | font-weight: bold; 191 | font-display: swap; 192 | } 193 | @font-face { 194 | font-family: "M PLUS Rounded 1c"; 195 | src: local('Noto Sans CJK JP Bold'), 196 | local('Noto Sans JP Bold'), 197 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 198 | local('BIZ UDPGothic'); 199 | font-weight: bold; 200 | font-display: swap; 201 | } 202 | @font-face { 203 | font-family: "Malgun Gothic"; 204 | src: local('Noto Sans CJK JP Bold'), 205 | local('Noto Sans JP Bold'), 206 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 207 | local('BIZ UDPGothic'); 208 | font-weight: bold; 209 | font-display: swap; 210 | } 211 | @font-face { 212 | font-family: "Arial Unicode MS"; 213 | src: local('Noto Sans CJK JP Bold'), 214 | local('Noto Sans JP Bold'), 215 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'), 216 | local('BIZ UDPGothic'); 217 | font-weight: bold; 218 | font-display: swap; 219 | } -------------------------------------------------------------------------------- /css/replacefont-extension-regular.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /* Regular */ 4 | @font-face { 5 | font-family: 'MS PGothic'; 6 | src: local('Noto Sans CJK JP'), 7 | local('Noto Sans JP'), 8 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 9 | local('BIZ UDPGothic'); 10 | font-display: swap; 11 | } 12 | @font-face { 13 | font-family: 'ms pgothic'; 14 | src: local('Noto Sans CJK JP'), 15 | local('Noto Sans JP'), 16 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 17 | local('BIZ UDPGothic'); 18 | font-display: swap; 19 | } 20 | @font-face { 21 | font-family: 'MS Pゴシック'; 22 | src: local('Noto Sans CJK JP'), 23 | local('Noto Sans JP'), 24 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 25 | local('BIZ UDPGothic'); 26 | font-display: swap; 27 | } 28 | @font-face { 29 | font-family: 'ms pゴシック'; 30 | src: local('Noto Sans CJK JP'), 31 | local('Noto Sans JP'), 32 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 33 | local('BIZ UDPGothic'); 34 | font-display: swap; 35 | } 36 | @font-face { 37 | font-family: 'MS Pゴシック'; 38 | src: local('Noto Sans CJK JP'), 39 | local('Noto Sans JP'), 40 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 41 | local('BIZ UDPGothic'); 42 | font-display: swap; 43 | } 44 | @font-face { 45 | font-family: 'MS Gothic'; 46 | src: local('Noto Sans CJK JP'), 47 | local('Noto Sans JP'), 48 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 49 | local('BIZ UDPGothic'); 50 | font-display: swap; 51 | } 52 | @font-face { 53 | font-family: 'ms gothic'; 54 | src: local('Noto Sans CJK JP'), 55 | local('Noto Sans JP'), 56 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 57 | local('BIZ UDPGothic'); 58 | font-display: swap; 59 | } 60 | @font-face { 61 | font-family: 'MS ゴシック'; 62 | src: local('Noto Sans CJK JP'), 63 | local('Noto Sans JP'), 64 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 65 | local('BIZ UDPGothic'); 66 | font-display: swap; 67 | } 68 | @font-face { 69 | font-family: 'ms ゴシック'; 70 | src: local('Noto Sans CJK JP'), 71 | local('Noto Sans JP'), 72 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 73 | local('BIZ UDPGothic'); 74 | font-display: swap; 75 | } 76 | @font-face { 77 | font-family: 'MS ゴシック'; 78 | src: local('Noto Sans CJK JP'), 79 | local('Noto Sans JP'), 80 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 81 | local('BIZ UDPGothic'); 82 | font-display: swap; 83 | } 84 | @font-face { 85 | font-family: "MS UI Gothic"; 86 | src: local('Noto Sans CJK JP'), 87 | local('Noto Sans JP'), 88 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 89 | local('BIZ UDPGothic'); 90 | font-display: swap; 91 | } 92 | @font-face { 93 | font-family: "メイリオ"; 94 | src: local('Noto Sans CJK JP'), 95 | local('Noto Sans JP'), 96 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 97 | local('BIZ UDPGothic'); 98 | font-display: swap; 99 | } 100 | @font-face { 101 | font-family: "Meiryo"; 102 | src: local('Noto Sans CJK JP'), 103 | local('Noto Sans JP'), 104 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 105 | local('BIZ UDPGothic'); 106 | font-display: swap; 107 | } 108 | @font-face { 109 | font-family: "YuGothic"; 110 | src: local('Noto Sans CJK JP'), 111 | local('Noto Sans JP'), 112 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 113 | local('BIZ UDPGothic'); 114 | font-display: swap; 115 | } 116 | @font-face { 117 | font-family: "Yu Gothic"; 118 | src: local('Noto Sans CJK JP'), 119 | local('Noto Sans JP'), 120 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 121 | local('BIZ UDPGothic'); 122 | font-display: swap; 123 | } 124 | @font-face { 125 | font-family: "游ゴシック"; 126 | src: local('Noto Sans CJK JP'), 127 | local('Noto Sans JP'), 128 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 129 | local('BIZ UDPGothic'); 130 | font-display: swap; 131 | } 132 | @font-face { 133 | font-family: "YuGothic Medium"; 134 | src: local('Noto Sans CJK JP'), 135 | local('Noto Sans JP'), 136 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 137 | local('BIZ UDPGothic'); 138 | font-display: swap; 139 | } 140 | @font-face { 141 | font-family: "Yu Gothic Medium"; 142 | src: local('Noto Sans CJK JP'), 143 | local('Noto Sans JP'), 144 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 145 | local('BIZ UDPGothic'); 146 | font-display: swap; 147 | } 148 | @font-face { 149 | font-family: "游ゴシック Medium"; 150 | src: local('Noto Sans CJK JP'), 151 | local('Noto Sans JP'), 152 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 153 | local('BIZ UDPGothic'); 154 | font-display: swap; 155 | } 156 | @font-face { 157 | font-family: "Yu Gothic UI"; 158 | src: local('Noto Sans CJK JP'), 159 | local('Noto Sans JP'), 160 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 161 | local('BIZ UDPGothic'); 162 | font-display: swap; 163 | } 164 | @font-face { 165 | font-family: "Meiryo UI"; 166 | src: local('Noto Sans CJK JP'), 167 | local('Noto Sans JP'), 168 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 169 | local('BIZ UDPGothic'); 170 | font-display: swap; 171 | } 172 | @font-face { 173 | font-family: "M PLUS Rounded 1c"; 174 | src: local('Noto Sans CJK JP'), 175 | local('Noto Sans JP'), 176 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 177 | local('BIZ UDPGothic'); 178 | font-display: swap; 179 | } 180 | @font-face { 181 | font-family: "Malgun Gothic"; 182 | src: local('Noto Sans CJK JP'), 183 | local('Noto Sans JP'), 184 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 185 | local('BIZ UDPGothic'); 186 | font-display: swap; 187 | } 188 | @font-face { 189 | font-family: "Arial Unicode MS"; 190 | src: local('Noto Sans CJK JP'), 191 | local('Noto Sans JP'), 192 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'), 193 | local('BIZ UDPGothic'); 194 | font-display: swap; 195 | } -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | app: 4 | build: . 5 | tty: true 6 | volumes: 7 | - .:/font -------------------------------------------------------------------------------- /fonts/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2018 The Noto Project Authors (github.com/googlei18n/noto-fonts) 2 | 3 | This Font Software is licensed under the SIL Open Font License, 4 | Version 1.1. 5 | 6 | This license is copied below, and is also available with a FAQ at: 7 | http://scripts.sil.org/OFL 8 | 9 | ----------------------------------------------------------- 10 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 11 | ----------------------------------------------------------- 12 | 13 | PREAMBLE 14 | The goals of the Open Font License (OFL) are to stimulate worldwide 15 | development of collaborative font projects, to support the font 16 | creation efforts of academic and linguistic communities, and to 17 | provide a free and open framework in which fonts may be shared and 18 | improved in partnership with others. 19 | 20 | The OFL allows the licensed fonts to be used, studied, modified and 21 | redistributed freely as long as they are not sold by themselves. The 22 | fonts, including any derivative works, can be bundled, embedded, 23 | redistributed and/or sold with any software provided that any reserved 24 | names are not used by derivative works. The fonts and derivatives, 25 | however, cannot be released under any other type of license. The 26 | requirement for fonts to remain under this license does not apply to 27 | any document created using the fonts or their derivatives. 28 | 29 | DEFINITIONS 30 | "Font Software" refers to the set of files released by the Copyright 31 | Holder(s) under this license and clearly marked as such. This may 32 | include source files, build scripts and documentation. 33 | 34 | "Reserved Font Name" refers to any names specified as such after the 35 | copyright statement(s). 36 | 37 | "Original Version" refers to the collection of Font Software 38 | components as distributed by the Copyright Holder(s). 39 | 40 | "Modified Version" refers to any derivative made by adding to, 41 | deleting, or substituting -- in part or in whole -- any of the 42 | components of the Original Version, by changing formats or by porting 43 | the Font Software to a new environment. 44 | 45 | "Author" refers to any designer, engineer, programmer, technical 46 | writer or other person who contributed to the Font Software. 47 | 48 | PERMISSION & CONDITIONS 49 | Permission is hereby granted, free of charge, to any person obtaining 50 | a copy of the Font Software, to use, study, copy, merge, embed, 51 | modify, redistribute, and sell modified and unmodified copies of the 52 | Font Software, subject to the following conditions: 53 | 54 | 1) Neither the Font Software nor any of its individual components, in 55 | Original or Modified Versions, may be sold by itself. 56 | 57 | 2) Original or Modified Versions of the Font Software may be bundled, 58 | redistributed and/or sold with any software, provided that each copy 59 | contains the above copyright notice and this license. These can be 60 | included either as stand-alone text files, human-readable headers or 61 | in the appropriate machine-readable metadata fields within text or 62 | binary files as long as those fields can be easily viewed by the user. 63 | 64 | 3) No Modified Version of the Font Software may use the Reserved Font 65 | Name(s) unless explicit written permission is granted by the 66 | corresponding Copyright Holder. This restriction only applies to the 67 | primary font name as presented to the users. 68 | 69 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 70 | Software shall not be used to promote, endorse or advertise any 71 | Modified Version, except to acknowledge the contribution(s) of the 72 | Copyright Holder(s) and the Author(s) or with their explicit written 73 | permission. 74 | 75 | 5) The Font Software, modified or unmodified, in part or in whole, 76 | must be distributed entirely under this license, and must not be 77 | distributed under any other license. The requirement for fonts to 78 | remain under this license does not apply to any document created using 79 | the Font Software. 80 | 81 | TERMINATION 82 | This license becomes null and void if any of the above conditions are 83 | not met. 84 | 85 | DISCLAIMER 86 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 87 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 88 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 89 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 90 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 91 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 92 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 93 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 94 | OTHER DEALINGS IN THE FONT SOFTWARE. -------------------------------------------------------------------------------- /fonts/NotoSansCJKjp-Bold-subset.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r-40021/replace-font/d86b3d067cfb8e64bcba20c85e55b4f217d6493b/fonts/NotoSansCJKjp-Bold-subset.woff2 -------------------------------------------------------------------------------- /fonts/NotoSansCJKjp-Regular-subset.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r-40021/replace-font/d86b3d067cfb8e64bcba20c85e55b4f217d6493b/fonts/NotoSansCJKjp-Regular-subset.woff2 -------------------------------------------------------------------------------- /fonts/README.md: -------------------------------------------------------------------------------- 1 | # Font License (フォントのライセンス) 2 | 3 | All fonts in this directory are distributed under the SIL Open Font License 1.1. 4 | 5 | Please see the [LICENSE](./LICENSE) file for more information. 6 | 7 | このディレクトリ内にある全てのフォントは SIL Open Font License 1.1 の下で配布されています。 8 | 9 | 詳しくは、[LICENSE](./LICENSE) ファイルをご確認ください。 -------------------------------------------------------------------------------- /icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r-40021/replace-font/d86b3d067cfb8e64bcba20c85e55b4f217d6493b/icons/icon-128x128.png -------------------------------------------------------------------------------- /icons/icon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r-40021/replace-font/d86b3d067cfb8e64bcba20c85e55b4f217d6493b/icons/icon-16x16.png -------------------------------------------------------------------------------- /icons/icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r-40021/replace-font/d86b3d067cfb8e64bcba20c85e55b4f217d6493b/icons/icon-48x48.png -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "やっぱり Noto Sans", 4 | "version": "1.1.9", 5 | "description": "ウェブページ上の読みづらいフォントを、読みやすい Noto Sans に置き換えます。", 6 | "icons": { 7 | "16": "icons/icon-16x16.png", 8 | "48": "icons/icon-48x48.png", 9 | "128": "icons/icon-128x128.png" 10 | }, 11 | "action": { 12 | "default_popup": "popup/popup.html" 13 | }, 14 | "content_scripts": [ 15 | { 16 | "matches": [ 17 | "" 18 | ], 19 | "js": [ 20 | "preload-fonts.js" 21 | ], 22 | "run_at": "document_idle" 23 | } 24 | ], 25 | "web_accessible_resources": [ 26 | { 27 | "resources": [ 28 | "fonts/*.woff2", 29 | "css/*.css" 30 | ], 31 | "matches": [ 32 | "" 33 | ] 34 | } 35 | ] 36 | } -------------------------------------------------------------------------------- /popup/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |

やっぱり Noto Sans

14 |

ウェブページ上の読みづらいフォントを、読みやすい Noto Sans に置き換えます。

15 |

GitHubリリースノートお問い合わせ

16 |

標準フォントを Noto Sans に変更する方法

17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /popup/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | width: 400px; 3 | font-family: "Noto Font", sans-serif; 4 | text-align: center; 5 | padding: 1em; 6 | font-size: 16px; 7 | line-height: 1.7; 8 | -webkit-font-smoothing: subpixel-antialiased; 9 | } 10 | 11 | @font-face { 12 | font-family: 'Noto Font'; 13 | src: local('Noto Sans CJK JP'), 14 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Regular-subset.woff2') format('woff2'); 15 | font-display: swap; 16 | } 17 | 18 | @font-face { 19 | font-family: 'Noto Font'; 20 | src: local('Noto Sans CJK JP Bold'), 21 | url('chrome-extension://__MSG_@@extension_id__/fonts/NotoSansCJKjp-Bold-subset.woff2') format('woff2'); 22 | font-weight: bold; 23 | } 24 | -------------------------------------------------------------------------------- /popup/water.css: -------------------------------------------------------------------------------- 1 | /* Water.css Copyright © 2019 Kognise 2 | * Licensed under the MIT License 3 | * https://github.com/kognise/water.css/blob/master/LICENSE.md */ 4 | :root { 5 | --background-body: #fff; 6 | --background: #efefef; 7 | --background-alt: #f7f7f7; 8 | --selection: #9e9e9e; 9 | --text-main: #363636; 10 | --text-bright: #000; 11 | --text-muted: #70777f; 12 | --links: #0076d1; 13 | --focus: rgba(0, 150, 191, 0.67); 14 | --border: #dbdbdb; 15 | --code: #000; 16 | --animation-duration: 0.1s; 17 | --button-base: #d0cfcf; 18 | --button-hover: #9b9b9b; 19 | --scrollbar-thumb: #aaa; 20 | --scrollbar-thumb-hover: var(--button-hover); 21 | --form-placeholder: #949494; 22 | --form-text: #1d1d1d; 23 | --variable: #39a33c; 24 | --highlight: #ff0; 25 | --select-arrow: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='63' width='117' fill='%23161f27'%3E%3Cpath d='M115 2c-1-2-4-2-5 0L59 53 7 2a4 4 0 00-5 5l54 54 2 2 3-2 54-54c2-1 2-4 0-5z'/%3E%3C/svg%3E"); 26 | } 27 | @media (prefers-color-scheme: dark) { 28 | :root { 29 | --background-body: #202b38; 30 | --background: #161f27; 31 | --background-alt: #1a242f; 32 | --selection: #1c76c5; 33 | --text-main: #dbdbdb; 34 | --text-bright: #fff; 35 | --text-muted: #a9b1ba; 36 | --links: #41adff; 37 | --focus: rgba(0, 150, 191, 0.67); 38 | --border: #526980; 39 | --code: #ffbe85; 40 | --animation-duration: 0.1s; 41 | --button-base: #0c151c; 42 | --button-hover: #040a0f; 43 | --scrollbar-thumb: var(--button-hover); 44 | --scrollbar-thumb-hover: #000; 45 | --form-placeholder: #a9a9a9; 46 | --form-text: #fff; 47 | --variable: #d941e2; 48 | --highlight: #efdb43; 49 | --select-arrow: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='63' width='117' fill='%23efefef'%3E%3Cpath d='M115 2c-1-2-4-2-5 0L59 53 7 2a4 4 0 00-5 5l54 54 2 2 3-2 54-54c2-1 2-4 0-5z'/%3E%3C/svg%3E"); 50 | } 51 | } 52 | html { 53 | scrollbar-color: #aaa #fff; 54 | scrollbar-color: var(--scrollbar-thumb) var(--background-body); 55 | scrollbar-width: thin; 56 | } 57 | @media (prefers-color-scheme: dark) { 58 | html { 59 | scrollbar-color: #040a0f #202b38; 60 | scrollbar-color: var(--scrollbar-thumb) var(--background-body); 61 | } 62 | } 63 | body { 64 | font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, 65 | Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, 66 | Segoe UI Emoji, Apple Color Emoji, Noto Color Emoji, sans-serif; 67 | line-height: 1.4; 68 | max-width: 800px; 69 | margin: 20px auto; 70 | padding: 0 10px; 71 | word-wrap: break-word; 72 | color: #363636; 73 | color: var(--text-main); 74 | background: #fff; 75 | background: var(--background-body); 76 | text-rendering: optimizeLegibility; 77 | } 78 | @media (prefers-color-scheme: dark) { 79 | body { 80 | background: #202b38; 81 | background: var(--background-body); 82 | color: #dbdbdb; 83 | color: var(--text-main); 84 | } 85 | } 86 | ::-moz-placeholder { 87 | color: #949494; 88 | color: var(--form-placeholder); 89 | } 90 | :-ms-input-placeholder { 91 | color: #949494; 92 | color: var(--form-placeholder); 93 | } 94 | ::-ms-input-placeholder { 95 | color: #949494; 96 | color: var(--form-placeholder); 97 | } 98 | ::placeholder { 99 | color: #949494; 100 | color: var(--form-placeholder); 101 | } 102 | @media (prefers-color-scheme: dark) { 103 | ::-moz-placeholder { 104 | color: #a9a9a9; 105 | color: var(--form-placeholder); 106 | } 107 | :-ms-input-placeholder { 108 | color: #a9a9a9; 109 | color: var(--form-placeholder); 110 | } 111 | ::-ms-input-placeholder { 112 | color: #a9a9a9; 113 | color: var(--form-placeholder); 114 | } 115 | ::placeholder { 116 | color: #a9a9a9; 117 | color: var(--form-placeholder); 118 | } 119 | } 120 | ::-webkit-scrollbar { 121 | height: 10px; 122 | width: 10px; 123 | } 124 | ::-webkit-scrollbar-track { 125 | background: #efefef; 126 | background: var(--background); 127 | border-radius: 6px; 128 | } 129 | @media (prefers-color-scheme: dark) { 130 | ::-webkit-scrollbar-track { 131 | background: #161f27; 132 | background: var(--background); 133 | } 134 | } 135 | ::-webkit-scrollbar-thumb { 136 | background: #aaa; 137 | background: var(--scrollbar-thumb); 138 | border-radius: 6px; 139 | } 140 | @media (prefers-color-scheme: dark) { 141 | ::-webkit-scrollbar-thumb { 142 | background: #040a0f; 143 | background: var(--scrollbar-thumb); 144 | } 145 | } 146 | ::-webkit-scrollbar-thumb:hover { 147 | background: #9b9b9b; 148 | background: var(--scrollbar-thumb-hover); 149 | } 150 | @media (prefers-color-scheme: dark) { 151 | ::-webkit-scrollbar-thumb:hover { 152 | background: #000; 153 | background: var(--scrollbar-thumb-hover); 154 | } 155 | } 156 | a { 157 | text-decoration: none; 158 | color: #0076d1; 159 | color: var(--links); 160 | } 161 | @media (prefers-color-scheme: dark) { 162 | a { 163 | color: #41adff; 164 | color: var(--links); 165 | } 166 | } 167 | a:hover { 168 | text-decoration: underline; 169 | } 170 | 171 | -------------------------------------------------------------------------------- /preload-fonts.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | createPreloadTag(document); // ルートドキュメントにフォント読み込み 3 | const iframes = document.getElementsByTagName('iframe'); 4 | for (iframe of iframes) { 5 | createPreloadTag(iframe.contentDocument); // iframe内のドキュメントにフォント読み込み 6 | }; 7 | })(); 8 | 9 | function createPreloadTag(elem) { 10 | if (!elem) return; 11 | const baseClassName = 'preloadFontTag'; 12 | const randomInt = Math.floor(Math.random() * 10000) // クラス名の被りを防止するための乱数 13 | const className = baseClassName + randomInt; 14 | const weightList = ['Regular', 'Bold']; 15 | weightList.map((weight) => { 16 | const preloadTag = elem.createElement('link'); 17 | preloadTag.setAttribute('rel', 'preload'); 18 | preloadTag.setAttribute('as', 'font'); 19 | preloadTag.setAttribute('href', chrome.runtime.getURL(`fonts/NotoSansCJKjp-${weight}-subset.woff2`)); 20 | preloadTag.setAttribute('crossorigin', true); 21 | preloadTag.classList = className; 22 | elem.head.appendChild(preloadTag); 23 | preloadTag.addEventListener('load', () => { 24 | const loadCSS = elem.createElement('link'); 25 | loadCSS.setAttribute('rel', 'stylesheet'); 26 | loadCSS.setAttribute('type', 'text/css'); 27 | loadCSS.setAttribute('href', chrome.runtime.getURL(`css/replacefont-extension-${weight.toLowerCase()}.css`)); 28 | elem.head.appendChild(loadCSS); 29 | }); 30 | }); 31 | } -------------------------------------------------------------------------------- /zip.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | dpkg -s zip >/dev/null 2>&1 3 | if [ ! $? -eq 0 ]; then 4 | echo "zip をインストールしてください" 5 | echo; 6 | echo "sudo apt install zip" 7 | else 8 | zip ./replace-font-chrome.zip -r * -x .git README.md LICENSE *.sh *.swp 9 | fi 10 | 11 | --------------------------------------------------------------------------------