Tag: a71d5d

  • Not Again, MingLiu!

    長話短說,從 FreeType 2.4.4 (2010-11-28 release) 開始,只要編譯的時候有啟用 BCI (Byte Code Interpreter) ,新細明體就不應該會破掉了,只是因為一些原因 (下面詳述),一直到 2.4.5 (2011-06-24 release) 才算是完全解決。 這個問題牽扯到許多有趣知識,所以我決定作個筆記以免以後忘掉。 TrueType 首先是一些名詞解釋,TrueType 是常見的字型 (font) 格式,由 Apple 發展,後來被 Microsoft 採用並發揚光大;雖然沒有經過任何國際組織的標準化,在當時儼然已經成為業界標準 (de facto standard)。 TrueType 使用的檔案格式又稱為 sfnt 格式,由許多不同的表格 (table) 組成,每個表格由四個字的標籤 (tag) 表示,其中我們最關心的是 glyf 這個表格,因為所有的字符 (glyph) 都儲存在這個表格內。每個字符僅僅紀錄了形狀,要知道某個編碼的某個字元 (character) 是對應到哪個形狀,還要透過 cmap這個表格來查詢;也有一個字沒有相對應的字符,或是沒有任何字對應到某個字符的情況。 參考資料: Hinting (Instructing) TrueType 是一種外框字型 (Outline Font),也就是說每一個字符都是以向量圖形的方式呈現,理論上可以在各種不同解析度下呈現相同的形狀。 但是越是在低解析度的時候,由於可用的像素較少,越容易遇到邊界的表達能力問題,如右圖的 M 字,若沒有對齊像素點的話,呈現出來的圖案就會比較瘦長且左右不對稱,如果稍微向右移動並加寬一點,呈現出來的圖案就會比較接近原本向量圖形所預期的形狀;這個動作正是 Hinting […]

  • Understanding UUID

    通用唯一識別碼 (Universally Unique IDentifier, UUID) 或是全域唯一識別碼 (Globally Unique IDentifier, GUID) 是一個 128 bits 的整數,並保證其在時間與空間的分佈都是獨一無二的。UUID 由開放軟體基金會(OSF) 標準化後用在他們的 DCE 系統上,後來在微軟的 COM 系統上發揚光大。除此之外在許多地方也都可以看到 UUID 的身影,如 Linux 上的分割表/區塊裝置就是以 UUID來標示,或是RSS 的 <guid> 標籤也可以使用 UUID,實際上 UUID 是標準的URN 表示法之一,你可以在任何需要標示單一物件的地方使用 UUID。 UUID 的文字形式為一個 8-4-4-4-12 的十六進位表示,共有 16 個 bytes,有人說使用 UUID 不方便人類辨識,但了解 UUID 的組成後你還是可以從這個表示法看出一些端倪來。本文參考的是 IETF 版本的 RFC4122。 UUID 共有四個版本,第 13 個字元的位置就是表示版本號。第一種是以時間和網路卡號組成,時間是以一百奈秒為單位,網路卡號理論上是不會重複的,再加上clock_seq 這個每次開機重設一次的亂數欄位,就算時間回朔了也不會重複,代號是 1。第二種和第四種是以命名空間加上一個 hash 組成的,分別可以使用MD5 […]

  • TOP 20 Space-Hungry Packages

    Arch Linux 與 Debian 皆可以在安裝的時候選擇最小安裝,究竟哪一個Distribution 在使用一段時間之後最佔空間呢? 剛安裝完的時候似乎是 Arch比較小一點,但是因為 Debian 套件切的比較細,所以最後可能是 Debian 會比較小。 當初在試用 Arch 的時候寫了小程式來畫出前 20 個最佔空間的套件,並依此來瘦身,結果如下: 兩邊因為安裝的套件種類不同因此無從比較,Arch 的 TeXLive 因為沒有切所以會比 Debian 上較大一點,Debian 上的 ghc6 則是為了測試 xmonad 裝的,Haskell 本身做出來的執行檔就頗大,ghc6 需要 369MB 實在不意外… 底下是製作圖片的程式,實際上是用 Google Chart API 畫的: 把 PKGSIZE_PROG 代換成自己 Distro 的就可以了: Debian: Arch:

  • Display VCS info in prompts

    通常 VCS (Version Control System) 都會在工作目錄底下藏一些特殊目錄用來儲存資訊,如 .svn .git .hg 等,因此我們可以在 shell prompt 上動一些手腳,當我們進到 VCS 工作目錄時,自動顯示相關的訊息在 prompt 上。 而 zsh-beta 4.3.6-dev-0+20080921-1 內建了由 Frank Terbeck 開發的 vcs_info 子系統,可以自動偵測 bzr, cdv, CVS, darcs, git, hg, mtn, p4, svk, svn, tla 等多種 VCS,並設定相關的環境變數可以顯示在 prompt 上。 我的 prompt 設定如下 詳細的設定請參閱 zshcontrib(3) GATHERING INFORMATION FROM VERSION CONTROL SYSTEMS

  • Emacs 使用 Xft

    Emacs 22 有新的 gtk 介面以及更進步的 unicode 支援,而使用 xft 來顯示字體的部份程式則進了 emacs-unicode-2 這個 branch,據說這會是 Emacs 23 的候選之一。 從 CVS 編譯好 emacs 23 之後,照著一些網路上的教學,的確讓英文的部份變成了 Xft 顯示的漂亮字型,但是中文部份仍然是使用醜醜的 bitmap (X font, 因為我沒有安裝中文字型所需要的相關檔案),網路上也甚少提及如何設定中文的 Xft 字型,大部份都還是用 X font。 其實很簡單,只要: “–enable-font-backend” 一定要加,因為預設沒有開啟除了 X font 以外其他任何 backend。 Screenshot: Update: 先前設定字型的部份,英文的設定會蓋掉中文的部份,現在已經修正。