UNPKG

pangu

Version:

Paranoid text spacing for good readability, to automatically insert whitespace between CJK (Chinese, Japanese, Korean) and half-width characters (alphabetical letters, numerical digits and symbols).

299 lines (186 loc) 10 kB
# Changelog ## v9.1.0 / 2026-08-01 - CLI 的 `-v` 會在版本號前面加上 `pangu.js`,本來只印版本號 - CLI 的 `-t``-f``-c` 不能再混用,同時給多個會出現錯誤訊息 - CLI 支援從 stdin 讀取文字,`echo "他們在release的前一天爆炸" | pangu` 會直接印出加好空格的結果,`-c` 也可以這樣用 - 修正 CLI 的輸出被導向 pipe 時,超過 64KB 的部分會被截斷的問題 - 修正 CLI 的 `-f` 現在會原封不動輸出加完空格的檔案內容,不會多加一個換行,檔案結尾本來有幾個換行就是幾個 - 修正引號的加空格規則,內容以 `+``|` 結尾時,結尾引號前面不會再多一個空格,同樣的文字加第二次空格也不會變,排版完馬上用 `-c` 檢查也會通過 - 新增 `pangu-js` 這個 CLI command,不管 PATH 順序如何都會執行到 pangu.js ## v9.0.0 / 2026-07-28 - 修正 `<wbr>` 這類元素把 `/` 兩邊拆成不同文字節點時,斜線前面會漏加空格的問題 - 拿掉了 `package.json``module` 欄位 - 拿掉了 `package.json``browser` 欄位 - 瀏覽器端請改用 `import pangu from 'pangu/browser'`,本來就是文件建議的用法,型別也一直是對的 - 之前用 bundler 直接 `import pangu from 'pangu'`,執行時會拿到瀏覽器版本,但是 TypeScript 給的型別是 Node.js 版本 -`<script>` 載入 UMD 檔案、或是已經在用 `pangu/browser` 的話都不受影響 - 支援的 Node.js 版本改成 v20 以上 ## v8.2.0 / 2026-07-26 - 修正引號的加空格規則,當引號的內容跨越換行時,不會再把引號外面本來就有的空格吃掉 ## v8.1.0 / 2026-07-26 - 修正 `-` `*` `=` `<` `>` `_` `+` 這些符號的加空格規則,夾在半形字元中間時會跟兩邊黏成同一個詞,不會再被拆開 - 修正 `+` 在字尾的加空格規則 - 修正 `|` 的加空格規則,同一行只要有 `|` 直接貼著中文,整行的 `|` 都會當成分隔符來加空格,例如 `標題|網站名稱` 會變成 `標題 | 網站名稱` - 修正 `+` 直接貼著中文時會當成分隔符來加空格,跟 `|` 一樣以行為單位來判斷 - 修正 `!` `;` `,` `?` 後面直接貼著中文時的加空格規則,現在不管這些符號前面是什麼字元,都會在符號後面加空格 - 修正純文字中的 `<tag>` 現在會被當成一個詞來加空格,但是一般網頁中的 HTML 標籤不受影響 - 修正文字節點的開頭或結尾是 `&nbsp;`、旁邊又緊接著連結之類的元素時,會多加一個半形空格的問題 - Chrome extension 的工具列圖示新增了 OFF 狀態,切到手動模式、或是目前網址被黑白名單排除時,圖示會換成頭戴紙袋的圖示 - Chrome extension 會在所有網頁啟用瀏覽器原生的 [`text-autospace: normal;`](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-autospace) 排版 - 預設啟用,可以在設定裡關掉 - 需要 Chrome v140 以上版本 - `pangu/browser` 改成只提供 ESM,拿掉了 `require` 條件,`require('pangu/browser')` 會出現 `ERR_PACKAGE_PATH_NOT_EXPORTED` - 用 bundler 的話 `import` 照舊,不受影響 - 在瀏覽器裡直接用 `<script>` 載入 UMD 檔案的方式也不受影響 ## v8.0.0 / 2026-07-19 - 各位觀眾!Paranoid Text Spacing 演算法 v8! - 修正有些網頁加空格會抖動的問題 - 修正 `/``&` 的加空格規則 - 修正單獨出現的 `&nbsp;` 會造成空格判斷錯誤的問題,現在會先把它當成一般的半形空格 - 修正引號緊鄰日文時,空格規則跟中文不一致的問題 - 修正同一批動態新增的相鄰節點之間會正確加空格了 - 修正兩個變動的節點中間如果隔著沒變動的內容,不會再把它們誤判成相鄰節點而加錯空格 - 修正連結被其他元素包住、後面又接著其他文字時,連結前後漏加空格的問題 - 修正兩段文字中間本來就有空白時,不會再多加一個空格,之前隔著 `<a>` 這類元素、或空白被包在 `<span>` 這類元素裡時會看不到那個空白 - 又一次史詩級性能提升! ## v7.2.1 / 2026-03-02 - 修正在 CSS Grid 和 Flexbox 容器裡插入 `<pangu>` 元素會破壞排版的問題 - 移除 Chrome extension 的 `file://` host permission ## v7.2.0 / 2025-07-05 - 趁末日前更新一下,不然以後就沒機會了 - 修正在 Google Calendar 會不小心在 CSS 隱藏元素與中文之間加空格的問題 ## v7.0.0 / 2025-07-02 - 各位觀眾!Paranoid Text Spacing 演算法 v7 橫空出世! - 會自動判斷某些元素是不是被 CSS 隱藏來決定要不要加空格 - 不會把半形的標點符號轉成全形了 - 史詩級性能提升! - 把 XPath 換成 [TreeWalker](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker),快他媽 5 倍! - 比較慢的操作都丟到 [requestIdleCallback()](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback),內容太多的網站終於不卡了! - Chrome/Firefox 都有支援 `requestIdleCallback()`,但是 Safari 不支援 ## v6.1.3 / 2025-07-01 - 修正 Asana 的 comments 會被重複加空格的問題 ## v6.1.2 / 2025-06-30 - 修正 Node.js imports ## v6.1.0 / 2025-06-30 - 各位觀眾!Paranoid Text Spacing 演算法 v6.1 - 好啦好啦,我要去玩死亡擱淺 2 了 ## v6.0.0 / 2025-06-28 - 各位觀眾!Paranoid Text Spacing 演算法 v6 - 特別處理了各種括號 `()` `[]` `{}` `<>``/` 的問題,仁至義盡了 ## v5.3.2 / 2025-06-27 - 在 popup 加了一個方便把目前的網址加到黑名單的按鈕 ## v5.2.0 / 2025-06-26 - 各位觀眾!Paranoid Text Spacing 演算法 v5 ## v5.1.1 / 2025-06-24 - 偉哉 Claude Code,精雕細琢的 v5.1.0 終於推出啦! - 雖然看起來好像只是換了一個新 UI,但是爽啦! ## v5.0.0 / 2025-06-17 - 請 Claude Code 把 Chrome extension 升級成 Manifest v3 了 - 請 Claude Code 幫我把 codebase 改寫成 TypeScript 了 ## v4.0.7 / 2019-02-15 - 修正 `“ ”` 的問題 ## v4.0.6 / 2019-02-04 - 修正 `,` 的問題 - 新增 `pangu` 指令 ## v4.0.5 / 2019-01-30 - 修正 `<pre>` 的問題 ## v4.0.4 / 2019-01-29 - 修正 Bilibili 影片會消失的問題 ## v4.0.3 / 2019-01-29 - 修正 `node.isContentEditable` 的問題 ## v4.0.2 / 2019-01-29 - 修正 `<code>` 的問題 - 修正 `<i>` 的問題 - 修正 `・` 的問題 ## v4.0.0 / 2019-01-27 - 各位觀眾!Paranoid Text Spacing 演算法 v4 - 大幅地改進 Chrome extension 的效能,使用 `MutationObserver``debounce` - 忍痛拿掉「空格之神顯靈了」 - 修正 `Pangu.spacingText()` 的 error callback - 新增 `BrowserPangu.autoSpacingPage()` ## v3.3.0 / 2016-12-28 - 修個 bug 好過年 - 修正在 Twitter 上跟 Buffer 一起使用時會隨機出現的錯誤問題 ## v3.2.1 / 2016-06-26 - 又他媽改善效能問題 ## v3.2.0 / 2016-06-26 - 修正效能問題 ## v3.1.1 / 2016-06-26 - 剛吃完烤肉來改進一下 Paranoid Text Spacing 演算法 ## v3.1.0 / 2016-06-25 - `NodePangu` 新增 `spacingFile()`,支援 callback 與 promise - `NodePangu` 新增 `spacingFileSync()` ## v3.0.0 / 2016-01-10 - Isomorphic! ## v2.5.6 / 2015-05-13 - 大家好,很抱歉這麼快又跟大家見面了 ## v2.5.5 / 2015-05-13 - 持續改進 Paranoid Text Spacing 演算法 ## v2.5.1 / 2015-05-11 - 再次改進 Paranoid Text Spacing 演算法 ## v2.5.0 / 2015-05-11 - 改進 Paranoid Text Spacing 演算法 ## v2.4.2 / 2014-12-10 - 修正 Facebook 留言框的空格錯位 ## v2.4.1 / 2014-12-10 - 修正 `<title>` 網頁標題的加空格 - 修正 `'` 單引號的加空格 ## v2.4.0 / 2014-12-08 - 改進效能 - 完善對雙引號的處理 - 修正 Popup Page 的 CSS 問題 ## v2.3.4 / 2014-03-01 - 再度完善 Paranoid Text Spacing 演算法 - 修正 Options Page 的小錯誤 ## v2.3.3 / 2014-02-16 - 完善 Paranoid Text Spacing 演算法 ## v2.3.2 / 2014-02-12 - 心血來潮,加個版本號! ## v2.3.1 / 2014-02-10 - 真的不會對 `<code>``<pre>` 裡的文字加空格了 ## v2.3.0 / 2014-02-08 - 威力加強版! - 解決特定情況下在同一個地方會一直加空格的問題 ## v2.2.3 / 2014-02-07 - 不會在 Google+ 的輸入框裡加空格 - 記事本不懂 Vim 的黑 ## v2.2.2 / 2014-02-07 - 銀河大客車指南! ## v2.2.1 / 2014-02-05 - 改進 Paranoid Text Spacing 演算法 ## v2.1.2 / 2014-02-01 - 不會對 `<textarea>` 裡的文字加空格! ## v2.1.1 / 2014-01-31 - 不對 `_` 加空格 -`|` 加空格 - 新增 Popup Page - 空格之神 姍姍來遲 ## v2.1.0 / 2014-01-29 - 解決在 Facebook、Twitter、QQ 空间、百度贴吧等網站輸入文字時游標會亂衝的問題 - 支援 `file:///` 開頭的網頁 ## v2.0.2 / 2014-01-26 - 遇到 `<br>` 就不加空格 ## v2.0.1 / 2014-01-25 - 拿掉 `console.log()` - 修正 Option Page footer 裡的超連結 ## v2.0.0 / 2014-01-24 - 新年新氣象,翻新 Option Page 的 UI 和 Icon - 網址黑白名單可以使用 Chrome 的同步功能(Chrome Storage API) - 修正在 Gmail 中加空格的問題 - 改善效率問題 ## v1.8 / 2013-09-17 - 修正在 Google Docs 中游標錯位的問題 - 網址黑、白名單支援 `//` 前綴 ## v1.7 / 2012-04-08 - 減少 Chrome extension 的大小 ## v1.6 / 2012-04-04 - 感謝 [@jiefoxi](https://github.com/jiefoxi),現在英文超連結和中文之間也會加上空格了 ## v1.5 / 2012-04-04 - 新增 Firefox 版本 - 目前支援「中文(繁體、簡體)」、「日文(漢字、平假名、片假名)」加空格 - 修正網址黑白名單沒有作用的問題 ## v1.3 / 2012-03-20 - 根據 [@Fenng](https://github.com/Fenng) 的回報,修正了「新浪微博的 `@` 符號之後不要加空格」的問題 - 新增「簡體中文」語系 ## v1.0 / 第一份工作的某一個下班日 - Paranoid Text Spacing 演算法橫空出世