refactor: custom fonts

This commit is contained in:
pa
2026-03-13 22:24:41 +09:00
parent 9ac18ac79e
commit 82122a4fab
12 changed files with 389 additions and 110 deletions
+52 -2
View File
@@ -4,6 +4,8 @@ import { useI18n } from 'vue-i18n';
import { useRouter } from 'vue-router';
import {
APP_CJK_FONT_PACK_DEFAULT_KEY,
APP_CJK_FONT_PACKS,
APP_FONT_DEFAULT_KEY,
APP_FONT_FAMILIES,
SEARCH_LIMIT_MAX,
@@ -13,6 +15,7 @@ import {
THEME_CONFIG
} from '../../shared/constants';
import {
applyAppCjkFontPack,
HueToHex,
applyAppFontFamily,
changeAppThemeStyle,
@@ -55,6 +58,8 @@ export const useAppearanceSettingsStore = defineStore(
const isDarkMode = ref(false);
const lastDarkTheme = ref('dark');
const appFontFamily = ref('inter');
const customFontFamily = ref('');
const appCjkFontPack = ref(APP_CJK_FONT_PACK_DEFAULT_KEY);
const displayVRCPlusIconsAsAvatar = ref(false);
const hideNicknames = ref(false);
const showInstanceIdInLocation = ref(false);
@@ -168,6 +173,8 @@ export const useAppearanceSettingsStore = defineStore(
dataTableStripedConfig,
showPointerOnHoverConfig,
appFontFamilyConfig,
customFontFamilyConfig,
appCjkFontPackConfig,
lastDarkThemeConfig
] = await Promise.all([
configRepository.getString('VRCX_appLanguage'),
@@ -234,6 +241,11 @@ export const useAppearanceSettingsStore = defineStore(
'VRCX_fontFamily',
APP_FONT_DEFAULT_KEY
),
configRepository.getString('VRCX_customFontFamily', ''),
configRepository.getString(
'VRCX_cjkFontPack',
APP_CJK_FONT_PACK_DEFAULT_KEY
),
configRepository.getString(
'VRCX_lastDarkTheme',
fallbackDarkTheme
@@ -262,7 +274,11 @@ export const useAppearanceSettingsStore = defineStore(
fallbackDarkTheme
);
appFontFamily.value = normalizeAppFontFamily(appFontFamilyConfig);
applyAppFontFamily(appFontFamily.value);
customFontFamily.value = customFontFamilyConfig || '';
appCjkFontPack.value =
normalizeAppCjkFontPack(appCjkFontPackConfig);
applyAppFontFamily(appFontFamily.value, customFontFamily.value);
applyAppCjkFontPack(appCjkFontPack.value);
displayVRCPlusIconsAsAvatar.value =
displayVRCPlusIconsAsAvatarConfig;
@@ -508,11 +524,22 @@ export const useAppearanceSettingsStore = defineStore(
* @param value
*/
function normalizeAppFontFamily(value) {
if (value === 'custom') return 'custom';
return APP_FONT_FAMILIES.includes(value)
? value
: APP_FONT_DEFAULT_KEY;
}
/**
*
* @param value
*/
function normalizeAppCjkFontPack(value) {
return APP_CJK_FONT_PACKS.includes(value)
? value
: APP_CJK_FONT_PACK_DEFAULT_KEY;
}
/**
*
* @param value
@@ -521,7 +548,26 @@ export const useAppearanceSettingsStore = defineStore(
const normalized = normalizeAppFontFamily(value);
appFontFamily.value = normalized;
configRepository.setString('VRCX_fontFamily', normalized);
applyAppFontFamily(normalized);
applyAppFontFamily(normalized, customFontFamily.value);
}
function setCustomFontFamily(value) {
customFontFamily.value = value;
configRepository.setString('VRCX_customFontFamily', value);
if (appFontFamily.value === 'custom') {
applyAppFontFamily('custom', value);
}
}
/**
*
* @param value
*/
function setAppCjkFontPack(value) {
const normalized = normalizeAppCjkFontPack(value);
appCjkFontPack.value = normalized;
configRepository.setString('VRCX_cjkFontPack', normalized);
applyAppCjkFontPack(normalized);
}
/**
@@ -1062,6 +1108,7 @@ export const useAppearanceSettingsStore = defineStore(
themeMode,
isDarkMode,
appFontFamily,
appCjkFontPack,
displayVRCPlusIconsAsAvatar,
hideNicknames,
showInstanceIdInLocation,
@@ -1142,6 +1189,9 @@ export const useAppearanceSettingsStore = defineStore(
setNavCollapsed,
toggleNavCollapsed,
setAppFontFamily,
customFontFamily,
setCustomFontFamily,
setAppCjkFontPack,
setThemeMode,
toggleThemeMode
};