
為什麼要學這個?
我們透過”從字體專案裡取得特定文字“, 可以取得某一個專案檔裡的文字清單, 並把文字清單存為一個文字檔, 如果希望某些字可以從這個清單中移除並另存為新檔, 就可以使用這一個 script.
如果沒有這個功能, 以上面執行的結果來看, 需要先開啟有 6715 字的文字檔, 並使用尋找功能, 把9個字從文字檔中移除, 這個操作很花時間, 透過程式自動化, 才是正解.
前置作業
Max腳本檔案下載:
https://github.com/max32002/MaxFontScripts/blob/master/remove_selected_char.py
使用方法
python remove_selected_char.py --input formated.txt --remove remove.txt --output formated.txt
參數說明:
–-input
來源文字檔。–-remove
要移除的文字清單。--output
去除交集之後的清所另存的新文字檔。
執行的結果範例:
length of input file: 6715
length of remove file: 9
excepted length of formated file: 6706
length of formated file: 6706
說明: 原文字檔有 6715 字, 要移除有 9字, 預期應該會是 6706 字, 另存的新檔長度為 6706, 符合預期, 之所以會產生與預期不同的結果, 就是這2個集合沒交集的時候.
目前程式的目的就是去除交集, 在第一次執行完之後, 再去使用 –output 的檔案, 當作 –remove 的清單, 對原本的 –input 做二次處理, 就可以取到交集的內容.
實際個案: 某一個字型太大, 有 44000 字, 想變小一點, 不知該如何選擇.
解法: 先用 44000 的大集合, 開始一一去刪除其他字型的集合, 可以取得較少人使用的清單, 再把這個最終清單回去刪除 44000 大集合, 即可取得最常見組合.
上面的效果不太好, 後來改用這個解法:
透過 fontforge 開啟2個字型檔, 字型檔移除字型檔包含項目
https://codereview.max-everyday.com/delete-selected-glyph/#font_delete_font
實際個案
想知道某一個部件在字型中出現的情況, 先到部件查詢網站:
輸入: 㒸
查詢得到完整清單資料:
㒸傢儫冡劇勮噱嚎嚺圂塜墜壉壕嫁嬘家嶳幏幪慁懅懞據旞曚朦榢檖檬檺櫫毅氋溕溷澻澽濛濠瀦烼煫燧燹獴璩璲瓥甤矇礈礞禭稼穟篴籇籧糘繸臄艨蒙蓫蕤藙藸蘧蟸蠓蠔襚譢譹豕豗豘豙豚豛豜豝豞豟豠豢豣豤豥豦豧豨豩豪豬豭豮豯豰豱豲豳豴豵豶豷躆逐遂遯遽邃醵鎵鐆鐩鐻镓隊隧霥靀顡饛鱁鸏鹲鿪
先把來源文字清單移除部件清單, 例如: 存入檔案 charset_test.txt
使用指令:
python remove_selected_char.py --input charset_ZenMaruGothic-Regular.tx
t --remove charset_test.txt --output charset_zen_remove.txt
執行結果:
length of input file: 6715
length of remove file: 129
excepted length of formated file: 6586
length intersection: 34
length of target file: 6681
再執行一次指令:
python remove_selected_char.py --input charset_ZenMaruGothic-Regular.tx
t --remove charset_zen_remove.txt --output charset_zen_intersect.txt
答案就放在 _intersect.txt 裡, 交集的字有:
劇墜壕嫁家據曚朦檬毅溷濛濠瀦燧燹矇稼糘艨蒙豕豚豢豪豬逐遂遯遽邃醵隊隧
觀察2個字型之間的筆畫差異指令:
python font2img.py --src_font=source/font/SweiGothicCJKjp-DemiLight.ttf ^
--dst_font=source/font/ZenMaruGothic-Regular.ttf ^
--charset=charset/charset_test.txt ^
--sample_count=45678 ^
--sample_dir=source/paired_images-maruko-debug ^
--label=0 ^
--mode=font2font
說明: 對映圖片輸出到 paired_images-maruko-debug
常見完整清單
- 㒸
㒸傢儫冡劇勮噱嚎嚺圂塜墜壉壕嫁嬘家嶳幏幪慁懅懞據旞曚朦榢檖檬檺櫫毅氋溕溷澻澽濛濠瀦烼煫燧燹獴璩璲瓥甤矇礈礞禭稼穟篴籇籧糘繸臄艨蒙蓫蕤藙藸蘧蟸蠓蠔襚譢譹豕豗豘豙豚豛豜豝豞豟豠豢豣豤豥豦豧豨豩豪豬豭豮豯豰豱豲豳豴豵豶豷躆逐遂遯遽邃醵鎵鐆鐩鐻镓隊隧霥靀顡饛鱁鸏鹲鿪 - 包
佨刨𨚔㚿咆垉孢庖怉抱泡狍饱𡯚𡯡𡶄枹炮炰爮玸胞飑𢼌𣭀𪵀𫀆𫹾𭠆𭣘𭷝䍖瓟疱皰砲窇铇𥄹𦊠𧙌䎂匏笣苞蚫袌袍𢁀𫃠䛌跑軳𠣶𧵢𨠖𪽕𭻚𮮆鉋雹鲍龅𠣺𠣻𠣼𢄝𭅎𭅏靤鞄颮飽𠤁𩎘𩐜𭸤䮀骲髱𠤃㯡䳈鮑麅麭𪀀𪊡𪏶𪐼𡂟𩤄𪓠䶌齙𬤺 - 户
戹𢨧𢨨𬽬㦾启妒帍庐戺戻护沪驴𢗼𢨫𢨮㦿㧀戽戾房昈枦炉肩𢨰𢨱𢨳𢨵𢼄𣢖𫼉𬇋𭠁㧁㧂扁扂扃𢨶𢨿𢩃𪭘𫼊𬏞䋀䋆扄扅扆扇粐肁舮芦𢩉𢩊𢩌𫼋𫼌䡎扈𢩏𪭙𫼍𫼎扉扊鈩雇𢩔𫼐馿𢩛𫼏魲鳸 - 肖
俏削诮𦚍𨛍哨娋宵屑峭帩弰悄捎消绡陗𡌔𡜽𡯩𢈭𢓮𤞚㲖㲵䏴梢焇琑逍𢼼𢽐𣆺𣭱𤙜𥙬䇌痟睄矟硝稍销𤫾𤿨䘯筲綃艄莦蛸𥹶𦐺𦓴誚趙踃輎𧣪𧳍𧶈𨡀𨲆𬹈銷霄𩛱𬺆鞘韒颵𩠦𩡈𩩓𬳘髾魈𮆂䴛鮹𪁎𪌯𮝥䨭𪑊𪘞 - 曷
㓭㔠偈谒𫕈㡫喝堨嵑幆愒掲揭渴猲喝𡇼𢆜𢉥𩨀𫱊𮩝㷎㹇暍楬歇毼遏𠂄𢇋𣂰𣎅𣨵𣮷𦝲𬨍𬰵𭹨㿣䅥朅碣竭鹖𤣨𤸎𥈎𭧑䈓䋵羯葛蝎褐褐𣍊𥻉𦩥𮍻謁輵謁𧼨𨃃𨉪𮗳䦪䨠鍻𢎔𧇷䫘鞨餲馤𩏌𩩲騔𦤦𦤪𩮂𭾓鶡𩹄𪑦𪓮𪕭齃𥃞𪘹 - 平
伻匉评𢆊𨸶𪪭𫥶㛁呯坪岼怦抨泙𡊞𢏊𪥈𫯡𬳴枰玶胓𢆓𢆕𤇊𤖳𤘾𥘴𪜉𪰓𭙁㼞砰秤𤵣𪲅𬑈𭽏𮄪䍈䍬苹蚲𥹒𦐜𦓬𦨫𬔳𮈈評軯𣸞𧲺𧻈𨠟𪪄閛鲆𢆠𨥾𪪅𪪆𫷙𫷚𩑳駍𪪇𫷝𬈽鮃𬛙䶄𢆮 - 酋
偤𠄁𨜟𨺧㥢奠媨尊崷揂湭猶猷𡞜𡯾𡲚𡺚𢉷𢍜𪡧𬘶㷕㻥楢煪遒𣣫𣮩𤋃𦝱𦳷𬨎禉𤸈緧蝤𦖣𦩲𮉶䠓趥輶𧤕𧳫𨡴䤋𨢅𨢈𨩊𫜟鞧𩔕𮡂𩮈𮡃䲡鰌𨣡𪃬𪍑蠤𪓰𪓵 - 益
谥𨜶𪝞𪟢𭂚𭄷㜋嗌搤溢獈缢隘𡺬𪬘𭗆𭛃𭛽㱲榏膉𣣼𦶩𬎃𬐭䅬镒鹢𤸸𮄷縊艗螠𫆌𬙻㬲䚊謚貖賹𡒪𨢘𬦜𬧬𥂺𨶂𩝱𭘺𩔱𭾓鷁𪤴蠲𪕶齸𥃠 - 冬
㐑佟𠩁𨚟㚵㠽㤏㹣咚图峂庝泈终𡶞𢓘𢫝𨒟㫡昸柊氡炵𣁲𣧩𤤮𦙭䂢疼𤱞𮂽笗終苳𧊂𮗀𧲴𧹝𨀐𨠌䧷鉖𧆼𩂓𫔠𩢦㲇䳉鮗鴤螽鼕鼨𭽸䶱𪚽 - 㸒
𨺄𠉰𠗝𡍛婬淫𨓮𭵂𭹠𣨮𣓆𦲻𪾮𤷏𥓕𦁍𥮍𨂘 - 羽
𦏳诩𢌟𪜹䣁挧羾羿𢏖𢬙𣴆𦏴𦏵𦏶𦏷𦏸𦏹𦏺𦏻𦏼𦏽𦏾𦏿𦐀𦐁𪥵𫅢𫹓𭎛𭚰䍾䍿扇栩毣珝翀翁翂翃翄翅翆𣭜𦐂𦐄𦐅𦐆𦐇𦐈𦐉𦐊𦐋𦐌𦐍𦐎𦐏𦐐𦐑𦐒𦐓𦐔𦭳𪰣𪸪𫅣𮊹𮊺𮊻䎀䎁䎂䎃䎄䎅䎆祤翇翈翉翊翋翌翍翎翏翐翑習𥏊𥒉𦐕𦐖𦐗𦐘𦐙𦐚𦐛𦐜𦐝𦐞𦐠𦐡𦐢𫅤𬏬𭾲𮊼䋚䌻䎇䎈䎉䎊䎝翓翔翕翖翗翘翙翚蛡𦐣𦐤𦐥𦐦𦐧𦐨𦐩𦐪𦐬𦐭𦐰𦐲𦐴𦐵𦐷𫅥𫅦𫅧𫊼𮇝𮊾𮋁𮋂䎋䎌䎍䎎䟳翜翝詡趐𦐸𦐹𦐺𦐻𦐼𦐽𦐾𦐿𦑀𦑁𦑂𦑃𦑄𦑆𨋾𫅨𫅩𬚃𮊽𮋃𮋄𮠪䎏䎐䎑䎒䎓䦀䨒翞翟翠翡翢翣𦑅𦑇𦑈𦑉𦑊𦑋𦑌𦑍𦑎𦑏𦑐𦑒𦑕𦑖𨦫𫅪𮋅𮋆𮋇𮋈翥翦翧翨翩翪翬翭頨𦑘𦑙𦑚𦑛𦑜𦑝𦑞𦑟𦑠𦑡𦑢𦑣𦑤𦑥𦑦𦑧𦑨𦑩𦑪𦑫𦑭𦑮𦑯𦑻𩗍𫅫𫅬𫖈𮋊𮋋𮋌䎔䎕翮翯翱𦑰𦑱𦑲𦑳𦑴𦑵𦑶𦑹𦑺𦑼𦑽𦒀𦒁𩢳𩭅𫅭𫅮𬚄𬚅𬚆𮋎𮋐𮪄翲翳翴翵翶鮙𥂨𦒄𦒆𦒊𪊮𫅯𬚈𮋒𮋓䎖䎗䎘翷翸翹翺翻𦒍𦒎𦒏𦒐𦒑𦒒𦒓𦒔𦒖𦒗𦒘𦒚𦒛𦒟𫅰𮋍翽翾𦒜𦒝𦒠𦒡𪓦𮋔𮋕䎙翿𦒢𦒤𦒪𮋗䎚𦒦𦒨𦒩𦒬𮋘𦒧𦒮𫅲𬖅 - 翟
㒛𨞩𫦼㺟嚁嬥擢濯𡒔𡽢𢖈𢣷㪬䢰戳曜櫂燿𣤩𣩰𣰞𤛹𥜔𦡱𫾥𭣟𭯪㿑矅𤾫𥣞䊮䌦籊耀藋蠗趯躍𠑝𧥋𧸭𨤠𬣑糴鑃𩍪𩴹𦒰䴞糶鸐𩁭 - 牙
伢冴厊讶𠚾𠡁㤉㧎呀岈庌犽邪𡉪𡵥𢗬𣲨𤘅𫰎𭓟枒玡迓𤆹𤘆𪺧𭯲𭷏䄰䍓疨砑穿鸦𤘇𥁆𧘪𭷐㸧笌芽蚜衺𤘈𦕆𬌗𭷑𤘈芽訝谺𤘊𤘋𧠖𧣐𬦤𮗍䥺牚釾閕雅𤘌𤘍𤘏𪺨𬶅𬹺䪵颬𤘐𩨠𭷒𤘑𬌘鴉𤘒𩶀𮐍𤘓𪖕齖 - 令
伶冷刢冷𠄖𢏀𫥻㡵呤囹坽姈岭岺彾怜拎泠狑邻阾囹怜𢂂𫠂𫩧𬾂𭘘㱓㸳昤朎柃炩玲玲𡴒𣃠𣢝𣬹𣭔𤕵𫐉𬻴𭷊𮞊㾉瓴皊矝砱秢竛铃鸰𤫲𤬻𥅍𥥋𦊓𪡎𪽏𪾧𮊀䍅䎆笭紷羚翎聆舲苓蛉衑袊领羚聆𥹕𪲕𫅤𫣃𫤚𬡌𮍶䠲詅跉軨𧰻𧰾𧻋𨠎𪲥𬤲𭚾𭦝𮙒𮙿鈴閝零龄鈴零𠍐𡦈𣕯𤧂𧆺𨥷𨾠𩇙𩚹𬾺領領𠖝𩈖𩊂𩖵𩙳𩡁𩲩𭭭𮨨䯍駖𠏧𠾥𨗜𩬔𪟹𫑅𬗪㲆魿鴒鹷𪐸𫅜𬙽𬹴𧫹𪕌𪷶齡齢𠎜𪚙𩆖𪋭 - 吳
俁𢫸𤝲娛悞𡔣𡷤𣑀𪣘𡷤𣮇𤉇洖𮖅𪞻𬗙𩃉鋘𩶭𪕜茣 - 韋
𫖌偉𠥎𨜢𭄵㙔喡圍媁幃徫愇湋郼韌𡺨𢯷𩎒𪫀䪏暐椲煒瑋違𢾁𢾝𣪡𦝛𩎓𩎔𩎕𩎖𩎗𫖍𬰪𭞈䪐䪑䪒䪓禕稦韍韎𤸆𥀊𥔬𩎘𩎙𩎚𩎛𩎜𩎝𩎞𩎟𩎠𩎡𩎢𩎣𪾃𪾳𫁨䍷緯葦衛褘韏韐韑𥯤𦑻𦗇𧍫𩎤𩎥𩎦𩎧𩎨𩎩𩎪𩎫𩎬𩎭𫠄𬰫𬰬𬰭𮧱䪔諱韒𩎯𩎰𩎱𩎲𩎵𩎶𫌱𫎞䪕鍏闈韓韔韕𩎸𩎹𩎺𩎻𩎼𩎽𩎾𩎿𩏀𩏁𩏂𩏃𩏄𫖎䪖䪗䪘韖韗韘韙韚颹𩋾𩏅𩏆𩏇𩏈𩏊𩏋𩏌𩘚𩳷䪙䪚韜韝韞韟𩏏𩏐𩏒𩏓𩏔𩏕𩏖𩏗𩤮韠韛𩏘𩏙𩏚𩏜𩏝𩏞𩏟𫖏𮬄䪛韡韢𩏠𩏡𩏢𩏣𩏤𩏥𩏧𮧳䪜韣𩏨𩏩𩏪𩏫𩏬𩏭䪝𩏮𩏯𩏰𩏱𬰯韤韥𩏲𩏳𩏵𬰰𩏹𩏺 - 兼
傔凲谦𠗳𠪊㡘㺌嗛嫌尲嵰廉慊搛溓缣隒廉𠔨𠔮𡏊𡰉𢐎𫗱𫥣㝺㪠㻩槏歉熑膁赚𢧥㼓㽐㾾䁠甉磏稴鹣𤬓𦋰𮖨䈴縑蒹螊𠔳𡗄𥻧𦖾𦩵𪞍𫇗謙豏賺𨃰𨐩𨢑鎌鳒𠁟𤑃𩄡𫡁𫡂䫡䭑馦𠔺𧰋䯡鬑魐𫘕鰜鶼鹻𪐋鼸𪕼𪖳𪙊 - 雨
𩁶𠉴𠭍𨜄𩁷𩁸𫕝䨋屚雩雪雫𡸹𢉀𢮳𣷌𩁹𩁺𩁻𩁼𩁽𩂀𩂁𫕞𫰺𬯸𮦅䨌䨍雬雭雮雯雰雱雲雳𣍾𣔯𦲸𩂂𩂃𩂄𩂅𩂆𩂇𩂈𩂉𩂊𩂋𩂌𩂍𩂎𩂏𩂐𫕟𫕠𬯹𬯺𮞛𮦇𮦈𮦉䨎雴雵零雷雸雹雺電雼雽雾雷零𩂓𩂔𩂕𩂖𩂗𩂘𩂛𩂜𩂝𩂞𩂟𩂠𩂡𫕡𫕢𬯻𮦋𮦌𮦍䨏䨐䨑䨒䨓䨔䨕䨖雿需霁𧌙𩂢𩂣𩂤𩂥𩂦𩂨𩂩𩂪𩂭𩂮𩂯𩂰𩂱𩂳𩂴𩂶𫋃𫕤𮦎𮦏䨗䨘霂霃霄霅霆震霈霉𣾙𨂎𨗒𩂷𩂸𩂹𩂺𩂻𩂼𩂽𩂿𩃀𩃁𩃂𩃄𩃆𩃇𩃈𩃉𩃋𩃍𩃎𩃐𩃑𫕥𫕦𬯼𬯽𮦐𮦑𮦒𮦓䨚䨛䨜䨝霋霌霍霎霏霐霑霓霔霖霗𩃒𩃔𩃕𩃖𩃗𩃚𩃛𩃜𩃝𩃞𩃟𩃡𩃣𩃤𩃥𩃦𩃧𩃨𩃫𩃭𩃮𩃰𩃱𩃳𩃴𫒧𫕧𫕨𬯾𬯿𬰀𬰁𬰂𬰃𮦔𮦕𮦗𮦘𮦙𮦚𮦛䨞䨟䨠䨡䨢䨣䨤䬠霘霙霚霛霜霝霞霟𩃵𩃹𩃺𩃻𩃼𩃿𩄁𩄂𩄃𩄄𩄅𩄆𩄇𩄉𩄊𩄋𩄌𩄍𩄎𩄏𩄐𩄑𩄒𩄓𩄔𩄕𩄖𩄮𩗿𩳧𫕩𫕪𬰄𬰅𬰆𮦜𮦠𮦣𮦤䨥䨦䨧䨨䨩䨪霡霢霣霤霥𩃾𩄘𩄙𩄚𩄛𩄜𩄝𩄞𩄟𩄠𩄡𩄢𩄤𩄦𩄧𩄨𩄬𩄭𩄰𩄱𩄲𩄳𩄴𩄵𩄶𩄺𫕫𬰈𮦥𮦦𮦧𮦨𮦩𮦪𮦫霣䨫䨬䨮䨯霦霧霨霩霪霫霬霭𩄻𩄼𩄽𩄾𩄿𩅀𩅁𩅂𩅃𩅄𩅅𩅆𩅇𩅈𩅉𩅋𩅍𩅑𩅓𩅔𩅕𩅘𩅙𩅚𩅛𩅜𪂕𪋉𫕬𫕭𬰊𬵗𮦝𮦬𩅅䨰䨱霮霯霰霱露霳露𧓑𩅟𩅠𩅡𩅢𩅥𩅦𩅧𩅨𩅩𩅪𩅫𩅭𩅮𩅯𩅰𩅱𩅳𩅴𩅵𩅸𩅹𩅺𩅻𫕯𫕰𫕱𬰋𬰌𬰍𮦭𮦮𮦲霵霶霷霸霹霺霻𩅼𩅽𩅿𩆀𩆁𩆂𩆃𩆄𩆅𩆆𩆇𩆈𩆋𩆌𩆍𩆎𩆏𩆐𫕲𬰏𬰐𮦴𮦵𮦶䨳䨴霽霾靀𩆑𩆓𩆔𩆛𩆝𩆠𩆡𩆢𩆣𫕴𬰒𬰓𮦷𮦺䨵䨶靁𩆤𩆧𩆨𩆩𩆪𮦹䨷靂靃靄靇𩆭𩆮𩆯𩆰𩆱𩆲𩆳𩆴𫕵𫕶𮦽䨸𩆵𩆶𩆷𩆸𩆺𩆽𩆾𬰔𮦾靊𩆿𩇅𩇇䨹靋靌靍靎𬰕𮧁𩇈𩇉靏𩇋𩇍𫕷𩇏𩇐𩇓 - 尃
傅博𠣵𪠑㗘㙛圑愽搏溥猼缚馎𪩉𭘰𮥕㬍榑煿牔膊赙𢾭𣄎𤚽𤧵𫼁磗禣镈𤸵𥠵䍸䎔䗚䙏糐縛蒪𠪻𦉊𦑵𦔍𦦐賻𧱹𧳵𨍭𬧅𭕶𭺼鎛𬺏䪙餺𩌏䰊髆𫘒𩹲𪍡䶈𪙍𩫯
說明: 一個一個部件輸入太累, 一口氣把常見的差異字放進一個文字檔, 一次起比對會方便一點.