vYinn 開源古籍印章工具,把每個篆字當獨立圖層逐字校位

vYinn 是 651 顆星的開源古籍印章工具,用 Perl 寫成、MIT 授權,把每個篆字當獨立圖層逐字校座標,再用擴散、破殘斑點與宣紙背景做出古籍質感。這篇拆解它的座標級排版工作流,並整理三個採用前的硬邊界:預設字型不在 repo 裡、使用說明停在 v1.0、同一份設定每次跑出的做舊斑點都不同。

用 AI 摘要這篇文章:

要一張印章圖,線上產生器幾秒鐘就能交貨:打幾個字、挑樣式、下載 PNG,結束。先前介紹過的 Brat Generator 屬於這一路,三十秒內給你一張夠用的文字圖。但如果你想做的事情是古籍復刻等級的鈐印,印文要按篆刻慣例由右往左排、印泥邊緣要有滲墨的毛邊、蓋到宣紙上要透出紙紋,一鍵產生器的模板就到不了這個深度。vYinn 走的是另一條路:一套在 GitHub 上累積 651 顆星的開源命令列工具,MIT 授權,用 Perl 寫成,把「做一方印」變成一場逐字校位的排版工程。這篇整理它的實際運作方式,以及動手前值得先知道的三件事:預設字型不在檔案裡、使用說明落後程式一個版本、同一份設定每次跑出的做舊斑點與紙紋位置都不一樣。

它替誰解決什麼:古籍數位復刻的最後一枚圖章

vYinn 的作者經營「兀雨書屋」,長期投入中文古籍數位復刻計畫。這個計畫的主力工具是 vRain,一套同樣以 Perl 寫成的古籍刻本風格直排電子書製作器,在 GitHub 上有 1,648 顆星;vYinn 則是配套的印章工具,651 顆星(兩個數字截至 2026 年 8 月)。兩者兜起來是一條完整的工作流:vRain 把古籍重排成直排電子書,vYinn 產出藏書印、名號印這類印章的透明底 PNG,疊到書頁上,復刻本就有了手工鈐印的質感。README 裡一句話交代了它的中文名:vYinn is 殷人。

repo 裡的示範作品把目標族群的審美攤得很開。其中一份示範設定刻的是《紅樓夢》甲戌本卷首那首題詩的後四句,從「謾言紅袖啼痕重」到「十年辛苦不尋常」,28 個字排成 4 行 7 列的陰文印。會想為這 28 個字刻一方印的人,要的就是古籍的味道。這裡的陰文指文字刻凹進去、蓋出來字是紙色的印;陽文反過來,文字凸起、吃印泥色,蓋出來是紅字。兩種 vYinn 都支援,印框有圓形、方形、圓角方形、橢圓形四種可選,印泥顏色開放自訂,設定檔的預設值則是偏深的棕紅色。

座標級排版才是它真正的產品

整套工作流繞著設定檔轉。第一次使用先跑 new_config.pl,用參數指定印面要幾行幾列,腳本會從空白設定檔長出每個字的初始座標;接著打開設定檔填印文、調座標;最後以 vYinn.pl 帶上設定檔名稱出圖,每次執行自動產出三種檔案:一張帶量測輔助線的測試圖、一張透明底的最終 PNG、一張疊在宣紙背景上的效果預覽圖。

它對排版的控制到了單一字元的粒度。設定檔裡有三組平行陣列,分別給每個字的座標、每個字的字級、每個字的寬高拉伸比與旋轉角度,連描邊寬度都是逐字指定的。主程式執行時,每個字先畫在自己的透明圖層上,靠 FreeType 讀字型度量對齊基準,再按各自座標貼進印面。座標陣列的順序對應印章右起第一列,也就是傳統印章由右往左、由上往下的讀法,這個慣例直接寫進座標生成的邏輯裡。同樣為中文閱讀排版而生、原生支援直書與毛筆行書字體的 書摘卡片產生器,控制單位停留在版面層;vYinn 把控制單位壓到字元層,這是它在同類工具裡的位置。

拿示範設定裡那方 28 字印來看,最容易感受這個粒度。座標陣列的第一行對應印面最右一欄的四個字,x 座標落在 668 上下;第二行退到約 600,一行一行往左退,最後一行的 266 是最左欄;每一欄四個字的 y 座標從 242 排到 598。哪個字覺得擠了、歪了,就改那一組數字,下一輪測試圖立刻反映。印框同樣全靠數字:1,000 乘 1,000 的畫布上放 500 乘 500 的印框,邊框線寬、框線與文字的間距、圓角半徑各是一個參數,陰文與陽文的框線還能分開設。逐字變形參數裡的描邊也有學問:填正數是加粗,填 -1 則反向把筆畫些微抽細,篆字筆畫疏密落差大時,這一欄就是微調視覺重量的旋鈕。

程式內部有個乾淨的設計:設計階段一律用黑與白工作,黑色代表透明、白色代表印泥,黑白分明方便對位量測;輸出前一刻才做二值化,把白色換成指定的印泥色、黑色換成透明背景。做舊效果也分層處理:印框與文字可以各有各的邊緣擴散參數;隨機生成的破殘斑點在上色前先融進印面,斑點是帶隨機旋轉的橢圓,經過油墨化與模糊處理,看起來就像印泥沒吃勻的自然殘缺;整體模糊與油墨感則留到輸出前一刻。

官方輸出與那張值得細看的測試圖

repo 複製下來約 93MB,字型佔 21MB,示範圖片與一段約 28 秒的操作影片佔 17MB;yins 目錄下有多組官方輸出,從 4 字小印到 28 字詩句印都有,透明 PNG 與宣紙預覽成對出現。判斷成品水準,直接看這些圖最快。

TechMoon 精選圖|vYinn 官方示範圖,左側為黑底白字的印章設計圖層與灰色量測格線,右側為紅色印章蓋在宣紙背景上的效果預覽Pin
vYinn 官方示範:左側是設計圖層與量測格線,右側是宣紙背景的效果預覽。

測試圖值得單獨講。每次執行時畫布會被橫向拉成兩倍寬:左半邊是工作區,灰色網格標示間距、紅色格線標出行列,右下角一個資訊盒列著畫布尺寸、印框尺寸、邊框線寬、字數行列、陰文或陽文,等於把整份設定檔視覺化在圖上,校對座標時不必回頭翻文件;右半邊是宣紙背景的效果預覽,右下角帶版本號與時間戳。浮水印與時間戳只出現在測試圖,最終輸出的透明 PNG 是乾淨的,可以直接拿去用。

TechMoon 精選圖|vYinn 每次執行自動產出的測試圖,左半為灰色網格、紅色行列格線與座標標註及右下角參數資訊盒,右半為宣紙效果預覽與版本時間戳Pin
每次執行自動產出的測試圖:格線、座標標註與參數資訊盒都在左半,右半是宣紙預覽。

下載後第一件事:換掉預設字型

空白設定檔 blank.cfg 裡,字型欄位預設指向方正的小篆體 .ttf 檔。問題在於 repo 裡沒有這個檔案:.gitignore 明列排除所有 .ttf,fonts 資料夾裡唯一的字型是崇羲篆體(chongxi_seal.otf),一份字型資訊標註中央研究院版權、收錄 11,608 個字形的篆書字型,約 21MB。主程式開跑前會先檢查字型檔存在與否,找不到就中止。換句話說,照預設值第一次執行必然停在這裡,第一個動作一定是把字型欄位改成內建的崇羲篆體,或者自己放一份小篆體進去。

字型授權是商用前要自己理清的帳。repo 只附了工具本體的 MIT 條款,崇羲篆體僅有字型檔內的版權標註,沒有隨附授權說明;方正字型則自成一套商用授權體系。要找授權清楚、可商用的字型,法國非營利字體鑄造廠 Velvetyne 是一個現成來源,全部採 SIL OFL 授權,可商用可修改。中文字型的選擇也直接限制輸出成品,這在 Text To Svg 的實測裡已經看過一次:當時中文字型只有簡體標準的 Noto Sans SC 可用,繁體排版就吃虧。

使用說明停在 v1.0,程式已經走到 v1.1

README 的使用說明教人帶 -t 參數畫設計側圖,但 v1.1 主程式的參數解析只剩 -h 與 -c 兩個選項,-t 在改版時已經移除,程式裡甚至還留著一段以 -t 為條件的單字匯出邏輯,永遠不會觸發。照 README 的寫法跑不起來,程式只會停在缺少設定檔參數的錯誤訊息;反過來,說明全文沒有提過 v1.1 必帶的 -c,這個參數只出現在程式自己的錯誤與求助訊息裡。這也不是單一筆誤:說明把主程式檔名寫成小寫 v 開頭的 vyinn.pl,實際檔案是 vYinn.pl,在 macOS 上不分大小寫相安無事,換到 Linux 就找不到檔案;基本功能清單說印框支援圓形、方形、橢圓三種,設定檔與程式碼裡實際是四種,多的正是圓角方形,而示範設定用的恰恰就是它。

文件跟不上程式,對一人專案來說是常態,而且落差有跡可循。作者在 README 的更新紀錄自述,v1.1 把測試模式這個步驟拿掉了,測試圖改成每次執行自動附帶,右側還擴出效果預覽;更新紀錄寫到了,使用說明這一段卻停在舊介面。參數分類也是同一個情況:更新紀錄說參數重整成畫布、匯出、測試、印框、印文、效果等幾類,使用說明仍照舊只提四類。開發腳步往前走了,文件沒跟上。v1.1 在 2025 年 9 月上線,之後的動態只有一次 2026 年 6 月的檔案上傳;repo 至今沒有 release 標籤,累積的 issue 只有一筆,2026 年 6 月開的,作者還沒有回覆。採用時把 README 當導論、把設定檔與程式碼當最終依據,會比反過來安全。

完全離線,但同一份設定刻不出第二方一樣的印

三支腳本引用的模組加起來只有影像處理、字型度量、參數解析、時間、編碼五類,沒有任何網路功能。沒有遙測、沒有更新檢查、沒有雲端服務,蓋印用的字型與宣紙背景圖都在本機。實際意義是這個工具不挑環境也不留痕:斷網的筆電、離線的工作站都能跑,沒有帳號要註冊、沒有金鑰要申請、沒有使用量回報。對處理古籍掃描這類可能涉及館藏授權的素材,全程本機處理也少了素材外流的顧慮。

自然感與可重現性在這裡是一體兩面。破殘斑點的位置、大小、旋轉角度,以及宣紙背景的裁切偏移,全部由亂數決定,而整個專案沒有提供隨機種子參數。同一份設定檔跑十次,會得到十張斑點分布與紙紋位置都不同的印。對追求每方印獨一無二的手作感,這是加分;對講究數位復刻可考證、可重製的場景,這代表滿意的輸出必須立刻存檔,因為它無法再現。

想拿現成圖的人繞道,想逐字校位的人從換字型開始

vYinn 的門檻很清楚:要裝 Perl 環境與 Image::Magick、Font::FreeType 兩個套件,要習慣改設定檔而非點介面,產出的好壞取決於你願意花多少時間調座標。換到的是別處少見的控制粒度,以及針對古籍質感設計的做舊效果鏈。把場景講具體一點:整理家譜或佛書想在復刻頁面加一方藏書印、書法教學要蓋印效果的示意圖、文史工作者重製古籍電子書,這些工作都用得上它的座標粒度;做海報或社群圖片只想添一個印章裝飾,開瀏覽器點兩下就有結果的路徑比較省事。

決定試用的話,起步順序是:裝好 Perl 與兩個套件,複製 repo,把設定檔的字型換成內建的崇羲篆體,跑 new_config.pl 生座標,填印文後執行主程式,對照測試圖反覆修座標。repo 另附一組 y2y 腳本做反向的事:餵一張既有的印章圖片進去,可以先旋轉矯正,框出範圍去背,輸出成透明底 PNG,方便把古書上現成的印搬進自己的復刻本。授權面,工具本體 MIT,字型授權自理,專案由作者一人維運,v1.1 是目前的最終版本。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 927

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...