using FIGlet 建立字圖藝術 - Spectre Console 系列
[[academy-video-youtube({"vid": "1S6nLwUNCV0", "start_time": "0", "title": "Creating Word Art with FIGlet - Spectre Console Series", "creator": "Tim Corey", "length": "3m 47s"})]]
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 時,首先 .Centered() 用於對 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 時執行時,這會在之前的 "HELLO" 下面顯示"大型 ASCII 藝術的"WORLD"。 這顯示鏈結函式寫入了兩個獨立的模塊,因為您已調用 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 物件提供了許多公共屬性(如顏色),您可以在運行時設置或切換。

這顯示了如何輕鬆選擇不同的字串和顏色,以建立品牌標題、提示或資料部分名稱在您的控制台應用程式。
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 都能為您的控制台提供粗體、彩色的優勢,只需少量程式碼。

