使用FIGlet創建字體藝術 - Spectre Console系列
Spectre Console是一個.NET程式庫,旨在增強控制台應用程式,使其具備豐富的文本、面板、表格、進度條,甚至是ASCII文字藝術。 您可以為所顯示的資料添加顏色、對齊和視覺結構,而不再局限於簡單的黑白輸出。 其最吸引人的功能之一是Spectre Console Figlet,允許您使用經典的Figlet字體格式渲染大型文本橫幅。
在本文中,我們將透過Tim Corey的影片"Creating Word Art with Figlet - Spectre Console Series"深入瞭解這個功能。
引入Spectre Console中的Figlet
在0:00時,Tim提醒觀眾,"Spectre Console允許您將C#控制台應用程式轉變為視覺上吸引人且資訊豐富的應用程式。"他描述該程式庫為構建全功能命令行工具提供了一種方式,具備面板、表格、進度指示器和其他服務,而不是手動編寫ANSI代碼。
在0:16時,他說,"在這一課中,我們將使用一個叫Figlet的系統創建ASCII文字藝術。"Figlet已經存在了幾十年,是一種使用figlet字體文件(通常具有.flf擴展名)的方式,將文本渲染為橫幅風格的ASCII藝術。 Spectre Console默認內建一個Figlet字體,但它也可以加載其他字體。 程式庫將此功能包裝在一個名為FigletText的類中(有時稱為Spectre Figlet Text物件),您可以將其作為新實例創建,然後進行樣式化。
Tim在0:22時指出,此範例的源代碼鏈接到影片描述中,以便觀眾可以下載並跟隨學習。
第一個例子:內嵌Spectre Console Figlet文本
在0:38時,Tim從他所稱的"簡單的內嵌方式"開始。這是您創建和渲染Spectre Console Figlet Text物件的單句方式:
AnsiConsole.Write(
new FigletText("Hello")
.Centered()
.Color(Color.Red)
);
AnsiConsole.Write(
new FigletText("Hello")
.Centered()
.Color(Color.Red)
);
在0:46時,Tim解釋他在創建一個帶有字串參數"Hello"的新FigletText實例。 此參數是要渲染的文本。
在0:53時,他直接在物件上鏈接樣式方法。 首先在1:00時用.Central()置中,將ASCII橫幅置中對齊於可用的列。 然後在1:02時,使用.Color(Color.Red)指定顏色——在這個例子中是紅色作為強調色。
當Tim在1:12時運行此代碼時,控制台顯示了一個粗體、紅色的ASCII"HELLO"以內建Figlet字體格式。 這是一種快速方式,可為控制台應用程式添加大型標題或頁眉。

第二個例子:重用FigletText物件
在1:22時,Tim展示了第二種模式:而不是內嵌創建Figlet文本,您可以先創建一個變數。這樣就更容易設置或存儲屬性、更改樣式或重用相同的物件。
var figlet = new FigletText("World");
figlet.Centered();
figlet.Color(Color.Red);
AnsiConsole.Write(figlet);
var figlet = new FigletText("World");
figlet.Centered();
figlet.Color(Color.Red);
AnsiConsole.Write(figlet);
在1:28時,Tim將字串"World"創建為新實例。 在1:41時,他調用了.Centered()置中。 在1:44時,他再次設置了顏色——他開玩笑地說"就選紅色吧,為什麼不呢?"——然後在1:59時用AnsiConsole.Write(figlet);將物件寫入控制台。
在2:04時運行時,這顯示了"WORLD"在之前的"HELLO"下方變成大的ASCII藝術。 這表明該功能顯示了兩個單獨的塊,因為您調用了兩次Write。
瞭解Write和Figlet的運作方式
Tim在2:10時暫停,提供了一個有關Spectre Console如何渲染Figlet文本的重要細節。 通常,AnsiConsole.Write不會像WriteLine一樣附加換行符。 但對於某些可渲染物件—例如FigletText或Panel—Spectre Console自動用換行符終止塊,以確保顯示正確。
他在2:20時解釋,字串的長度也可能根據控制台窗口的寬度或字體文件引起換行,但這與換行符行為是分開的問題。 這對於構建命令系統或編寫多個標題、表格或進度條的腳本的使用者來說是有用的背景:您不能依賴Write與普通字串完全一致。
樣式選擇:顏色和更多
在2:53時,Tim指出,您不僅限於紅色作為指定顏色。 您可以使用綠色、白色、黃色或程式庫支援的任何顏色:
figlet.Color(Color.Yellow);
figlet.Color(Color.Yellow);
他在3:00時指出,您還可以"使其閃爍"並套用其他樣式,雖然他在這個簡短的課程中沒有詳述每個選項。 關鍵是FigletText物件公開了可在運行時設置或切換的公共屬性(例如Color)。

這顯示了如何輕鬆選擇不同的字串和顏色,以在您的控制台應用程式內創建品牌標題、提示或資料區標題。
Figlet字體和文件
儘管Tim保持此範例簡單,但其底層系統使用figlet字體格式(.flf文件)來渲染每個字符。 Spectre Console包含一個默認的字體值(稱為"Standard"),但您可以將FigletText構造函數指向不同的figlet字體文件,從而完全改變您的ASCII藝術的外觀。
這使您有可能開啟自定義字體的路徑,將其新增至您的專案,然後返回完全不同風格的橫幅。 這在Tim的簡短影片中未顯示,但它是他正在演示的相同API的一部分。
在控制台應用程式中的實用用途
Tim在3:12時總結道,提醒觀眾Figlet可以用來創建有趣的應用程式標題。 結合Spectre Console的其他功能—如顯示資料庫資料的表格、用於長時間運行任務的進度條以及用於分組資訊的面板—FigletText可以幫助您構建一個系統感覺精緻的命令系統。
例如,您可以使用Figlet文字來:
-
在工具或腳本的開始顯示大標題或版本號碼。
-
在檢索到的資料表格上方顯示區段標題。
-
提供強調色以突出警告或成功消息。
- 在多步驟提示或服務中分隔不同的操作。
由於FigletText是一個可渲染的物件,您可以將其存儲在變數中,設置或更改其屬性(顏色、對齊、文字字串),然後多次寫入。
總結
這課程雖然簡短,但它展示了如何使用Spectre Console的Figlet支援來立即為您的控制台輸出添加風格。
如果您想要更詳細的資訊,Tim建議訪問源代碼鏈接和Spectre Console文檔。 那裡您還可以下載其他Figlet字體,如果您想嘗試不同的風格。
Tim Corey影片的要點
-
Spectre Console Figlet允許您使用FigletText物件渲染ASCII橫幅。
-
您可以內嵌創建或作為新實例設置其屬性,然後寫入。
-
它預設使用內建Figlet字體,但可以加載自定義.flf字體文件。
-
.Centered()和.Color(Color.Red)是可套用的樣式範例。
-
AnsiConsole.Write自動為Figlet文字添加換行符。
- 此功能非常適合在控制台應用程式中用作標題、標題或區段間隔。
通過跟隨Tim Corey的影片,您可以立即開始使用Spectre Console的Figlet支援來增強自己的命令行工具。 無論您是在顯示檢索到的資料、編寫提示,還是僅僅為腳本添加風格,FigletText都為您的控制台提供了大膽、色彩豐富的邊緣,僅需極少的代碼。
