diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 6cd3521..6d84590 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -117,6 +117,7 @@ export default { recentFonts: 'Recent fonts', presetFonts: 'Preset fonts', networkFonts: 'Network fonts', + localFonts: 'Local fonts', fontSize: 'Font size', lineHeight: 'Line height (0 for default)', normalColor: 'Normal color', diff --git a/frontend/src/lang/ja.js b/frontend/src/lang/ja.js index ce2156c..7271cba 100644 --- a/frontend/src/lang/ja.js +++ b/frontend/src/lang/ja.js @@ -117,6 +117,7 @@ export default { recentFonts: '最近のフォント', presetFonts: 'プリセットフォント', networkFonts: 'ネットワークフォント', + localFonts: 'ローカルフォント', fontSize: 'フォントサイズ', lineHeight: '行の高さ(0はデフォルト)', normalColor: 'ノーマルの色', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index b2ef761..88ab5c2 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -115,6 +115,7 @@ export default { recentFonts: '最近使用的字体', presetFonts: '预设字体', networkFonts: '网络字体', + localFonts: '本地字体', fontSize: '字体尺寸', lineHeight: '行高(0为默认)', normalColor: '普通颜色', diff --git a/frontend/src/views/StyleGenerator/FontSelect.vue b/frontend/src/views/StyleGenerator/FontSelect.vue index 4403be0..495aa7c 100644 --- a/frontend/src/views/StyleGenerator/FontSelect.vue +++ b/frontend/src/views/StyleGenerator/FontSelect.vue @@ -1,6 +1,6 @@ @@ -45,6 +49,7 @@ export default { recentFonts: this.getRecentFonts(), // 这里只作为缓存,以localStorage为准 PRESET_FONTS: fonts.PRESET_FONTS, NETWORK_FONTS: fonts.NETWORK_FONTS, + localFonts: [], innerValue: [], } @@ -68,10 +73,21 @@ export default { this.addRecentFont(font) } }, + onSelectVisibleChange(visible) { + if (!visible) { + return + } + this.updateRecentFonts() + // 在这里更新第一次下拉时不会显示本地字体,但没什么好办法 + this.updateLocalFonts() + }, + updateRecentFonts() { this.recentFonts = this.getRecentFonts() }, - + async updateLocalFonts() { + this.localFonts = await fonts.getLocalFonts() + }, getRecentFonts() { return common.fontsStrToArr(window.localStorage.recentFonts || '') }, diff --git a/frontend/src/views/StyleGenerator/fonts.js b/frontend/src/views/StyleGenerator/fonts.js index f60d545..9b116e7 100644 --- a/frontend/src/views/StyleGenerator/fonts.js +++ b/frontend/src/views/StyleGenerator/fonts.js @@ -46,3 +46,24 @@ export const NETWORK_FONTS = [ 'ZCOOL XiaoWei', 'Zhi Mang Xing', ] + +let localFontsPromise = null + +export async function getLocalFonts() { + if (!localFontsPromise) { + localFontsPromise = doGetLocalFonts() + } + return localFontsPromise +} + +async function doGetLocalFonts() { + try { + return (await window.queryLocalFonts()).map(fontData => { + // 理论上应该用family,但fullName可读性更好 + return fontData.fullName + }) + } catch (e) { + console.error(e) + return [] + } +}