2022年7月23日 星期六

原俠正楷 GuanKiapTsingKhai ,舒適方便的字型選擇

 今天自己整理了喜歡的字型,並第一次發佈github專案。

使用電子閱讀器蠻久了,陸續用過不少字型,有的還有簡轉繁以及偽直排功能,拿來看對岸網文非常方便。私以為簡體字最大的缺點就是多字共用,一簡對多繁造成無法精確轉換,非常不便。能夠動態以辭彙對應處理此問題的繁媛字型,我認為是非常傑出的作品,作者去年有發佈 OpenCCFontGenerator 工具用來製作簡轉繁字型,可惜我實際操做發現有些不懂的地方需要手動改程式,無法順利完成很可惜。

除了繁媛明、黑體,網路上各式黑體、明(宋)體跟圓體都曾用過一陣子,然試過幾款楷體卻都覺得有些負擔。2020年底時,macOS上頗受好評的內建字型 Klee One 開源了,優雅端正易讀的楷體受到許多人喜歡,雖是香港大佬作品,但因為是日文字型故中文漢字不足,難以用來閱讀頗覺可惜,所幸陸續有幾位大神無償去做補全開發。其中 lxgw 的霞鶩文楷改版快速字數最足,精神及毅力令人十分欽佩,他的霞鶩文楷繁中版使用傳承字形,也是我近來最常用的閱讀字型。另外大神 But Ko 的芫荽字形寫法最接近台灣教育部標準,同時兼具美感平衡,可惜只集中整理了近八千字(已超強非常感謝)。

於是一直有揉在一起弄個牛丸版的想法,剛好前陣子霞鶩文楷繁中版討論要做簡轉繁分支霞鶩風楷時,有神人提供了 TCFontCreator 這個工具,今天稍有空檔試了一下,發現方便易用功能成熟,雖可惜無法像繁媛那樣動態辭彙轉換,但同時有合併及繁化功能,且圖形化界免操作簡便。

我以芫荽為主體,加上霞鶩文楷輕便版補足不常用字及簡體字,合併出自己的「原俠正楷」,另外增加了一對多共用字「保持原簡字」,跟「以常用繁體字取代」的二個簡轉繁版本。這個字型名稱採來源字型之首字:芫、霞,取諧音原俠,當下布袋戲大俠閃現腦海,故英文以台語發音 GuanKiapTsingKhai 來拼寫。

上述所有東西都是在 github 上找到的,當然做好了也要來發佈在 github。自己摸索第一次建立了 Repository ,幸好介面還算直覺,完成後感覺離大神們距離稍微近了一小步。


有興趣可以下載字型用用看,或者下載工具自己轉換喜歡的字型,方便簡單!

2022年6月8日 星期三

使用MKVToolNix合併YouTube上的WebM影片

YouTube從前幾年開始,大量使用WebM這個由Google主導的視訊檔格式,優點是壓縮效率高檔案小速度快,但缺點是網站把較高品質的影、音分開成不同檔案,下載後不方便撥放。

當我們從CatchV等線上服務,或是自行剖析找到原始檔案連結後,下載到WebM、WebA、MKA、Mp4、M4a等檔案格式,最好是將分開的影、音檔案合併打包起來,以利後續保存及使用,其中以存成MKV格式最為方便理想。

MKVToolNix是一款免費、跨平台、支援繁體中文、將影片合併或分割為MKV影片格式的程式。這個軟體可以將各種格式的影片、外掛字幕、外掛音軌等合併成為一個MKV影片檔案。也可以將多部影片合併為一部影片,或將一部影片分割為多個檔案,由於合併的過程不需要重新編碼,因此可以快速的完成影片的合併,也不會影響原來影片的品質。

過程十分簡單,連接到官方網站下載安裝後開啟,把要合併的檔案拖曳進去,然後按下方中央的開始合併按鍵,就完成了!而且因為是打包而非編碼,速度非常快,個人經驗1Gb以下1秒。

若需要反向處理,從MKV影片檔案擷取字幕、音軌與視訊的話,可以使用配套軟體gMKVExtractGUI,是由其他使用者開發的,需搭配主程式使用。

這個操作也很簡單,官網下載後解壓縮執行,把要拆解的MKV檔案拖曳進去後,軟體會分列視訊、音訊、字幕等內容,勾選後按右下角Extract按鍵,一下子就拆出來了。

有好的工具真是便利,任務輕鬆完成!

2021年7月5日 星期一

epub電子書轉直排加段落縮排

EPUB中文直書需要做幾項設定,一是改主要的OPF檔(通常是content.opf、metadata.opf或volume.opf),二是需要修改主要的CSS檔(通常是內容最多的那個)。


首先在主要的OPF檔找到 <spine> 標籤,加入屬性 page-progression-direction 並設定為 "rtl" 右至左(右翻)。若有特殊需要當然也可以指定 "ltr" 左至右(左翻),就會變成反向翻頁。
例如:<spine toc="ncx" page-progression-direction="rtl">

若OPF檔內有 language 標籤,個人習慣把它改成中文比較安心。
例如:<dc:language>zh-TW</dc:language>


再來在主要的CSS檔,加入 writing-mode: vertical-rl 的設定,一般放在<html>或<body>都可以。vertical 設定直排, rl 則是右到左。為了增加相容性,我們除了基本 writing-mode 屬性,也放入兩個 -webkit- 與 -epub- 開頭的 writing-mode 屬性,確保瀏覽器或EPUB閱讀器有支援。
具體寫成這樣:
html {
   writing-mode: vertical-rl;
   -webkit-writing-mode: vertical-rl;
   -epub-writing-mode: vertical-rl;
}

然後是段落首字縮排,有的電子書使用空格,私以為不妥。最好使用 text-indent 語法,並直接用 em 設定字級來當作縮排距離,以避免縮排參差不齊。
一般中文段落縮排二個字這麼設定:
p {
   text-indent: 2em;
}


至此這本epub電子書應該就會乖乖直排兼段落留空格。
以上。

2021年3月1日 星期一

使用 VMware ThinApp 製作獨立環境綠色免裝軟體跨越作業系統版本限制

前幾天電腦強迫自動更新成「版本 2004 (OS 組建 19041.804) 」,結果我多年前為了升級 Win 7 以 ThinApp 打包的陳年 XP 版軟體,突然不能正常開啟了,開相容模式以管理權限也無用,去查了事件檢視器,發現是錯誤「事件 1000,Application Error」、「例外狀況代碼: 0xc0000005」。網路一查主要原因是「Access Violation」,這範圍廣得不行。

嘗試了網路解法,關閉「資料執行防止」:
按 [Windows] + [R] 執行「sysdm.cpl」以開啟系統內容設定畫面,到「進階」頁面點選效能區的設定按鈕,在跳出的「效能選項」視窗中開啟「資料執行防止」頁面,點選第二個選項「為所有...開啟DEP,除了我選擇的這些」,然後在下面選擇例外的執行檔。設定好需要重開機,然後我的軟體還是不能正常執行,事件檢視器內容都一樣,除了多了個資訊「事件 1001,Windows Error Reporting」、「事件名稱: APPCRASH」,並沒有其他效果。另外找了幾個解法都不合用,最後乾脆找新版 ThinApp 再打包一次軟體試試。

在不同版本甚至不同作業系統下,大家常用虛擬機器來模擬指定版本作業系統環境,比如近來很香的 M1 版 Apple Macbook ,不使用 Intel X86 架構、改ARM以後不能雙系統了,就只能裝 Parallels Desktop 跑 Win10 虛擬機器執行視窗版軟體。
但是模擬整個作業系統要佔用許多資源,這時候有個軟體可以把必要的執行檔、登錄碼、數據庫等東西打包,同時保有封閉的指定作業環境,極大地精簡了體積及所需資源、也提高了執行效率。比如說網頁設計師需測試各版本IE相容性,只要開啟單獨WINXP版IE6或WIN7版IE10的執行檔。或是偶爾需要在別人電腦執行個 PS、Illustrator ,又或陳年老軟體只能在WinXP正確執行,這時這個不需要安裝、不需要切換作業系統的解決方案真是太方便了。

VMware ThinApp 是個付費軟體,可以到官網加入會員後、下載軟體並取得60天試用碼(我這次使用免洗電郵「https://getnada.com/」)。目前 ThinApp 最新版是5.2.9,但不支援我需要的Windows XP,所以我也下載有支援的最後版本5.2.3。我常用的虛擬機器軟體是免費的Oracle VM VirtualBox,開啟乾淨的WinXP並安裝 ThinApp 5.2.3 後,就準備來打包。

它的逐項運作過程是:
  1. Prescan:先掃描系統檔案及登錄碼,掃描完畢以後,按Next到下一步驟;
  2. Install Application:不要急著按下「Postscan」,先安裝好要打包的軟體再回來按;
  3. Postscan:軟體會再掃描一次找出不同之處,準備複製進專案資料夾;
  4. Configure:依照執行需求調整參數;
    • Entry Points:有時軟體有多項功能或附屬工具程式,ThinApp在此步驟會列出可執行項目、並預先勾選推薦的程式「進入點」。有時候會誤判或者勾選不必要的功能,需要自已檢查清楚決定好,選錯的話之後得手動改參數重新打包。
    • Manage With VMware Workspace:選擇「是/否」整合「VMware Horizon Application Manager」,類似軟體商店管理。通常不加入。
    • Groups:使用者群組權限設定,一般個人或中小企業用不太到,需要的話須小心,錯了沒得改得重新打包。 
    • Isolation:隔離模式分為「Merged」和「WriteCopy」;
      • 「Merged Isolation Mode」擁有打包檔外部(也就是執行環境)讀寫權限,相對不封閉,適合Microsoft、Adobe這種微軟認證軟體,個人的經驗以未認證軟體選這個模式,可能會被認定是蠕蟲或木馬病毒。
      • 「WriteCopy Isolation Mode」能讀取打包檔外部(執行環境)資料,但不能直接寫入,會放置在Sandbox(沙盒)中。適合舊版或大部分的其他軟體。
    • Sandbox:安全且獨立的沙盒用來放置改變過的登錄參數及設定檔,可選User Profile 使用者軟體資料夾、Same directory 打包軟體位置(適合隨身碟)、或任意指定資料夾。可以手動改參數指定軟體開啟或關閉時清除。
    • Quality Assurance Statistics:選擇「是/否」傳資料給VMware以協助他們改善品質。我選否避免造成防火牆示警。
    • Project Settings 頁1:輸入「Inventory Name」封裝資料夾的名稱、選擇或輸入「Project Location」存放位置。
    • Project Settings 頁2:
      • Primary Data Container:選擇封裝在執行檔本身或另外放在單獨的「.dat」資料檔(適合多功能/程式)。
      • MSI Package Generation:選擇是否同時封裝微軟「.msi」安裝檔。
      • Compression:對封裝進行壓縮,相對的打包時間會較長。
    • Save Project:點Next後ThinApp匯出相關資料到專案資料夾,結束再按Next下一步。
    • Ready to Build:可以選擇修改「Package.ini」內的詳細設定值、或直接按Build打包。
  5. Build Project:打包成跨版本綠色免裝軟體,只要把專案資料夾內的「bin」資料夾複製出來即可單獨使用,此資料夾名稱可手動改 Package.ini 自訂。
上述最後的打包動作,為求謹慎,我把 Windows 10 更新到20H2最新版,利用Windows Sandbox 內建沙盒,在裡面安裝ThinApp最新版,然後把專案資料夾複製進去,在裡面執行「build.bat」打包。分開以新版封裝的作法是參考某忘了出處官方文件,Sandboxie 作為第三方沙盒軟體雖速度快,但覺得比較不適合用來做封裝。

以下幾個 Package.ini 設定值供參考,詳細可查官方手冊
  • [Isolation]
    • RegistryIsolationMode=WriteCopy、RegistryIsolationMode=Merged (隔離模式選擇)
  • [BuildOptions]
    • MSIIs64Bit=1 (64bit安裝檔)
    • Wow64=1 (64bit環境跑32bit必選)
    • AltArchitectureShortcut=1 (64bit環境跑32/64bit混用)
    • SandboxPath=.、SandboxPath=LocalSandbox\Subdir1、SandboxPath=%AppData%\Thinstall (選擇或修改Sandbox存放位置)
    • SandboxRemovableDisk=1 (USB隨身碟)
    • RemoveSandboxOnExit=1 (關閉軟體時清空沙盒)
    • PermittedGroups=Administrator;OfficeUsers (使用者群組權限)
    • OptimizeFor=Memory、OptimizeFor=Disk (效率還是體積優先)
    • OutDir=bin (封裝檔輸出位置)
  • [Compression]
    • CompressionType=Fast、CompressionType=None (壓縮與否)
  • [app.exe]
    • Disabled=1 (封裝時不建立該執行檔)

反覆修改封裝了幾個版本,最後留了完整版和精簡版個別zip起來,任務完成。

關閉 Windows 10 自動更新

自從使用 Windows 10 以來,常常被它的自動更新搞得人仰馬翻,後來微軟改成關機時更新影響有減少一點,但是更新版本之後有時會有意想不到的問題,而且有時候古董老電腦會跑不動了。

停用 Windows 10 自動更新,常用的方式有:
  1. Win+R 執行 services.msc 開啟「服務」,往下找到「Windows Update」,點進去按「停止」,並在啟動類型下拉選單選擇「手動」或「已停用」。
  2. 執行 gpedit.msc 開啟「本機群組原則編輯器」,
    • 若開啟不了,需以管理權限用命令提示字元輸入:「:"%SystemRoot%\servicing\Packages\{{Microsoft-Windows-GroupPolicy-ClientExtensions-Package*.mum}}」和「:"%SystemRoot%\servicing\Packages\{{Microsoft-Windows-GroupPolicy-ClientTools-Package*.mum}}」。
    • 開啟後在左側找到「電腦設定/系統管理範本/Windows 元件/Windows Update」,然後右側找到「設定自動更新」選項並打開,選擇「已停用」。或者可以選「已啟用」然後下面設定自動更新選項選「2 - 通知我...」。  
    • 另外在左側找到「使用者設定/系統管理範本/系統」,然後右側找到「Windows 自動更新」選項並打開,選擇「已停用」。
  3. 將使用中的 Wifi 設為計費網路,藉此阻止更新的下載,個人不推薦。
  4. 使用DISM++,這是個功能相當全面的優化設定軟體,向強者致敬。
    • https://www.chuyu.me/zh-Hant/
    • 左側選擇「系統最佳化」、右側選「Windows Update」,將Windows Update 自動更新調整為「僅檢查更新」。
  5. 使用 BlockWin10AU 開源批次檔,簡單方便。
    • https://github.com/f1tz/BlockWin10AU
    • 下載後以管理員權限執行即可,一次性關掉許多東西非常簡便,但是以後要恢復需一一處理會比較麻煩。
完全關閉系統更新會有風險,建議斟酌使用。

2021年2月15日 星期一

不裝軟體直接下載臉書高畫質影片 Download Facebook video in FHD without other software

今日要在FB下載一個自家孩子的小影片,網路上查發現不是要用軟體,就是方法過時了不管用,於是自己嘗試了一下,最後順利不依靠軟體直接下載最高畫質。

現在很流行影像聲音分開放,從網頁原始碼看得出來FB是以MP4格式存audio、WEBM格式存video。


一、影片部分:

FB電腦版網頁開啟到要下載的影片貼文,按右鍵檢視原始碼;以「FBQualityClass」或「FBQualityLabel」這二個參數搜尋,應該不會很多個,選品質最高的複製一整段,以下1080p範例:

========以下目標原始碼斷行方便閱讀========
FBQualityClass=\"hd\" FBQualityLabel=\"1080p\">\u003CBaseURL>
https:\/\/video.**************************&oe=????????
\u003C\/BaseURL>
========以上目標原始碼斷行方便閱讀========

被「\u003CBaseURL>」和「\u003C\/BaseURL>」夾住的那段就是目標網址參數,還需要清理一下。移除(搜尋並取代為空值)網址中的「\」及「amp;」,結果就是我們要的網址了,以瀏覽器開啟後直接可以下載。


二、聲音部分:

以「"audio":[」搜尋,找到幾筆跟下面字串差不多的資料。

"audio":[{"url":"https:\/\/****省略許多字****&oe=????????",之後忽略

我們要的是"https:\~"這段被「"」夾住的網址參數,移除其中的「\」,就是我們要的網址了,以瀏覽器開啟後直接可以下載。


三、合併:
最後把影片與聲音合併,網路上有許多方便快速的開源軟體,在此先不贅述。
不知道FB什麼時候會改變網頁結構/寫法,所以上述擷取方法有效期限未知。

2021年2月2日 星期二

在 Windows 輕鬆用 NirCmd 批次修改檔案/資料夾建立時間、修改時間

幾年前做一鍵改解析度時,使用過 NirCmd 這個軟體,功能很多印象深刻。最近需要大量修改檔案時間,它也能夠輕鬆做到。

NirCmd 是一套免費的命令列指令集,提供許多控制 Windows 的參數,讓你執行命令列的方式,來執行一些重複性的動作,例如寫入、删除註冊表項、值,寫入 ini 檔案,撥號連接到你的網路帳戶以及 VPN 網路,重啟、關閉電腦,建立檔案快捷方式,改變檔案的建立 / 修改日期,改變顯示設置,關閉顯示器,彈出/關閉光碟,增加或減少電腦音量,以及更多更多。

x64版本的 NirCmd 執行檔是「nircmdc.exe」,需放在path路徑或安裝路徑(C:\Windows)下,以管理員身份執行。這邊簡述一下改檔案/資料夾建立及修改時間的指令:

改檔案日期時間:
nircmdc.exe setfiletime "檔案路徑" "dd-MM-yyyy hh:mm:ss" "dd-MM-yyyy hh:mm:ss"
改資料夾日期時間:
nircmdc.exe setfilefoldertime "資料夾路徑" "dd-MM-yyyy hh:mm:ss" "dd-MM-yyyy hh:mm:ss"

還有很多其他有趣/方便指令可以在官網找到說明。
NirCmd 官網: