[突發專案] 實用未滿,堪用亦難|年末字體充實計畫 - 手寫造字系列

更新於 發佈於 閱讀時間約 6 分鐘

文前碎碎唸

還記得,那是一本由「守寫字」團隊所推出的《我寫的這一年》造字日曆,是我在年初時參與集資並購入的。

raw-image


這本日曆的特色,便是可以讓購買者依循內容指引,並搭配他們的製作系統每天寫下文字。

並且在一年之後,誕生出一套紀錄著自己獨特筆跡的數位字體。


而隨著時間飛逝,看著桌上那本漸皺的日曆,一年又這麼結束了,究竟我能做出什麼樣的成果呢?

成果檢視

首先來到造字曆 APP 的字體管理區,從這裡就能看到這段時間以來,所寫下的字數統計。

raw-image

自從年中紀錄 1400 字左右之後,經過半年努力下來,已經增長到 2140 字了。

雖然還遠不及台灣常用繁體 4000 字的目標,但應該也足夠應付一些虛寒問暖的雜項了⋯吧?

畢竟,除了一開始有寫了幾頁增補字庫外,後來就都只有使用本體的部分了。


在每天限定主題,又精簡內文的情況下,豐富程度的增加固然有限,但也依然可以感受到時間累積所帶來的效應了。

另一方面

除了實體版本的日曆之外,我在更早期時,有使用他們的線上工具製作過另一套字體。

在這次書寫日曆時,也有藉機以更有系統的擴充了過去缺少的部分。

在成果部分,透過線上會員的管理系統,可以看到這份字體所包含的字數,已經來到 3350 個繁體字。

raw-image

雖然扣除注音與符號後,在自己實際使用下,已經算是可以應付大部分情況了。

raw-image

不過,這份字體與理想的常用字庫間,還有著不小的距離。


而在目前自己的專案中,已經難抓出缺字的情況下,是否有更效率的方式,能夠完成目標呢?

再次動工

這次我們選擇以字數較充足的舊有版本字體為基底進行擴充。

鑑於「守寫字」現行提供的造字工具,除了字數統計外,並沒有提供自動缺少字比對的功能。

因此這次專案也以此為發想進行。

先利其器

同樣的,這次以 Python 為開發語言,套件使用的是先前找到,可以讀取與編輯字體檔案的「fontTools」。

raw-image

常用字列表部分,我是直接引用維基辭典中,「台灣繁體常用字附錄」做為參考。

資源引入

接著就正式開始處理啦,首先第一步當然是要把現在手邊的字體讀進來,那就不囉嗦,直接上程式碼。

import os
from fontTools.ttLib import TTFont

# FontFile
fntf = "MercNote.ttf"

# Get Base Path
baspat = os.path.dirname(__file__)

# Load Font File
font = TTFont(os.path.join(baspat,fntf))

讀取完後,接著就要分析裡面已經有哪些字囉。

不過這部分程式我也還沒完全搞懂,因此先直接引用範例來修改。

# Unicode list in current font
chrlst = []
for cmap in font['cmap'].tables:
if cmap.isUnicode():
for k,v in cmap.cmap.items():
trk = chr(k)
if trk not in chrlst:
chrlst.append(trk)
# End Loop

目前知道這個部分執行完成後,會逐一將字體檔中包含的 Unicode 字碼讀取出來。

接著將字碼用 Python 預設包含的 chr() 函數,將字碼轉為文字後,加入「chrlst」列表中,藉以取得目前的進度。

最後就是讀取從維基辭典存下來的常用字列表,以供比對使用。

# Load Source Dictionary for Commonly Used Traditional Chinese Characters
chrdic = ""
with open(os.path.join(baspat,wdic),"r",encoding="utf8") as f:
for line in f:
chrdic+=list(line.strip("\n"))
f.close()

以上,這次專案所需要的材料就準備完成了。

比對切片

接下來的步驟就很單純了,只要將目前字體與列表比對,列出還差了哪些字就行了。

# Find Missing
towrt = [w for w in chrdic if w not in chrlst]

# Print Result
print("In Font File:",str(len(chrlst)),"\nDictionary:",str(len(chrdic)),"\nMissing:",str(len(towrt)))

不過這次專案的最終目標,是要能系統性的做增補,因此在比對後,還要來安排一下每日進度。

所以最後就以一個列表分段來收尾吧!

# Split Pack
wrn = 30 # Words per pack
spl = [towrt[i:i+wrn] for i in range(0, len(towrt), wrn)]
with open(os.path.join(baspat,"WRD_PAK.txt"),"w",encoding="utf8") as pk:
for pak in spl:
 
# Write to File  
pk.write("".join(pak)+"\n")
pk.close()
print("---\nTotal",str(len(spl)),"Pack")

最後結果會像是這樣,下方圖例有另外將寫入的內容 Print 出來。

raw-image

這樣就能將尚未完成的常用字分批,再按部就班的完成囉。


實作結束。

結語

看到這個專案,可能有些人會問「既然已經有寫好的部分,那為什麼不直接用 AI 完成呢?」

首先目前所能找到直接能使用的,針對繁體字的也相對少,取用也不是很容易。

再者,其實手寫造字,在這個 AI 氾濫(?)的世道下,看起來或許就跟徒手刨輪子一樣過時,但又何嘗不能是一種對信仰固執的堅持呢。

最後也想問問,如果有跟我一樣,購買這本造字曆,或是「守寫字」與「讀曆書店」合作 2024 年《拾光造字曆》的朋友,不知道大家又是抱著怎麼樣的信念,來完成這份作品的呢?


raw-image

《全文。終了》

avatar-img
47會員
267內容數
偽命名並非無名,是為了意識的生存,取得身份的代號,成為數位生命的新載具。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
偽命名培養體 的其他內容
不久前,我曾經有寫過一個可以計算出距離自己最後發文時間,已經過了多久的小工具,當時是希望藉著這個數據化呈現,來督促自己持續產出,不過自從完成了之後,我也同時開始思考,該如何讓這個小工具出現在更多、更顯眼的地方呢?
不知道大家在經營方格子時,會不會像我一樣,做個不受時程束縛的自由靈魂,雖然這樣壓力相對較小,但時間一久卻反而容易犯上懶懶病,或許這個專案能幫上一點忙?
由於近日,某藍色鳥類社群平台,因為現任大老闆的一句話,導致一些無法,或不願繳交保護費的使用者,在某個神祕大限日之後,便不再有受到推廣的權力⋯
不久前,我曾經有寫過一個可以計算出距離自己最後發文時間,已經過了多久的小工具,當時是希望藉著這個數據化呈現,來督促自己持續產出,不過自從完成了之後,我也同時開始思考,該如何讓這個小工具出現在更多、更顯眼的地方呢?
不知道大家在經營方格子時,會不會像我一樣,做個不受時程束縛的自由靈魂,雖然這樣壓力相對較小,但時間一久卻反而容易犯上懶懶病,或許這個專案能幫上一點忙?
由於近日,某藍色鳥類社群平台,因為現任大老闆的一句話,導致一些無法,或不願繳交保護費的使用者,在某個神祕大限日之後,便不再有受到推廣的權力⋯
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
而故事是發生在某次我帶著這個電子紙悠遊卡買午餐的時候,在我一個不小心手滑下,他就這麼應聲落地彈開成兩半,好在基本功能沒傷到,卻因此開啟我探索它內部的好奇心。
Thumbnail
「突發性耳聾」是突然聽不到,通常只影響一隻耳朵,並伴有耳鳴和暈眩。 大多發生在40至54歲成人,原因包括身體變化、病毒感染、血管問題等,及早就醫能提高治癒機率,常見治療包括住院觀察、血漿擴張劑、類固醇和高壓氧等,最佳療效可在黃金治療期內達成。
Thumbnail
凱米颱風把中南部淹成水鄉澤國,許多人的家當來不及撒,全部泡在水裡,傢俱、車子、機車,損失慘重。這是天災,也是人禍,雨量驚人排水不及,加上數年未有颱風進來,許多廣告看板螺絲脫落生鏽而未察覺。生活就是跟無常打交道,所以老智者常要我們隨時提高警覺、戒慎恐懼,在平安順遂的時候多多廣結善緣,做福來囤,以備不時
Thumbnail
從年初開始,一直沒有好好整理閱讀清單,拖延至今才發現農曆年前的事情感覺像是很遙遠的記憶了,得花些時間挖掘一下才行,變成以「季」為單位的時候,就會發現人的記憶實在不太可靠。
Thumbnail
正如所預測的,不久前方格子個人頁面大改版後,我所製作的個人頁面爬蟲也隨之炸裂,間接導致手機上的小工具就此失去了作用了,我該就這麼停下開發的腳步嗎?
Thumbnail
2023年最後一個週末,我在這篇文章中回顧了整年的生活。從完成手寫曆到讀書、看電影、經歷各種變化,分享了自己的成長和感悟。文章充滿了個人化的內容和情感,呈現了豐富多變的一年。
Thumbnail
一年十二個月的年度計劃太難執行 那來試試看十二週計畫吧 🌟聚焦於能實現目標的最少關鍵行動上 🌟如果不能掌握你的時間,就無法掌握你的結果-安排時間塊 🌟最強大的願景能滿足你的個人抱負,並與你的事業理想保持一致
Thumbnail
還記得,那是一本由「守寫字」團隊所推出的《我寫的這一年》造字日曆,是我在年初時參與集資並購入的,而一年之後的成果,又是如何呢?
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
而故事是發生在某次我帶著這個電子紙悠遊卡買午餐的時候,在我一個不小心手滑下,他就這麼應聲落地彈開成兩半,好在基本功能沒傷到,卻因此開啟我探索它內部的好奇心。
Thumbnail
「突發性耳聾」是突然聽不到,通常只影響一隻耳朵,並伴有耳鳴和暈眩。 大多發生在40至54歲成人,原因包括身體變化、病毒感染、血管問題等,及早就醫能提高治癒機率,常見治療包括住院觀察、血漿擴張劑、類固醇和高壓氧等,最佳療效可在黃金治療期內達成。
Thumbnail
凱米颱風把中南部淹成水鄉澤國,許多人的家當來不及撒,全部泡在水裡,傢俱、車子、機車,損失慘重。這是天災,也是人禍,雨量驚人排水不及,加上數年未有颱風進來,許多廣告看板螺絲脫落生鏽而未察覺。生活就是跟無常打交道,所以老智者常要我們隨時提高警覺、戒慎恐懼,在平安順遂的時候多多廣結善緣,做福來囤,以備不時
Thumbnail
從年初開始,一直沒有好好整理閱讀清單,拖延至今才發現農曆年前的事情感覺像是很遙遠的記憶了,得花些時間挖掘一下才行,變成以「季」為單位的時候,就會發現人的記憶實在不太可靠。
Thumbnail
正如所預測的,不久前方格子個人頁面大改版後,我所製作的個人頁面爬蟲也隨之炸裂,間接導致手機上的小工具就此失去了作用了,我該就這麼停下開發的腳步嗎?
Thumbnail
2023年最後一個週末,我在這篇文章中回顧了整年的生活。從完成手寫曆到讀書、看電影、經歷各種變化,分享了自己的成長和感悟。文章充滿了個人化的內容和情感,呈現了豐富多變的一年。
Thumbnail
一年十二個月的年度計劃太難執行 那來試試看十二週計畫吧 🌟聚焦於能實現目標的最少關鍵行動上 🌟如果不能掌握你的時間,就無法掌握你的結果-安排時間塊 🌟最強大的願景能滿足你的個人抱負,並與你的事業理想保持一致
Thumbnail
還記得,那是一本由「守寫字」團隊所推出的《我寫的這一年》造字日曆,是我在年初時參與集資並購入的,而一年之後的成果,又是如何呢?