From 2d2c4e9f98ce0410b61a2451bb2600d7665338d8 Mon Sep 17 00:00:00 2001 From: bdim404 Date: Fri, 6 Feb 2026 14:09:22 +0800 Subject: [PATCH] feat: Add font loading functionality for multi-language support and preload base font --- .../fonts/noto-serif-jp-regular.woff2 | Bin 0 -> 57992 bytes .../fonts/noto-serif-kr-regular.woff2 | Bin 0 -> 24044 bytes .../fonts/noto-serif-tc-regular.woff2 | Bin 0 -> 6472 bytes .../src/contexts/UserPreferencesContext.tsx | 24 ++- qwen3-tts-frontend/src/index.css | 21 --- qwen3-tts-frontend/src/lib/fontManager.ts | 153 ++++++++++++++++++ qwen3-tts-frontend/src/main.tsx | 3 + 7 files changed, 175 insertions(+), 26 deletions(-) create mode 100644 qwen3-tts-frontend/fonts/noto-serif-jp-regular.woff2 create mode 100644 qwen3-tts-frontend/fonts/noto-serif-kr-regular.woff2 create mode 100644 qwen3-tts-frontend/fonts/noto-serif-tc-regular.woff2 create mode 100644 qwen3-tts-frontend/src/lib/fontManager.ts diff --git a/qwen3-tts-frontend/fonts/noto-serif-jp-regular.woff2 b/qwen3-tts-frontend/fonts/noto-serif-jp-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..be090b1dd0308525a672ebf7114bcd79989af2a5 GIT binary patch literal 57992 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 %~o} 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 literal 0 HcmV?d00001 diff --git a/qwen3-tts-frontend/src/contexts/UserPreferencesContext.tsx b/qwen3-tts-frontend/src/contexts/UserPreferencesContext.tsx index 3036e45..b9ffbf2 100644 --- a/qwen3-tts-frontend/src/contexts/UserPreferencesContext.tsx +++ b/qwen3-tts-frontend/src/contexts/UserPreferencesContext.tsx @@ -3,6 +3,7 @@ import { authApi } from '@/lib/api' import { useAuth } from '@/contexts/AuthContext' import type { UserPreferences } from '@/types/auth' import i18n from '@/locales' +import { loadFontsForLanguage, detectBrowserLanguage } from '@/lib/fontManager' interface UserPreferencesContextType { preferences: UserPreferences | null @@ -24,6 +25,8 @@ export function UserPreferencesProvider({ children }: { children: ReactNode }) { const fetchPreferences = async () => { if (!isAuthenticated || !user) { + const browserLang = detectBrowserLanguage() + await loadFontsForLanguage(browserLang) setIsLoading(false) return } @@ -38,9 +41,11 @@ export function UserPreferencesProvider({ children }: { children: ReactNode }) { setPreferences(prefs) setHasAliyunKey(keyVerification.valid) - if (prefs.language) { - i18n.changeLanguage(prefs.language) - } + const lang = prefs.language || detectBrowserLanguage() + await Promise.all([ + i18n.changeLanguage(lang), + loadFontsForLanguage(lang), + ]) const cacheKey = `user_preferences_${user.id}` localStorage.setItem(cacheKey, JSON.stringify(prefs)) @@ -48,8 +53,14 @@ export function UserPreferencesProvider({ children }: { children: ReactNode }) { const cacheKey = `user_preferences_${user.id}` const cached = localStorage.getItem(cacheKey) if (cached) { - setPreferences(JSON.parse(cached)) + const cachedPrefs = JSON.parse(cached) + setPreferences(cachedPrefs) + if (cachedPrefs.language) { + await loadFontsForLanguage(cachedPrefs.language) + } } else { + const browserLang = detectBrowserLanguage() + await loadFontsForLanguage(browserLang) setPreferences({ default_backend: 'aliyun', onboarding_completed: false }) } } finally { @@ -87,7 +98,10 @@ export function UserPreferencesProvider({ children }: { children: ReactNode }) { } const changeLanguage = async (lang: 'zh-CN' | 'zh-TW' | 'en-US' | 'ja-JP' | 'ko-KR') => { - await i18n.changeLanguage(lang) + await Promise.all([ + i18n.changeLanguage(lang), + loadFontsForLanguage(lang), + ]) await updatePreferences({ language: lang }) } diff --git a/qwen3-tts-frontend/src/index.css b/qwen3-tts-frontend/src/index.css index 14f64fc..415e7d1 100644 --- a/qwen3-tts-frontend/src/index.css +++ b/qwen3-tts-frontend/src/index.css @@ -1,24 +1,3 @@ -@font-face { - font-family: 'Noto Serif'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url('/fonts/noto-serif-regular.woff2') format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, - U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Noto Serif'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url('/fonts/noto-serif-sc-regular.woff2') format('woff2'); - unicode-range: U+4E00-9FFF, U+3400-4DBF, U+20000-2A6DF, U+2A700-2B73F, - U+2B740-2B81F, U+2B820-2CEAF, U+F900-FAFF, U+2F800-2FA1F; -} - @tailwind base; @tailwind components; @tailwind utilities; diff --git a/qwen3-tts-frontend/src/lib/fontManager.ts b/qwen3-tts-frontend/src/lib/fontManager.ts new file mode 100644 index 0000000..ae5f64a --- /dev/null +++ b/qwen3-tts-frontend/src/lib/fontManager.ts @@ -0,0 +1,153 @@ +type Language = 'zh-CN' | 'zh-TW' | 'en-US' | 'ja-JP' | 'ko-KR' + +interface FontConfig { + name: string + file: string + unicodeRange?: string +} + +const fontConfigs: Record = { + 'zh-CN': [ + { + name: 'Noto Serif', + file: '/fonts/noto-serif-sc-regular.woff2', + unicodeRange: 'U+4E00-9FFF, U+3400-4DBF, U+20000-2A6DF, U+2A700-2B73F, U+2B740-2B81F, U+2B820-2CEAF, U+F900-FAFF, U+2F800-2FA1F', + }, + { + name: 'Noto Serif', + file: '/fonts/noto-serif-regular.woff2', + unicodeRange: 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD', + }, + ], + 'zh-TW': [ + { + name: 'Noto Serif', + file: '/fonts/noto-serif-tc-regular.woff2', + unicodeRange: 'U+4E00-9FFF, U+3400-4DBF, U+F900-FAFF', + }, + { + name: 'Noto Serif', + file: '/fonts/noto-serif-sc-regular.woff2', + unicodeRange: 'U+20000-2A6DF, U+2A700-2B73F, U+2B740-2B81F, U+2B820-2CEAF, U+2F800-2FA1F', + }, + { + name: 'Noto Serif', + file: '/fonts/noto-serif-regular.woff2', + unicodeRange: 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD', + }, + ], + 'en-US': [ + { + name: 'Noto Serif', + file: '/fonts/noto-serif-regular.woff2', + unicodeRange: 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD', + }, + ], + 'ja-JP': [ + { + name: 'Noto Serif', + file: '/fonts/noto-serif-jp-regular.woff2', + unicodeRange: 'U+3000-30FF, U+4E00-9FFF, U+FF00-FFEF', + }, + { + name: 'Noto Serif', + file: '/fonts/noto-serif-regular.woff2', + unicodeRange: 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD', + }, + ], + 'ko-KR': [ + { + name: 'Noto Serif', + file: '/fonts/noto-serif-kr-regular.woff2', + unicodeRange: 'U+AC00-D7AF, U+1100-11FF, U+3130-318F', + }, + { + name: 'Noto Serif', + file: '/fonts/noto-serif-regular.woff2', + unicodeRange: 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD', + }, + ], +} + +const loadedFonts = new Set() + +function createFontFace(config: FontConfig): FontFace { + const descriptors: FontFaceDescriptors = { + style: 'normal', + weight: '400', + display: 'swap', + } + + if (config.unicodeRange) { + descriptors.unicodeRange = config.unicodeRange + } + + return new FontFace(config.name, `url(${config.file}) format('woff2')`, descriptors) +} + +export async function loadFontsForLanguage(language: Language): Promise { + const configs = fontConfigs[language] + if (!configs) return + + const loadPromises = configs.map(async (config) => { + const fontKey = `${config.name}-${config.file}` + + if (loadedFonts.has(fontKey)) { + return + } + + try { + const fontFace = createFontFace(config) + await fontFace.load() + document.fonts.add(fontFace) + loadedFonts.add(fontKey) + } catch (error) { + console.warn(`Failed to load font ${config.file}:`, error) + } + }) + + await Promise.all(loadPromises) +} + +export function detectBrowserLanguage(): Language { + const browserLang = navigator.language.toLowerCase() + + if (browserLang.startsWith('zh-tw') || browserLang.startsWith('zh-hk') || browserLang.startsWith('zh-mo')) { + return 'zh-TW' + } + if (browserLang.startsWith('zh')) { + return 'zh-CN' + } + if (browserLang.startsWith('ja')) { + return 'ja-JP' + } + if (browserLang.startsWith('ko')) { + return 'ko-KR' + } + + return 'en-US' +} + +export function preloadBaseFont(): void { + const baseConfig: FontConfig = { + name: 'Noto Serif', + file: '/fonts/noto-serif-regular.woff2', + unicodeRange: 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD', + } + + const fontKey = `${baseConfig.name}-${baseConfig.file}` + + if (loadedFonts.has(fontKey)) { + return + } + + const fontFace = createFontFace(baseConfig) + fontFace.load() + .then(() => { + document.fonts.add(fontFace) + loadedFonts.add(fontKey) + }) + .catch((error) => { + console.warn('Failed to preload base font:', error) + }) +} diff --git a/qwen3-tts-frontend/src/main.tsx b/qwen3-tts-frontend/src/main.tsx index ae67b55..c0f62ff 100644 --- a/qwen3-tts-frontend/src/main.tsx +++ b/qwen3-tts-frontend/src/main.tsx @@ -3,6 +3,9 @@ import { createRoot } from 'react-dom/client' import './locales' import './index.css' import App from './App.tsx' +import { preloadBaseFont } from './lib/fontManager' + +preloadBaseFont() createRoot(document.getElementById('root')!).render(