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

更新於 發佈於 閱讀時間約 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
留言分享你的想法!
Thomas Tang-avatar-img
2023/12/31
恭喜你這是長達一年的計畫!
Mercteria-avatar-img
發文者
2024/01/01
Thomas Tang 雖然還沒真正完成🤣
EC3-avatar-img
2023/12/31
如果有一群人去研發出一款App。可以製作出個人特色的手寫字。一定會有人多人去下載。因為可以運用的範圍很廣。包括OS 系統與 Android 系統。
Mercteria-avatar-img
發文者
2023/12/31
EC3 其實有喔,甚至也有我文末提到以 AI 技術自動補完的。不過還是以是針對英文及簡體中文為大宗,能對應繁體中文的(至少以我個人認知)還是蠻罕見的。
希雅 Sya-avatar-img
2024/01/01
喜歡手造字!有溫度多了!
Mercteria-avatar-img
發文者
2024/01/01
Monica Sya 小蝦 真的,而且如果還能把寫下的字,用在往後創作裡的話,也更能凸顯自己的特色XD。
吳哲瑜-avatar-img
2025/02/04
已經2025年了我才看到這個造字曆,想購買,沒想到網路上根本沒看到半點分享,守寫字的網頁版超多廣告,想說買app但不知道還有沒有支援
Mercteria-avatar-img
發文者
2025/02/04
吳哲瑜 這個我真的也無法確定,可能需要詢問《守寫字》官方了😅 當初購入日曆時,也是透過隨附的序號才能註冊使用,另外官網造字,我個人使用經驗是進到編輯畫面後,其實廣告並沒有太過影響,只是相較於日曆輔助會比較沒效率而已,因為只能自行輸入文字比對增補。
avatar-img
偽命名培養體
47會員
314內容數
偽命名並非無名,是為了意識的生存,取得身份的代號,成為數位生命的新載具。
偽命名培養體的其他內容
2024/11/25
而故事是發生在某次我帶著這個電子紙悠遊卡買午餐的時候,在我一個不小心手滑下,他就這麼應聲落地彈開成兩半,好在基本功能沒傷到,卻因此開啟我探索它內部的好奇心。
Thumbnail
2024/11/25
而故事是發生在某次我帶著這個電子紙悠遊卡買午餐的時候,在我一個不小心手滑下,他就這麼應聲落地彈開成兩半,好在基本功能沒傷到,卻因此開啟我探索它內部的好奇心。
Thumbnail
2024/02/02
正如所預測的,不久前方格子個人頁面大改版後,我所製作的個人頁面爬蟲也隨之炸裂,間接導致手機上的小工具就此失去了作用了,我該就這麼停下開發的腳步嗎?
Thumbnail
2024/02/02
正如所預測的,不久前方格子個人頁面大改版後,我所製作的個人頁面爬蟲也隨之炸裂,間接導致手機上的小工具就此失去了作用了,我該就這麼停下開發的腳步嗎?
Thumbnail
2023/12/14
不久前,我曾經有寫過一個可以計算出距離自己最後發文時間,已經過了多久的小工具,當時是希望藉著這個數據化呈現,來督促自己持續產出,不過自從完成了之後,我也同時開始思考,該如何讓這個小工具出現在更多、更顯眼的地方呢?
Thumbnail
2023/12/14
不久前,我曾經有寫過一個可以計算出距離自己最後發文時間,已經過了多久的小工具,當時是希望藉著這個數據化呈現,來督促自己持續產出,不過自從完成了之後,我也同時開始思考,該如何讓這個小工具出現在更多、更顯眼的地方呢?
Thumbnail
看更多
你可能也想看
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
從年初開始,一直沒有好好整理閱讀清單,拖延至今才發現農曆年前的事情感覺像是很遙遠的記憶了,得花些時間挖掘一下才行,變成以「季」為單位的時候,就會發現人的記憶實在不太可靠。
Thumbnail
從年初開始,一直沒有好好整理閱讀清單,拖延至今才發現農曆年前的事情感覺像是很遙遠的記憶了,得花些時間挖掘一下才行,變成以「季」為單位的時候,就會發現人的記憶實在不太可靠。
Thumbnail
2023年最後一個週末,我在這篇文章中回顧了整年的生活。從完成手寫曆到讀書、看電影、經歷各種變化,分享了自己的成長和感悟。文章充滿了個人化的內容和情感,呈現了豐富多變的一年。
Thumbnail
2023年最後一個週末,我在這篇文章中回顧了整年的生活。從完成手寫曆到讀書、看電影、經歷各種變化,分享了自己的成長和感悟。文章充滿了個人化的內容和情感,呈現了豐富多變的一年。
Thumbnail
剛剛打得太順手,照慣例打成23/12,哈哈~還好有注意,不然送出又要修改~ 圖照慣例拿我的萬用圖貼圖來PO,沒意外的話,明年還會看到它😆😆😆
Thumbnail
剛剛打得太順手,照慣例打成23/12,哈哈~還好有注意,不然送出又要修改~ 圖照慣例拿我的萬用圖貼圖來PO,沒意外的話,明年還會看到它😆😆😆
Thumbnail
連續七年第一篇網誌都叫紀錄,年末時回頭看看自己寫的紀錄,當做這年走過道路的回顧,意外的發現,原來年初這麼想的,原來那時充滿希望,原來我有這樣的期許...不妨今年你也幫自己寫篇紀錄。
Thumbnail
連續七年第一篇網誌都叫紀錄,年末時回頭看看自己寫的紀錄,當做這年走過道路的回顧,意外的發現,原來年初這麼想的,原來那時充滿希望,原來我有這樣的期許...不妨今年你也幫自己寫篇紀錄。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News