Tag: 0086b3
-
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:
-
Kindle 來我家
做功課 是這樣的,某天在 IRC 上看到某長輩發言 “j5g: Hmm….有點想買 Kindle DX”,小宇宙就有了光,開始上網搜尋 Kindle 相關資訊,經過 Amazon, Wikipedia, Mobile01, MobileRead 無情的生火之後,終於爆炸了啦啦啦!首先是 Kindle DX 的規格: 嗯.. 作業系統是 Linux!有門!趕緊再搜尋一下,的確已經有許許多多成功 Hack Kindle 的案例,其容易的程度,說他是 Hackable Device 也不為過。 開箱 折騰了兩週,訂購的 Kindle DXG 終於在生日當天送達!小小開箱慶祝一下: 開箱之後就是充電,開始把各種不同的文件丟進去測試。這個版本的 Firmware (2.5.5) 對於 PDF 的支援其實已經不錯了,會自動裁掉多餘的留白,內嵌字型也都正常顯示,是一開始閱讀中文的方案之一。測試各種檔案之後發現只有一種不太適合放上來看,就是字很多的雙欄格式論文,因為顯示全頁會顯的字太小,偏偏 150 ppi 的解析度看不太清楚,若是放大瀏覽的話,雙欄論文的走向會需要來回拖拉,而拖拉正是目前 E-Ink® 的弱點… 除此之外,在 Kindle 上面閱讀是非常好的體驗,E-Ink® 的特性可以讓人真的進入閱讀的情境之中,內建的 Text-To-Speech 質量非常好,就有如真人在幫你朗讀一樣,新版的 Firmware 還新增了 Collection 的功能,解決 Kindle 以前一直為人詬病的無法分類電子書的問題,Kindle…
-
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: 先前設定字型的部份,英文的設定會蓋掉中文的部份,現在已經修正。