From c79120b99cd68b6ed438979e2d53360bc4a61576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 16 Jul 2023 20:55:22 +0800 Subject: [PATCH] TerminalFont (macOS): detect non-ascii font of iTerm --- src/detection/terminalfont/terminalfont.h | 1 + src/detection/terminalfont/terminalfont_apple.m | 8 ++++++++ src/modules/terminalfont/terminalfont.c | 10 +++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/detection/terminalfont/terminalfont.h b/src/detection/terminalfont/terminalfont.h index 9b15dede4..936cdeb4f 100644 --- a/src/detection/terminalfont/terminalfont.h +++ b/src/detection/terminalfont/terminalfont.h @@ -10,6 +10,7 @@ typedef struct FFTerminalFontResult { FFstrbuf error; FFfont font; + FFfont fallback; } FFTerminalFontResult; bool ffDetectTerminalFont(FFTerminalFontResult* result); diff --git a/src/detection/terminalfont/terminalfont_apple.m b/src/detection/terminalfont/terminalfont_apple.m index c89b4135f..871462109 100644 --- a/src/detection/terminalfont/terminalfont_apple.m +++ b/src/detection/terminalfont/terminalfont_apple.m @@ -38,6 +38,14 @@ static void detectIterm2(FFTerminalFontResult* terminalFont) return; } ffFontInitWithSpace(&terminalFont->font, normalFont.UTF8String); + + NSNumber* useNonAsciiFont = [bookmark valueForKey:@"Use Non-ASCII Font"]; + if(useNonAsciiFont.boolValue) + { + NSString* nonAsciiFont = [bookmark valueForKey:@"Non Ascii Font"]; + if (nonAsciiFont) + ffFontInitWithSpace(&terminalFont->fallback, nonAsciiFont.UTF8String); + } return; } diff --git a/src/modules/terminalfont/terminalfont.c b/src/modules/terminalfont/terminalfont.c index 6e03ed45c..9e9b683d8 100644 --- a/src/modules/terminalfont/terminalfont.c +++ b/src/modules/terminalfont/terminalfont.c @@ -11,6 +11,7 @@ void ffPrintTerminalFont(FFTerminalFontOptions* options) { FFTerminalFontResult terminalFont; ffFontInit(&terminalFont.font); + ffFontInit(&terminalFont.fallback); ffStrbufInit(&terminalFont.error); if(!ffDetectTerminalFont(&terminalFont)) @@ -22,7 +23,13 @@ void ffPrintTerminalFont(FFTerminalFontOptions* options) if(options->moduleArgs.outputFormat.length == 0) { ffPrintLogoAndKey(FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs.key, &options->moduleArgs.keyColor); - ffStrbufPutTo(&terminalFont.font.pretty, stdout); + ffStrbufWriteTo(&terminalFont.font.pretty, stdout); + if(terminalFont.fallback.pretty.length) + { + fputs(" / ", stdout); + ffStrbufWriteTo(&terminalFont.fallback.pretty, stdout); + } + putchar('\n'); } else { @@ -37,6 +44,7 @@ void ffPrintTerminalFont(FFTerminalFontOptions* options) ffStrbufDestroy(&terminalFont.error); ffFontDestroy(&terminalFont.font); + ffFontDestroy(&terminalFont.fallback); } void ffInitTerminalFontOptions(FFTerminalFontOptions* options)