2023年7月27日 星期四

以 FontForge 免費開源軟體 修改字型

首先到 FontForge 官網「https://fontforge.org/」,或他們 GitHub 專頁「https://github.com/fontforge/fontforge/」,下載最新版安裝檔,目前最新版是「20230101」版。

安裝好後,若要更改 FontForge 的介面語言,需到安裝目錄,通常在「C:\Program Files (x86)\FontForgeBuilds\」,找到 fontforge.bat 這個檔案,按右鍵編輯,找到「::set LANGUAGE=en 」,在下方新增一行「set LANGUAGE=zh_TW」,儲存之後再開啟程式就變成繁體中文了。使用時盡量以系統管理員身分執行,我是直接在捷徑按右鍵,選內容 -> 相容性,勾選「以系統管理員的身分執行此程式」。執行軟體會要求開啟或新建字型,必須確定檔案位置才會開始匯入,然後進入字型預覽窗格。

主選單按「元件→字型資訊」(Ctrl+Shift+F) 出現視窗後,在名稱頁修改字型名稱、字重、版本等資訊。在一般頁設定字型的Em尺寸、上下緣、底線位置及高度。之後的每一頁都有相關設定可以修改。

主選單按「檢視→前往」(Ctrl+Shift+>) 出現視窗後,輸入要去的位置,比如說直排標點的開頭位
置「U+FE10」。

主選單按「元件→變換」(Ctrl+\) 出現視窗後,可以指定變化方式,例如旋轉逆時針90度、位移XY軸各多少值、還有歪斜神縮等等。

主選單按「檔案→執行命令稿」(Ctrl+.) 開啟指令視窗,可以貼上指令碼,下方可指定使用 Python 或 FF 語法。


情境一,直式標點沒有上下左右置中,使用已經置中的橫式標點字圖來取代:
U+FE10←(,)U+FF0C
U+FE11←(、)U+3001
U+FE12←(。)U+3002
U+FE13←(:)U+FF1A
U+FE14←(;)U+FF1B
U+FE15←(!)U+FF01
U+FE16←(?)U+FF1F
這幾個字逐個去找字圖複製貼上,不如使用以下 Script 即所謂命令稿來批次執行:
================ 直式標點取代之FF語法 ================
Reencode("unicode4")
Select(0uFF0C)
Copy()
Select(0uFE10)
Paste()
Select(0u3001)
Copy()
Select(0uFE11)
Paste()
Select(0u3002)
Copy()
Select(0uFE12)
Paste()
Select(0uFF1A)
Copy()
Select(0uFE13)
Paste()
Select(0uFF1B)
Copy()
Select(0uFE14)
Paste()
Select(0uFF01)
Copy()
Select(0uFE15)
Paste()
Select(0uFF1F)
Copy()
Select(0uFE16)
Paste()
================ 直式標點取代之FF語法 ================


情境二,以台灣慣用的「」取代中國習用的“”引號:
「 (U+300C) → “ (U+201C)
」 (U+300D) → ” (U+201D)
『 (U+300E) → ‘ (U+2018)
』 (U+300F) → ’ (U+2019)
「(U+300C) → 〝 (U+301D)
」(U+300D) → 〞 (U+301E)
可使用以下 Script 來批次執行:
================ 引號取代之FF語法 ================
Reencode("unicode4")
Select(0u300C)
Copy()
Select(0u201C)
Paste()
Select(0u300D)
Copy()
Select(0u201D)
Paste()
Select(0u300E)
Copy()
Select(0u2018)
Paste()
Select(0u300F)
Copy()
Select(0u2019)
Paste()
Select(0u300C)
Copy()
Select(0u301D)
Paste()
Select(0u300D)
Copy()
Select(0u301E)
Paste()
================ 引號取代之FF語法 ================
以上二段指令之 Copy() 可以改成 CopyReference() 語法,就會採用連結字圖而非複製取代方式,照理說檔案會變小,但是相容性適用性比較不能確保,一般還是直接改掉比較安全可靠。


情境三,將0u2030以後的所有非標號非拉丁文字逆時針旋轉90度,製作偽直排字型:
================ 非拉丁文字改方向之FF語法 ================
SelectAll()
SelectFewer(0u0,0u202F)
SelectFewer(0u3008,0u3011)
SelectFewer(0u3014,0u301F)
SelectFewer(0uFE63)
SelectFewer(0uFE66)
SelectFewer(0uFF08,0uFF09)
SelectFewer(0uFF0D)
SelectFewer(0uFF1C,0uFF1E)
SelectFewer(0uFF3B)
SelectFewer(0uFF3D)
SelectFewer(0uFF5B)
SelectFewer(0uFF5D,0uFF60)
SelectFewer(0uFF62,0uFF63)
SelectFewer(0x110b4d,0x110b7c)
SelectFewer(0x110b81,0x110b86)
SelectFewer(0x110db5,0x110db8)
SelectFewer(0x110dd4)
SelectFewer(0x110df3,0x110df4)
Rotate(90,0,0)
Move(880,-120)
================ 非拉丁文字改方向之FF語法 ================
文字轉向的位置偏移量各字型不同,主要以字型資訊裡設定的字體位置來微調。
上述語法也可以只做到選擇,轉向與移動按「元件→變換」(Ctrl+\)以圖形化介面做操作。




完成編輯以後,主選單按「檔案→產生字型」(Ctrl+Shift+G) ,這邊我儲存成TrueType格式。網路上大部分人建議下方的「儲存之前進行驗證」不要勾選,不然會花很多時間。

2023年6月9日 星期五

原俠正楷 GuanKiapTsingKhai ,現在簡轉繁也能自動轉成正確的字了

去年七月發布了自己整理的「原俠正楷」字型後,雖然有簡單的轉繁體功能,已經能夠方便閱讀簡體字文章,但未能很好解決簡體多字共用,一簡對多繁造成無法精確轉換的問題,總覺得還是要能做到動態辭彙對應處理才算完整。

前幾天芫荽字型改為正式版,霞鶩文楷前陣子也有改版,藉著這個機會,整理了新版字型及辭彙庫,終於將「原俠正楷」升級到有自動選字的新版本了。

話說繁媛明朝的作者,新加坡Ayaka小姐真神人也,怎麼這麼天才想到利用OpenType字型,字圖對應的方法實現多對多替換。當年看到還以為大佬也是大叔,沒想到才24歲!多謝她的理論與實踐做為榜樣,現在我也弄好了,以後看簡體書換字型就好不需要轉檔真開心。

「我发现皇后后面的头发很干燥,她说干什么不干你事」,
這種句子可以自動正確轉換成:
「我發現皇后後面的頭髮很乾燥,她說幹什麼不干你事」。
這樣不是很好嗎?!

「原俠正楷」

有需要的朋友們快來下載吧!

2023年5月30日 星期二

以 mklink 指令建立 Hard link, Junction, 或 Symbolic Link

現在使用的 Windows11 版本,不知為何無法安裝以前常用的圖形化工具:Link Shell Extension ,只好回來使用微軟內建的 mklink 指令。


官方的指令說明寫得不清不楚:

建立符號連結。

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      建立目錄符號連結。預設是檔案符號連結。
        /H      建立永久連結而不是符號連結。
        /J      建立目錄連接。
        Link    指定新符號連結名稱。
        Target  指定新連結參照的路徑 (相對或絕對)。


這樣寫太過語焉不詳,實際上這個指令的效果是:
  • 不加選項: 用於建立檔案的 Symbolic Link.
  • /D選項: 用於建立目錄的 Symbolic Link.
  • /H選項: 用於建立檔案的 Hardlink.
  • /J選項: 用於建立目錄的 Junction.

Hardlink, Junction, 與 Symbolic Link 都是連接到儲存裝置上面,實際資料的額外連結方式,類似捷徑但功能更完整,比如說可以複製移動。

Hardlink 是直接多一個分身但指向同一實體,會被視為獨立存在,可以改名字任意搬移或是刪除,不影響其他分身。直到刪掉最後一個分身,就等於全部整個刪除了。這很方便,但因為Hard Link指向的是每個NTFS磁碟區獨佔的檔案配置資訊,所以Hard Link無法跨磁碟區跟檔案系統。也就是說C槽資料只能增加Hardlink在C槽,不能在D槽。

相對於 Hardlink,Junction 與 Symbolic Link 屬於 Soft link,比較有彈性可以跨磁區,有點像捷徑,主體[標的]不能改名,刪除或移動[連結]時,[標的]不受影響。
Junction 的連結與標的只能是資料夾,必需是本機的本地檔案系統,且會儲存絕對路徑,主體搬家分身就失效。
Symbolic Link 的連結與標的可以是檔案或資料夾,可以在本機也可以在網路其他地方,可以儲存相對路徑,主體搬家分身可以不失效。可以視為 Junction 的進階版本,唯一缺點是建立時必須有管理員權限。


以上總結下來,日常主要以 Symbolic Link 為主,具體使用方式:

建立 [D:\Temp] 連結目錄,指向本機不同磁碟 [C:\Users\Tony\AppData\Local\Temp]
mklink /d D:\temp C:\Users\Tony\AppData\Local\Temp

建立 [D:\filelog.bak] 連結檔,指向網路位置檔案 [\\192.168.1.100\system.log]
mklink D:\filelog.bak \\192.168.1.100\system.log

做好的 Symbolic Link 要搬移、改名、刪除都可以任意處理。

2023年5月23日 星期二

虛擬私人網路埠號 VPN Port Numbers

VPN 要通必須要開放下列幾個 TCP/IP Port:
  • PPTP的運作需要使用 TCP Port 1723 及 IP Protocol GRE(47)
  • L2TP/IPsec的運作需要使用 UDP Port 500、UDP Port 4500及IP Protocol ESP(50)
  • OpenVPN的運作需要使用 UDP Port 1194
  • WebVPN的運作需要使用 TCP Port 443

2023年5月8日 星期一

解決 Box 雲端空間 與 群暉 Synology NAS CloudSync 403 Forbidden Error 同步授權失敗問題

四月份開始, Synology NAS (網路存伺服器) 就開始無法同步 Box 雲端空間,連線進去 NAS 開啟 CloudSync 功能一看,原來是需要重新授權,但怎麼按它都出現 403 Forbidden Error ,網路上搜尋一番,所幸有大神找出解決方案,翻譯節錄於下。
  1. 以 Chrome 瀏覽器進入NAS介面,然後開啟 CloudSync。
  2. 按 + 按鈕增加新連線。
  3. 選擇 Box 然後下一步。
  4. 跳出授權視窗顯示「403 Forbidden Error」。
  5. 複製完整網址。
  6. 按滑鼠右鍵選檢查,或按 Ctrl-Shift-I,開啟開發者工具。
  7. 切換到主控台(Console)分頁。
  8. 貼上「self.location = "」,先不要送出。
  9. 貼上第五步驟複製的網址。
  10. 找到網址最後面的「http://x.x.x.x:5000」或「https://x.x.x.x:5001」,把:冒號改成%3A,斜線/改成%2F,變成「http%3A%2F%2Fx.x.x.x:5000」或「https%3A%2F%2Fx.x.x.x:5001」。
  11. 輸入結尾的「"」。
  12. 按Enter送出。
  13. 這樣就會順利跳出 Box 雲端空間授權畫面了。
暫時解決多日的麻煩,靜待二方找出官方更新方案。

2023年5月1日 星期一

修改你的付款資料以購買/訂閱不同國家的軟體/服務 Manage your Google payments profile to buy/subscribe app/service from a different country

不論是搬到不同國家或是單純想要體驗,當我們需要購買或訂閱地區限定的軟體/服務時,Google帳號中需要有當地的付款資料(payments profile)。

參考設定多筆付款資料的官方教學,登入帳戶,前往付款設定頁面,在付款資料的國家/地區旁邊按鉛筆圖案按鈕修改,新建不同國家的付款方式。



完成後畫面右上角就會出現下拉切換選單按鈕,這時再次操作就能順利找到/購買/訂閱了。


這個步驟在進行跨地區遊戲/App/書籍購買,或是 Youtube Premium 、 Google One 服務訂閱,是非常重要的前置作業,不要再傻傻地建立多個帳號來專用了。

2023年4月18日 星期二

澳洲護照大頭照片排版設定(使用PhotoCap)

與台灣護照大頭照規定 35mm x 45mm不同,澳洲護照大頭照規定 35~40mm x 45~50mm。二邊同樣要求面部範圍32~36mm,但台灣通常計算下巴至髮梢,而澳洲特別指出要下巴至頭殼頂、頭皮以上頭髮不計算。雖然未規定面部上下位置,但澳洲郵局收件人員皆使用參考圖尺檢查照片,上面的透明格線之面部範圍(頭頂上限至下巴位置)大致置中,也就是4.5+36+4.5=45mm高這種排法。送件時曾被刁難照片太小張(下緣太多上緣不足)須重拍,跟他們爭論純屬浪費時間,故自行比照設置參考線重新來過以免麻煩。



開啟 PhotoCap 的大頭照排版功能,我們不選擇模板直接進入新的編輯,首先稍微加大尺寸:
300DPI 的 6*4 inch = 1800*1200 Pixel、
寬稍微加到36mm=36/25.4*300=425.12pxl
高稍微加到47mm=47/25.4*300=555.12pxl



模板排列成四欄二列八張滿版,每張照片改為425*555pxl,周圍留白維持原設定+8,經過檢查後,確認勉強擠得進去。
橫排四張加留邊留白,X軸排列方式:18+8+425+8+8+425+8+8+425+8+8+425+8+18=1800pxl
縱排二張加留邊留白,Y軸排列方式:29+8+555+8+8+555+8+29=1200pxl

重點的參考線:
單張照片扣掉面部範圍:47-36=11mm
面部置中後上下邊距:11/2=5.5mm
換算5.5mm=5.5/25.4*300=64.96pxl
計算得到上排照片頭頂上限位置在:29+8+65=102pxl
頭頂上下限36-32=4mm位置離頂緣:5.5+4=9.5mm
換算9.5mm=9.5/25.4*300=112.20pxl
計算得到上排照片頭頂下限位置在:29+8+112=149pxl
計算得到上排照片下巴對齊位置在:29+8+555-65=527pxl
計算得到下排照片頭頂上限位置在:29+8+555+8+8+65=673pxl
計算得到下排照片頭頂下限位置在:29+8+555+8+8+112=720pxl
計算得到下排照片下巴對齊位置在:29+8+555+8+8+555-65=1098pxl
由此得知參考線應放置在Y軸:102、149、527、673、720、1098pxl共六處。



為了避免個別經辦人員認定不同,我設定大頭照人數4人,同照片交錯匯入2次,2張在上2張在下,上排頭頂上限選到頭皮(臉稍微較大),下排頭頂上限選到髮梢(臉稍微較小),這樣找人簽名背書時雖一次多簽幾張,但避免了再次重印及約時間簽名多欠人情等麻煩。

線上傳到Kmart照片沖印網站,一張4x6隔日取10c,常常當天就通知可取件。


隔日更新:
因為太滿版印刷時,若不夠精確切到影像邊緣反而不便,因此回歸單張35*45mm尺寸又再設定一次。

300DPI 的 6*4 inch = 1800*1200 Pixel、
寬35mm=35/25.4*300=413.386pxl
高45mm=45/25.4*300=531.496pxl

預設模板排列成四欄二列八張滿版,每張照片維持413*531pxl,周圍留白維持原設定+8,經過檢查後,得知:
橫排四張加留邊留白,X軸排列方式:42+8+413+8+8+413+8+8+413+8+8+413+8+42=1800pxl
縱排二張加留邊留白,Y軸排列方式:53+8+531+8+8+531+8+53=1200pxl

參考線:
單張照片扣掉面部範圍:45-36=9mm
面部置中後上下邊距:9/2=4.5mm
換算4.5mm=4.5/25.4*300=53.15pxl
計算得到上排照片頭頂上限位置在:53+8+53=114pxl
頭頂上下限36-32=4mm位置離頂緣:4.5+4=8.5mm
換算8.5mm=8.5/25.4*300=100.39pxl
計算得到上排照片頭頂下限位置在:53+8+100=161pxl
計算得到上排照片下巴對齊位置在:53+8+531-53=539pxl
計算得到下排照片頭頂上限位置在:53+8+531+8+8+53=661pxl
計算得到下排照片頭頂下限位置在:53+8+531+8+8+100=708pxl
計算得到下排照片下巴對齊位置在:53+8+531+8+8+531-53=1086pxl
由此得知參考線應放置在Y軸:114、161、539、661、708、1086pxl共六處。