fix: 移除 Google Fonts 外部依赖,增加本地字体回退方案

- 删除 Google Fonts 的 @import 远程加载(Noto Serif SC、JetBrains Mono),避免网络请求延迟
  - 为正文字体增加 PingFang SC、Microsoft YaHei 等本地中文字体回退
  - 为等宽字体增加 Fira Code、Source Code Pro 等本地回退
This commit is contained in:
zhenghu
2026-04-13 16:36:56 +08:00
parent c3185cea33
commit 942db700be

18
app.py
View File

@@ -21,8 +21,6 @@ st.set_page_config(
# ─── Custom CSS ────────────────────────────────────────────────────────────── # ─── Custom CSS ──────────────────────────────────────────────────────────────
st.markdown(""" st.markdown("""
<style> <style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
:root { :root {
--bg-dark: #0a1628; --bg-dark: #0a1628;
--bg-card: #0f2040; --bg-card: #0f2040;
@@ -35,7 +33,7 @@ st.markdown("""
} }
html, body, [class*="css"] { html, body, [class*="css"] {
font-family: 'Noto Serif SC', serif; font-family: "PingFang SC", "Microsoft YaHei", "Noto Serif SC", serif;
background-color: var(--bg-dark); background-color: var(--bg-dark);
color: var(--text-primary); color: var(--text-primary);
} }
@@ -54,7 +52,7 @@ html, body, [class*="css"] {
[data-testid="stSidebar"] .stSelectbox label { [data-testid="stSidebar"] .stSelectbox label {
color: var(--accent-green) !important; color: var(--accent-green) !important;
font-size: 0.82rem; font-size: 0.82rem;
font-family: 'JetBrains Mono', monospace; font-family: "JetBrains Mono", "Fira Code", "Source Code Pro", monospace;
letter-spacing: 0.05em; letter-spacing: 0.05em;
} }
@@ -76,7 +74,7 @@ html, body, [class*="css"] {
background: linear-gradient(90deg, var(--accent-green), var(--accent-blue)); background: linear-gradient(90deg, var(--accent-green), var(--accent-blue));
} }
.metric-value { .metric-value {
font-family: 'JetBrains Mono', monospace; font-family: "JetBrains Mono", "Fira Code", "Source Code Pro", monospace;
font-size: 2.2rem; font-size: 2.2rem;
font-weight: 700; font-weight: 700;
color: var(--accent-green); color: var(--accent-green);
@@ -96,7 +94,7 @@ html, body, [class*="css"] {
/* Section headers */ /* Section headers */
.section-header { .section-header {
font-size: 0.75rem; font-size: 0.75rem;
font-family: 'JetBrains Mono', monospace; font-family: "JetBrains Mono", "Fira Code", "Source Code Pro", monospace;
letter-spacing: 0.15em; letter-spacing: 0.15em;
color: var(--accent-gold); color: var(--accent-gold);
text-transform: uppercase; text-transform: uppercase;
@@ -113,7 +111,7 @@ html, body, [class*="css"] {
border: 1px solid var(--accent-green); border: 1px solid var(--accent-green);
border-radius: 6px; border-radius: 6px;
padding: 4px 12px; padding: 4px 12px;
font-family: 'JetBrains Mono', monospace; font-family: "JetBrains Mono", "Fira Code", "Source Code Pro", monospace;
font-size: 0.78rem; font-size: 0.78rem;
color: var(--accent-green); color: var(--accent-green);
margin: 3px; margin: 3px;
@@ -128,7 +126,7 @@ html, body, [class*="css"] {
margin: 10px 0; margin: 10px 0;
} }
.rec-rank { .rec-rank {
font-family: 'JetBrains Mono', monospace; font-family: "JetBrains Mono", "Fira Code", "Source Code Pro", monospace;
font-size: 1.5rem; font-size: 1.5rem;
color: var(--accent-gold); color: var(--accent-gold);
font-weight: 700; font-weight: 700;
@@ -139,7 +137,7 @@ html, body, [class*="css"] {
font-weight: 600; font-weight: 600;
} }
.rec-score { .rec-score {
font-family: 'JetBrains Mono', monospace; font-family: "JetBrains Mono", "Fira Code", "Source Code Pro", monospace;
font-size: 0.85rem; font-size: 0.85rem;
color: var(--accent-blue); color: var(--accent-blue);
} }
@@ -155,7 +153,7 @@ html, body, [class*="css"] {
line-height: 1.2; line-height: 1.2;
} }
.hero-sub { .hero-sub {
font-family: 'JetBrains Mono', monospace; font-family: "JetBrains Mono", "Fira Code", "Source Code Pro", monospace;
font-size: 0.8rem; font-size: 0.8rem;
color: var(--text-muted); color: var(--text-muted);
letter-spacing: 0.1em; letter-spacing: 0.1em;