diff --git a/locales/en-US.yml b/locales/en-US.yml
index 5f9fcd6cf..aa3a8bae7 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -1284,6 +1284,7 @@ clipNoteLimitExceeded: "No more notes can be added to this clip."
 timeTravel: "Time Travel"
 timeTravelDescription: "Show posts before this date."
 pariPlusNoteSettings: "Pari Plus! note settings"
+pariPlusAppearanceSettings: "Pari Plus! appearance settings"
 autoTranslateButton: "Display translation function on notes in different languages"
 showDetailTimeWhenHover: "Hover the timestamp of the note to expand the detailed time"
 noteClickToOpen: "Click to open note details"
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index 0e4b33bcd..4e673fe94 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -1292,7 +1292,8 @@ passkeyVerificationFailed: "验证通行密钥失败。"
 passkeyVerificationSucceededButPasswordlessLoginDisabled: "通行密钥验证成功,但账户未开启无密码登录。"
 timeTravel: "时光机"
 timeTravelDescription: "显示该日期以前的帖子"
-pariPlusNoteSettings: "Pari Plus! 的帖文设置"
+pariPlusNoteSettings: "Pari Plus! 帖文设置"
+pariPlusAppearanceSettings: "Pari Plus! 外观设置"
 autoTranslateButton: "在不同语言的帖文上显示翻译功能"
 showDetailTimeWhenHover: "悬浮/长按帖文时间戳时,展开详细时间"
 noteClickToOpen: "点击展开帖文详情"
diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml
index 840e630d3..099b7836d 100644
--- a/locales/zh-TW.yml
+++ b/locales/zh-TW.yml
@@ -1292,7 +1292,8 @@ passkeyVerificationFailed: "驗證金鑰失敗。"
 passkeyVerificationSucceededButPasswordlessLoginDisabled: "雖然驗證金鑰成功,但是無密碼登入的方式是停用的。"
 timeTravel: "時光機"
 timeTravelDescription: "回到指定的日期"
-pariPlusNoteSettings: "Pari Plus! 的貼文設定"
+pariPlusNoteSettings: "Pari Plus! 貼文設定"
+pariPlusAppearanceSettings: "Pari Plus! 外觀設定"
 autoTranslateButton: "在不同語言的貼文上顯示翻譯功能"
 showDetailTimeWhenHover: "長按貼文時間戳記時展開詳細時間"
 noteClickToOpen: "點擊展開貼文詳情"
diff --git a/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Bold.woff b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Bold.woff
new file mode 100644
index 000000000..be2f835ad
Binary files /dev/null and b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Bold.woff differ
diff --git a/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_ExtraLight.woff b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_ExtraLight.woff
new file mode 100644
index 000000000..d71f5602f
Binary files /dev/null and b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_ExtraLight.woff differ
diff --git a/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Light.woff b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Light.woff
new file mode 100644
index 000000000..3c9c34e5d
Binary files /dev/null and b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Light.woff differ
diff --git a/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Medium.woff b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Medium.woff
new file mode 100644
index 000000000..6253b4bd7
Binary files /dev/null and b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Medium.woff differ
diff --git a/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Normal.woff b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Normal.woff
new file mode 100644
index 000000000..f5ecfbd5a
Binary files /dev/null and b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Normal.woff differ
diff --git a/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Regular.woff b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Regular.woff
new file mode 100644
index 000000000..f39b66405
Binary files /dev/null and b/packages/backend/assets/fonts/ChillRoundGothic/ChillRoundGothic_Regular.woff differ
diff --git a/packages/backend/assets/fonts/GenRyuMin/GenRyuMin2TC-R.woff2 b/packages/backend/assets/fonts/GenRyuMin/GenRyuMin2TC-R.woff2
new file mode 100644
index 000000000..d66942e70
Binary files /dev/null and b/packages/backend/assets/fonts/GenRyuMin/GenRyuMin2TC-R.woff2 differ
diff --git a/packages/backend/assets/fonts/MaoKenTangYuan0.12.woff2 b/packages/backend/assets/fonts/MaoKenTangYuan0.12.woff2
new file mode 100644
index 000000000..baca06cd8
Binary files /dev/null and b/packages/backend/assets/fonts/MaoKenTangYuan0.12.woff2 differ
diff --git a/packages/backend/assets/fonts/YiShanBeiZhuanTi.ttf b/packages/backend/assets/fonts/YiShanBeiZhuanTi.ttf
new file mode 100644
index 000000000..9364f2d5f
Binary files /dev/null and b/packages/backend/assets/fonts/YiShanBeiZhuanTi.ttf differ
diff --git a/packages/backend/assets/fonts/chongxi_seal.woff2 b/packages/backend/assets/fonts/chongxi_seal.woff2
new file mode 100644
index 000000000..e3da84064
Binary files /dev/null and b/packages/backend/assets/fonts/chongxi_seal.woff2 differ
diff --git a/packages/backend/assets/fonts/clearhanserif.original.v1.07.woff2 b/packages/backend/assets/fonts/clearhanserif.original.v1.07.woff2
new file mode 100644
index 000000000..186f4b282
Binary files /dev/null and b/packages/backend/assets/fonts/clearhanserif.original.v1.07.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-ja.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-ja.woff2
new file mode 100644
index 000000000..991c20a4b
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-ja.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-ko.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-ko.woff2
new file mode 100644
index 000000000..137d5894d
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-ko.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-latin.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-latin.woff2
new file mode 100644
index 000000000..877350e12
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-latin.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-zh_hans.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-zh_hans.woff2
new file mode 100644
index 000000000..c21d4a55b
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-zh_hans.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-zh_hant.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-zh_hant.woff2
new file mode 100644
index 000000000..e45849d19
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-zh_hant.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-ja.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-ja.woff2
new file mode 100644
index 000000000..55591089b
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-ja.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-ko.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-ko.woff2
new file mode 100644
index 000000000..960c0565b
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-ko.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-latin.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-latin.woff2
new file mode 100644
index 000000000..ed96ef6a5
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-latin.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-zh_hans.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-zh_hans.woff2
new file mode 100644
index 000000000..515fad201
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-zh_hans.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-zh_hant.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-zh_hant.woff2
new file mode 100644
index 000000000..3a049cb14
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-zh_hant.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-ja.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-ja.woff2
new file mode 100644
index 000000000..de8ee81a4
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-ja.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-ko.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-ko.woff2
new file mode 100644
index 000000000..058f320dc
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-ko.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-latin.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-latin.woff2
new file mode 100644
index 000000000..f9435a73c
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-latin.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-zh_hans.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-zh_hans.woff2
new file mode 100644
index 000000000..16dac663d
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-zh_hans.woff2 differ
diff --git a/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-zh_hant.woff2 b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-zh_hant.woff2
new file mode 100644
index 000000000..197bca37a
Binary files /dev/null and b/packages/backend/assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-zh_hant.woff2 differ
diff --git a/packages/backend/assets/fonts/jf-openhuninn-2.1.woff2 b/packages/backend/assets/fonts/jf-openhuninn-2.1.woff2
new file mode 100644
index 000000000..b4846444a
Binary files /dev/null and b/packages/backend/assets/fonts/jf-openhuninn-2.1.woff2 differ
diff --git a/packages/backend/assets/fonts/sharkey-icons/shark-font.svg b/packages/backend/assets/fonts/sharkey-icons/shark-font.svg
new file mode 100644
index 000000000..b67bd7f7d
--- /dev/null
+++ b/packages/backend/assets/fonts/sharkey-icons/shark-font.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<defs>
+  <font id="shark-font" horiz-adv-x="512">
+    <font-face font-family="shark-font"
+      units-per-em="512" ascent="512"
+      descent="0" />
+    <missing-glyph horiz-adv-x="0" />
+    <glyph glyph-name="foldermove"
+      unicode="&#xEA01;"
+      horiz-adv-x="512" d="M74 429C63 425 54 415 52 403C52 400 51 369 52 323V248L68 249H83V292L84 335H431V114H84V207H52V157C52 108 52 107 54 102C56 95 64 87 71 85L76 83H441L445 85Q455.5 91 460 100L462 105V344L459 349C456 356 451 361 444 364L439 367H264L235 396C211 420 205 425 201 427L196 430H137C91 430 76 430 74 429M203 383L219 367H84V399H187zM166 303C160 300 157 294 159 289C160 287 168 277 185 261L209 237H122C40 237 34 237 32 236S28 233 27 232C25 229 25 229 25 126C25 26 25 23 27 21C32 13 44 14 47 24C47 26 48 62 48 121V215H128C172 215 208 215 208 214C208 214 197 203 184 189C157 162 156 162 160 155C162 150 168 147 173 149C174 150 191 166 211 185C249 223 248 223 247 229C246 232 177 302 173 303C171 304 168 304 166 303" />
+    <glyph glyph-name="foldermove-1"
+      unicode="&#x66;&#x6F;&#x6C;&#x64;&#x65;&#x72;&#x6D;&#x6F;&#x76;&#x65;"
+      horiz-adv-x="512" d="M74 429C63 425 54 415 52 403C52 400 51 369 52 323V248L68 249H83V292L84 335H431V114H84V207H52V157C52 108 52 107 54 102C56 95 64 87 71 85L76 83H441L445 85Q455.5 91 460 100L462 105V344L459 349C456 356 451 361 444 364L439 367H264L235 396C211 420 205 425 201 427L196 430H137C91 430 76 430 74 429M203 383L219 367H84V399H187zM166 303C160 300 157 294 159 289C160 287 168 277 185 261L209 237H122C40 237 34 237 32 236S28 233 27 232C25 229 25 229 25 126C25 26 25 23 27 21C32 13 44 14 47 24C47 26 48 62 48 121V215H128C172 215 208 215 208 214C208 214 197 203 184 189C157 162 156 162 160 155C162 150 168 147 173 149C174 150 191 166 211 185C249 223 248 223 247 229C246 232 177 302 173 303C171 304 168 304 166 303" />
+    <glyph glyph-name="misskey"
+      unicode="&#xEA02;"
+      horiz-adv-x="512" d="M190 152C168 152 149 165 140 181C135 188 126 190 125 181V138Q125 112.5 107 93Q89 75 62 75C45 75 31 81 18 93Q0 112.5 0 138V374C0 387 4 400 11 410Q23 426.5 41 434Q51.5 437 62 437C82 437 98 430 111 415L174 340C176 339 180 330 190 330S205 339 206 340L270 415C283 430 299 437 318 437C325 437 332 436 340 434C352 429 361 422 369 410C377 400 381 387 381 374V138C381 121 375 106 362 93C350 81 335 75 318 75Q292.5 75 273 93Q255 112.5 255 138V181C254 193 244 185 240 181C231 163 212 152 190 152M458 328C443 328 430 334 419 344Q404 360.5 404 383C404 398 409 411 419 421C430 432 443 437 458 437C472 437 485 432 496 421C507 411 512 398 512 383S507 355 496 344C485 334 472 328 458 328M458 318C473 318 486 312 496 301C507 291 512 278 512 262V129C512 114 507 101 496 90C486 80 473 75 458 75S430 80 420 90C409 101 404 114 404 129V262C404 278 409 291 420 301C430 312 443 318 458 318" />
+    <glyph glyph-name="misskey-1"
+      unicode="&#x6D;&#x69;&#x73;&#x73;&#x6B;&#x65;&#x79;"
+      horiz-adv-x="512" d="M190 152C168 152 149 165 140 181C135 188 126 190 125 181V138Q125 112.5 107 93Q89 75 62 75C45 75 31 81 18 93Q0 112.5 0 138V374C0 387 4 400 11 410Q23 426.5 41 434Q51.5 437 62 437C82 437 98 430 111 415L174 340C176 339 180 330 190 330S205 339 206 340L270 415C283 430 299 437 318 437C325 437 332 436 340 434C352 429 361 422 369 410C377 400 381 387 381 374V138C381 121 375 106 362 93C350 81 335 75 318 75Q292.5 75 273 93Q255 112.5 255 138V181C254 193 244 185 240 181C231 163 212 152 190 152M458 328C443 328 430 334 419 344Q404 360.5 404 383C404 398 409 411 419 421C430 432 443 437 458 437C472 437 485 432 496 421C507 411 512 398 512 383S507 355 496 344C485 334 472 328 458 328M458 318C473 318 486 312 496 301C507 291 512 278 512 262V129C512 114 507 101 496 90C486 80 473 75 458 75S430 80 420 90C409 101 404 114 404 129V262C404 278 409 291 420 301C430 312 443 318 458 318" />
+    <glyph glyph-name="shark"
+      unicode="&#xEA03;"
+      horiz-adv-x="512" d="M469 171V128H427C397 128 367 137 341 149C288 122 224 122 171 149C145 137 115 128 85 128H43V171H85C115 171 145 181 171 198C222 162 290 162 341 198C367 181 397 171 427 171zM113 218C124 221 136 227 147 234L171 250C185 299 187 357 162 424C255 408 339 327 371 231C387 221 403 215 419 214C389 354 264 469 128 469C121 469 114 465 110 459S106 445 109 438C155 346 141 271 113 218M341 113C290 77 222 77 171 113C145 96 115 85 85 85H43V43H85C115 43 145 51 171 64C224 36 288 36 341 64C367 51 397 43 427 43H469V85H427C397 85 367 96 341 113" />
+    <glyph glyph-name="shark-1"
+      unicode="&#x73;&#x68;&#x61;&#x72;&#x6B;"
+      horiz-adv-x="512" d="M469 171V128H427C397 128 367 137 341 149C288 122 224 122 171 149C145 137 115 128 85 128H43V171H85C115 171 145 181 171 198C222 162 290 162 341 198C367 181 397 171 427 171zM113 218C124 221 136 227 147 234L171 250C185 299 187 357 162 424C255 408 339 327 371 231C387 221 403 215 419 214C389 354 264 469 128 469C121 469 114 465 110 459S106 445 109 438C155 346 141 271 113 218M341 113C290 77 222 77 171 113C145 96 115 85 85 85H43V43H85C115 43 145 51 171 64C224 36 288 36 341 64C367 51 397 43 427 43H469V85H427C397 85 367 96 341 113" />
+  </font>
+</defs>
+</svg>
diff --git a/packages/backend/assets/fonts/sharkey-icons/shark-font.ttf b/packages/backend/assets/fonts/sharkey-icons/shark-font.ttf
new file mode 100644
index 000000000..0fdf04df0
Binary files /dev/null and b/packages/backend/assets/fonts/sharkey-icons/shark-font.ttf differ
diff --git a/packages/backend/assets/fonts/sharkey-icons/shark-font.woff b/packages/backend/assets/fonts/sharkey-icons/shark-font.woff
new file mode 100644
index 000000000..993666bc3
Binary files /dev/null and b/packages/backend/assets/fonts/sharkey-icons/shark-font.woff differ
diff --git a/packages/backend/assets/fonts/sharkey-icons/style.css b/packages/backend/assets/fonts/sharkey-icons/style.css
new file mode 100644
index 000000000..7168702e5
--- /dev/null
+++ b/packages/backend/assets/fonts/sharkey-icons/style.css
@@ -0,0 +1,114 @@
+@font-face {
+  font-display: auto;
+  font-family: "shark-font";
+  font-style: normal;
+  font-weight: normal;
+  
+  src: url("./shark-font.woff?1722899913909") format("woff"), url("./shark-font.ttf?1722899913909") format("truetype"), url("./shark-font.svg?1722899913909#shark-font") format("svg");
+}
+
+.sk-icons {
+  display: inline-block;
+  font-family: "shark-font";
+  font-weight: normal;
+  font-style: normal;
+  font-variant: normal;
+  text-rendering: auto;
+  line-height: 1;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-font-smoothing: antialiased;
+}
+
+.sk-icons-lg {
+  font-size: 1.33333em;
+  line-height: 0.75em;
+  vertical-align: -0.0667em;
+}
+
+.sk-icons-xs {
+  font-size: 0.75em;
+}
+
+.sk-icons-sm {
+  font-size: 0.875em;
+}
+
+.sk-icons-1x {
+  font-size: 1em;
+}
+
+.sk-icons-2x {
+  font-size: 2em;
+}
+
+.sk-icons-3x {
+  font-size: 3em;
+}
+
+.sk-icons-4x {
+  font-size: 4em;
+}
+
+.sk-icons-5x {
+  font-size: 5em;
+}
+
+.sk-icons-6x {
+  font-size: 6em;
+}
+
+.sk-icons-7x {
+  font-size: 7em;
+}
+
+.sk-icons-8x {
+  font-size: 8em;
+}
+
+.sk-icons-9x {
+  font-size: 9em;
+}
+
+.sk-icons-10x {
+  font-size: 10em;
+}
+
+.sk-icons-fw {
+  text-align: center;
+  width: 1.25em;
+}
+
+.sk-icons-border {
+  border: solid 0.08em #eee;
+  border-radius: 0.1em;
+  padding: 0.2em 0.25em 0.15em;
+}
+
+.sk-icons-pull-left {
+  float: left;
+}
+
+.sk-icons-pull-right {
+  float: right;
+}
+
+.sk-icons.sk-icons-pull-left {
+  margin-right: 0.3em;
+}
+
+.sk-icons.sk-icons-pull-right {
+  margin-left: 0.3em;
+}
+
+
+.sk-icons.sk-foldermove::before {
+  content: "\ea01";
+}
+
+.sk-icons.sk-misskey::before {
+  content: "\ea02";
+}
+
+.sk-icons.sk-shark::before {
+  content: "\ea03";
+}
\ No newline at end of file
diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js
index ff0e6e6bd..b3952b2fd 100644
--- a/packages/backend/src/server/web/boot.js
+++ b/packages/backend/src/server/web/boot.js
@@ -127,6 +127,11 @@
 		document.documentElement.classList.add('useSystemFont');
 	}
 
+	const defaultFontFace = localStorage.getItem('defaultFontFace');
+	if (defaultFontFace) {
+		document.documentElement.classList.add(`default-font-${defaultFontFace}`);
+	}
+
 	const wallpaper = localStorage.getItem('wallpaper');
 	if (wallpaper) {
 		document.documentElement.style.backgroundImage = `url(${wallpaper})`;
diff --git a/packages/frontend/src/local-storage.ts b/packages/frontend/src/local-storage.ts
index 5b8ba77e0..757a74b0c 100644
--- a/packages/frontend/src/local-storage.ts
+++ b/packages/frontend/src/local-storage.ts
@@ -22,6 +22,7 @@ export type Keys =
 	'theme' |
 	'colorScheme' |
 	'useSystemFont' |
+	'defaultFontFace' |
 	'fontSize' |
 	'ui' |
 	'ui_temp' |
diff --git a/packages/frontend/src/pages/settings/pari.vue b/packages/frontend/src/pages/settings/pari.vue
index b62216ba7..7b02a2f76 100644
--- a/packages/frontend/src/pages/settings/pari.vue
+++ b/packages/frontend/src/pages/settings/pari.vue
@@ -4,6 +4,37 @@ SPDX-License-Identifier: AGPL-3.0-only
 -->
 
 <template>
+	<div class="_gaps_m">
+		<div class="label">{{ i18n.ts.pariPlusAppearanceSettings }}</div>
+		<div class="_gaps_s">
+			<MkSelect v-model="defaultFont.fontFace">
+				<template #label>Font face</template>
+				<template #caption>
+					Default font
+				</template>
+				<option
+					v-for="item in defaultFont.fontList"
+					:key="item.id"
+					:value="item.id"
+				>
+					{{ item.name }}
+				</option>
+			</MkSelect>
+			<MkRadios v-if="defaultFont.availableTypes.length > 0" v-model="defaultFont.fontFaceType">
+				<template #label>Testing feature, may cause slow loading.</template>
+				<template #caption>
+					Properties
+				</template>
+				<option
+					v-for="item in defaultFont.availableTypes"
+					:key="item.id"
+					:value="item.id"
+				>
+					{{ item.name }}
+				</option>
+			</MkRadios>
+        </div>
+    </div>
 	<div class="_gaps_m">
 		<div class="label">{{ i18n.ts.pariPlusNoteSettings }}</div>
 		<MkSwitch v-model="autoTranslateButton">{{ i18n.ts.autoTranslateButton }}</MkSwitch>
@@ -22,12 +53,18 @@ SPDX-License-Identifier: AGPL-3.0-only
 </template>
 
 <script lang="ts" setup>
-import { computed } from 'vue';
+import { computed, ref, watch } from 'vue';
 import { i18n } from '@/i18n.js';
 import { definePageMetadata } from '@/scripts/page-metadata.js';
 import { defaultStore } from '@/store.js';
+import { miLocalStorage } from '@/local-storage.js';
+import { getDefaultFontSettings } from '@/scripts/font-settings.js';
 import MkSwitch from '@/components/MkSwitch.vue';
 import MkSelect from '@/components/MkSelect.vue';
+import MkRadios from '@/components/MkRadios.vue';
+
+const defaultFont = getDefaultFontSettings();
+console.log(defaultFont);
 
 const autoTranslateButton = computed(defaultStore.makeGetterSetter('autoTranslateButton'));
 const showDetailTimeWhenHover = computed(defaultStore.makeGetterSetter('showDetailTimeWhenHover'));
diff --git a/packages/frontend/src/scripts/font-settings.ts b/packages/frontend/src/scripts/font-settings.ts
new file mode 100644
index 000000000..2ab0d45d3
--- /dev/null
+++ b/packages/frontend/src/scripts/font-settings.ts
@@ -0,0 +1,103 @@
+import { computed, ref, watch } from 'vue';
+import type { Ref, ComputedRef } from 'vue';
+import { miLocalStorage } from '@/local-storage.js';
+import { i18n } from '@/i18n.js';
+
+const fontList = [
+	{ id: 'system-ui', name: i18n.ts.useSystemFont },
+	{ id: 'maokentangyuan', name: '猫啃糖圆' },
+	{ id: 'chillroundgothic', name: '寒蝉圆黑' },
+	{ id: 'lxgw-wenkai', name: '霞鹜文楷' },
+	{ id: 'lxgw-marker-gothic', name: '霞鹜漫黑' },
+	{ id: 'clearsans', name: '思源屏显臻宋' },
+	{ id: 'genryomin2', name: '源流明體' },
+	{ id: 'genwanmin2', name: '源雲明體' },
+	{ id: 'jinghualaosong', name: '京華老宋體' },
+	{ id: 'fusion-pixel', name: '缝合像素体' },
+	{ id: 'misskey-biz', name: 'BIZ UDGothic' },
+	{ id: 'roboto', name: 'Roboto' },
+	{ id: 'arial', name: 'Arial' },
+	{ id: 'times', name: 'Times' },
+	{ id: 'yishanbeizhuan', name: '峄山碑篆体' },
+	{ id: 'chongxiseal', name: '崇羲篆體' },
+];
+
+function getFontOptionsList(val: string): { id: string, name: string, default?: boolean }[] {
+	switch (val) {
+		case 'fusion-pixel':
+			return [
+				{ name: '8px', id: '8' },
+				{ name: '10px', id: '10' },
+				{ name: '12px', id: '12', default: true },
+			];
+		case 'chillroundgothic':
+			return [
+				{ name: 'Extra Light', id: 'EL' },
+				{ name: 'Light', id: 'L' },
+				{ name: 'Normal', id: 'N', default: true },
+				{ name: 'Regular', id: 'R' },
+				{ name: 'Middle', id: 'M' },
+				{ name: 'Bold', id: 'B' },
+			];
+		default:
+			return [];
+	}
+}
+
+function getFontId(name: string, option: string) {
+	if (getFontOptionsList(name).length === 0) {
+		return `${name}`;
+	} else {
+		return `${name}_${option}`;
+	}
+}
+
+export function getDefaultFontSettings() {
+	const def_arr = miLocalStorage.getItem('defaultFontFace')?.split('_');
+	const fontFace = ref(def_arr?.[0] ?? 'maokentangyuan');
+	const fontFaceType = ref(def_arr?.[1] ?? '');
+	const availableTypes = computed(() => getFontOptionsList(fontFace.value));
+
+	function setDafaultFont() {
+		for (const klass of [...document.documentElement.classList.values()]) {
+			if (klass.startsWith('default-font-')) {
+				document.documentElement.classList.remove(klass);
+			}
+		}
+		const newFontId = getFontId(fontFace.value, fontFaceType.value);
+		miLocalStorage.setItem('defaultFontFace', newFontId);
+		document.documentElement.classList.add(`default-font-${newFontId}`);
+		console.log(newFontId);
+	}
+
+	watch(fontFace, (newVal) => {
+		const optionsList = getFontOptionsList(newVal);
+		if (optionsList.length !== 0) {
+			fontFaceType.value = optionsList.find((v) => v.default)?.id ?? '';
+		} else {
+			setDafaultFont();
+		}
+	});
+	watch(fontFaceType, () => {
+		setDafaultFont();
+	});
+
+	return ref({
+		fontList,
+		fontFace,
+		fontFaceType,
+		availableTypes,
+	}) as Ref<{
+		fontList: {
+			id: string;
+			name: string;
+		}[];
+		fontFace: string;
+		fontFaceType: string;
+		availableTypes: {
+			id: string;
+			name: string;
+			default?: boolean;
+		}[];
+	}>;
+}
diff --git a/packages/frontend/src/style.scss b/packages/frontend/src/style.scss
index 96568e4bf..622ef1435 100644
--- a/packages/frontend/src/style.scss
+++ b/packages/frontend/src/style.scss
@@ -113,6 +113,18 @@ html {
 	}
 }
 
+@import "./styles-font/usual.scss";
+@import "./styles-font/maokentangyuan.scss";
+@import "./styles-font/chillroundgothic.scss";
+@import "./styles-font/clearsans.scss";
+@import "./styles-font/lgtw-wenkai.scss";
+@import "./styles-font/lgtw-marker-gothic.scss";
+@import "./styles-font/genryomin2.scss";
+@import "./styles-font/genwanmin2.scss";
+@import "./styles-font/jinghualaosong.scss";
+@import "./styles-font/fusion-pixel.scss";
+@import "./styles-font/zhuanti.scss";
+
 html._themeChanging_ {
 	&, * {
 		transition: background 1s ease, border 1s ease !important;
diff --git a/packages/frontend/src/styles-font/chillroundgothic.scss b/packages/frontend/src/styles-font/chillroundgothic.scss
new file mode 100644
index 000000000..6034961be
--- /dev/null
+++ b/packages/frontend/src/styles-font/chillroundgothic.scss
@@ -0,0 +1,51 @@
+@font-face {
+	font-family: "ChillRoundGothic EL";
+	font-display: swap;
+	src: url("/static-assets/fonts/ChillRoundGothic/ChillRoundGothic_ExtraLight.woff") format("woff");
+}
+@font-face {
+	font-family: "ChillRoundGothic L";
+	font-display: swap;
+	src: url("/static-assets/fonts/ChillRoundGothic/ChillRoundGothic_Light.woff") format("woff");
+}
+@font-face {
+	font-family: "ChillRoundGothic N";
+	font-display: swap;
+	src: url("/static-assets/fonts/ChillRoundGothic/ChillRoundGothic_Normal.woff") format("woff");
+}
+@font-face {
+	font-family: "ChillRoundGothic M";
+	font-display: swap;
+	src: url("/static-assets/fonts/ChillRoundGothic/ChillRoundGothic_Medium.woff") format("woff");
+}
+@font-face {
+	font-family: "ChillRoundGothic R";
+	font-display: swap;
+	src: url("/static-assets/fonts/ChillRoundGothic/ChillRoundGothic_Regular.woff") format("woff");
+}
+@font-face {
+	font-family: "ChillRoundGothic B";
+	font-display: swap;
+	src: url("/static-assets/fonts/ChillRoundGothic/ChillRoundGothic_Bold.woff") format("woff");
+}
+html.default-font-chillroundgothic_EL {
+	font-family: 'ChillRoundGothic EL','Lexend',  'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
+html.default-font-chillroundgothic_L {
+	font-family: 'ChillRoundGothic L', 'Lexend', 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
+html.default-font-chillroundgothic_N {
+	font-family: 'Lexend', 'ChillRoundGothic N', 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
+html.default-font-chillroundgothic_M {
+	font-family: 'Lexend', 'ChillRoundGothic M', 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
+html.default-font-chillroundgothic_R {
+	font-family: 'Lexend', 'ChillRoundGothic R', 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
+html.default-font-chillroundgothic_B {
+	font-family: 'Lexend', 'ChillRoundGothic B', 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
+html.default-font-chillroundgothic_H {
+	font-family: 'ChillRoundGothic H', 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
diff --git a/packages/frontend/src/styles-font/clearsans.scss b/packages/frontend/src/styles-font/clearsans.scss
new file mode 100644
index 000000000..909cde168
--- /dev/null
+++ b/packages/frontend/src/styles-font/clearsans.scss
@@ -0,0 +1,10 @@
+@font-face {
+  font-family: "Clear Han Serif";
+  font-display: swap;
+  src:  local("Clear Han Serif"),
+        url("/static-assets/fonts/clearhanserif.original.v1.07.woff2") format("woff2");
+}
+
+html.default-font-clearsans {
+	font-family: "Clear Han Serif", "Times New Roman", Times, serif
+}
diff --git a/packages/frontend/src/styles-font/fusion-pixel.scss b/packages/frontend/src/styles-font/fusion-pixel.scss
new file mode 100644
index 000000000..fba1327de
--- /dev/null
+++ b/packages/frontend/src/styles-font/fusion-pixel.scss
@@ -0,0 +1,37 @@
+@font-face {
+  font-family: "fusion-pixel-8";
+  font-display: swap;
+  src: url("/static-assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-ja.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-ko.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-latin.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-zh_hans.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-8px-proportional-zh_hant.woff2") format("woff2");
+}
+@font-face {
+  font-family: "fusion-pixel-10";
+  font-display: swap;
+  src: url("/static-assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-ja.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-ko.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-latin.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-zh_hans.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-10px-proportional-zh_hant.woff2") format("woff2");
+}
+@font-face {
+  font-family: "fusion-pixel-12";
+  font-display: swap;
+  src: url("/static-assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-ja.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-ko.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-latin.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-zh_hans.woff2") format("woff2"),
+		url("/static-assets/fonts/fusion-pixel/fusion-pixel-12px-proportional-zh_hant.woff2") format("woff2");
+}
+
+html.default-font-fusion-pixel_8 {
+	font-family: 'fusion-pixel-8', Arial, sans-serif;
+}
+html.default-font-fusion-pixel_10 {
+	font-family: 'fusion-pixel-10', Arial, sans-serif;
+}
+html.default-font-fusion-pixel_12 {
+	font-family: 'fusion-pixel-12', Arial, sans-serif;
+}
diff --git a/packages/frontend/src/styles-font/genryomin2.scss b/packages/frontend/src/styles-font/genryomin2.scss
new file mode 100644
index 000000000..b72733648
--- /dev/null
+++ b/packages/frontend/src/styles-font/genryomin2.scss
@@ -0,0 +1,10 @@
+@font-face {
+  font-family: "GenRyuMin2 TC R";
+  font-display: swap;
+  src:  local("GenRyuMin2 TC R"),
+        url("/static-assets/fonts/GenRyuMin/GenRyuMin2TC-R.woff2") format("woff2");
+}
+
+html.default-font-genryomin2 {
+	font-family: "GenRyuMin2 TC R", "Times New Roman", Times, serif
+}
diff --git a/packages/frontend/src/styles-font/genwanmin2.scss b/packages/frontend/src/styles-font/genwanmin2.scss
new file mode 100644
index 000000000..53945dcf2
--- /dev/null
+++ b/packages/frontend/src/styles-font/genwanmin2.scss
@@ -0,0 +1,4 @@
+html.default-font-genwanmin2 {
+	@import url('https://static.zeoseven.com/cn/301/main/result.css');
+	font-family: "GenWanMin2 TC R", "Times New Roman", Times, serif
+}
diff --git a/packages/frontend/src/styles-font/jinghualaosong.scss b/packages/frontend/src/styles-font/jinghualaosong.scss
new file mode 100644
index 000000000..ed03ebed7
--- /dev/null
+++ b/packages/frontend/src/styles-font/jinghualaosong.scss
@@ -0,0 +1,4 @@
+html.default-font-jinghualaosong {
+	@import url("https://chinese-fonts-cdn.deno.dev/packages/jhlst/dist/京華老宋体v2_002/result.css");
+	font-family: "KingHwa_OldSong", "Times New Roman", Times, serif
+}
diff --git a/packages/frontend/src/styles-font/lgtw-marker-gothic.scss b/packages/frontend/src/styles-font/lgtw-marker-gothic.scss
new file mode 100644
index 000000000..894ba8e2a
--- /dev/null
+++ b/packages/frontend/src/styles-font/lgtw-marker-gothic.scss
@@ -0,0 +1,4 @@
+html.default-font-lxgw-marker-gothic {
+	@import url("https://chinese-fonts-cdn.deno.dev/packages/lxgwmanhei/dist/LXGWMarkerGothic/result.css");
+	font-family: "LXGW Marker Gothic", 'Lexend', Roboto, HelveticaNeue, Arial, sans-serif;
+}
diff --git a/packages/frontend/src/styles-font/lgtw-wenkai.scss b/packages/frontend/src/styles-font/lgtw-wenkai.scss
new file mode 100644
index 000000000..a250997a8
--- /dev/null
+++ b/packages/frontend/src/styles-font/lgtw-wenkai.scss
@@ -0,0 +1,9 @@
+html.default-font-lxgw-wenkai {
+	@import url("https://cdn.jsdelivr.net/npm/lxgw-wenkai-webfont@1.1.0/style.css");
+	font-family: "LXGW WenKai", "Times New Roman", Times, serif;
+	&[lang="zh-WY"],
+	&[lang="zh-TW"] {
+		@import url('https://fonts.googleapis.com/css2?family=LXGW+WenKai+TC:wght@300;400;700&display=swap');
+		font-family: "LXGW WenKai TC", "LXGW WenKai", 'Times New Roman', Times, serif;
+	}
+}
diff --git a/packages/frontend/src/styles-font/maokentangyuan.scss b/packages/frontend/src/styles-font/maokentangyuan.scss
new file mode 100644
index 000000000..4835e3e2b
--- /dev/null
+++ b/packages/frontend/src/styles-font/maokentangyuan.scss
@@ -0,0 +1,22 @@
+@font-face {
+	font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
+	font-family: 'MaoKenTangYuan';
+	font-style: normal;
+	font-weight: 400;
+	src: url('/static-assets/fonts/MaoKenTangYuan0.12.woff2') format('woff2');
+}
+@font-face {
+	font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
+	font-family: 'jf-openhuninn';
+	font-style: normal;
+	font-weight: 400;
+	src: url('/static-assets/fonts/jf-openhuninn-2.1.woff2') format("woff2");
+}
+
+html.default-font-maokentangyuan {
+	font-family: 'Lexend', 'MaoKenTangYuan', 'jf-openhuninn', 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+	&[lang="zh-WY"],
+	&[lang="zh-TW"] {
+		font-family: 'Lexend', 'jf-openhuninn', 'MaoKenTangYuan', 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+	}
+}
diff --git a/packages/frontend/src/styles-font/usual.scss b/packages/frontend/src/styles-font/usual.scss
new file mode 100644
index 000000000..b99524134
--- /dev/null
+++ b/packages/frontend/src/styles-font/usual.scss
@@ -0,0 +1,23 @@
+html.default-font-sharkey-default {
+	font-family: 'Lexend', 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
+
+html.default-font-system-ui {
+	font-family: system-ui;
+}
+
+html.default-font-misskey-biz {
+	font-family: "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
+
+html.default-font-roboto {
+	font-family: Roboto, Arial, sans-serif;
+}
+
+html.default-font-arial {
+	font-family: Arial, sans-serif;
+}
+
+html.default-font-times {
+	font-family: 'Times New Roman', Times, serif;
+}
diff --git a/packages/frontend/src/styles-font/zhuanti.scss b/packages/frontend/src/styles-font/zhuanti.scss
new file mode 100644
index 000000000..e14ae407a
--- /dev/null
+++ b/packages/frontend/src/styles-font/zhuanti.scss
@@ -0,0 +1,21 @@
+@font-face {
+	font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
+	font-family: 'YiShanBeiZhuanTi';
+	font-style: normal;
+	font-weight: 400;
+	src: url('/static-assets/fonts/YiShanBeiZhuanTi.ttf') format('opentype');
+}
+@font-face {
+	font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
+	font-family: "Chong Xi Small Seal";
+	font-style: normal;
+	font-weight: 400;
+	src: url('/static-assets/fonts/chongxi_seal.woff2') format('woff2');
+}
+
+html.default-font-yishanbeizhuan {
+	font-family: 'YiShanBeiZhuanTi', "Chong Xi Small Seal",'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}
+html.default-font-chongxiseal {
+	font-family: "Chong Xi Small Seal", 'YiShanBeiZhuanTi','Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
+}