From 40cc29da864dc7cad026bb90292bb5ab99003914 Mon Sep 17 00:00:00 2001 From: purocean Date: Sat, 19 Sep 2026 12:01:11 +0800 Subject: [PATCH] fix: restore default terminal font when setting is empty --- src/renderer/components/Xterm.vue | 8 ++++++-- src/renderer/components/__tests__/Xterm.ts | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/renderer/components/Xterm.vue b/src/renderer/components/Xterm.vue index 829e7093..51dd29ea 100644 --- a/src/renderer/components/Xterm.vue +++ b/src/renderer/components/Xterm.vue @@ -29,6 +29,7 @@ export default defineComponent({ const domRef = ref(null) let xterm: Terminal | null = null + let defaultFontFamily: string | undefined // eslint-disable-next-line no-undef let socket: Socket | null = null let resizeObserver: ResizeObserver | null = null @@ -72,7 +73,7 @@ export default defineComponent({ return { fontSize: getSetting('terminal.font-size', 16), - fontFamily: fontFamily || undefined, + fontFamily: fontFamily || defaultFontFamily, } } @@ -100,14 +101,17 @@ export default defineComponent({ } if (!xterm) { + const { fontFamily, ...terminalOptions } = getTerminalOptions() xterm = new Terminal({ cols: 80, rows: 24, cursorStyle: 'underline', fontWeightBold: '500', - ...getTerminalOptions(), + ...terminalOptions, ...opts }) + defaultFontFamily = xterm.options.fontFamily + xterm.options.fontFamily = opts?.fontFamily || fontFamily || defaultFontFamily changeTheme() diff --git a/src/renderer/components/__tests__/Xterm.ts b/src/renderer/components/__tests__/Xterm.ts index 5d4123db..58f2d9a3 100644 --- a/src/renderer/components/__tests__/Xterm.ts +++ b/src/renderer/components/__tests__/Xterm.ts @@ -36,7 +36,7 @@ const mocks = vi.hoisted(() => ({ dispose = vi.fn() constructor (options: any) { - this.options = options + this.options = { fontFamily: 'courier-new, courier, monospace', ...options } mocks.terminals.push(this) } }, @@ -221,7 +221,7 @@ describe('Xterm', () => { mocks.settings.set('terminal.font-family', '') mocks.settingHandler({ changedKeys: ['terminal.font-size'] }) expect(term.options.fontSize).toBe(20) - expect(term.options.fontFamily).toBeUndefined() + expect(term.options.fontFamily).toBe('courier-new, courier, monospace') expect(mocks.fitAddons[0].fit).toHaveBeenCalledTimes(3) socket.handlers.get('disconnect')?.()