2008-06-23

GNU Unifont (包含 Unicode 5.1 BMP 內所有字圖的字型)

GNU Unifont 是 Roman Czyborra 從 1998 開始的一項計劃,原因是他意識到,雖然 Unicode Standard 早在 1991 發表,但在標準發表了七年後,卻仍然沒有一個完整可用、不缺字的 Unicode 字型,所以他決定開始這項計劃。

為了加快計劃的腳步,讓大家早日有一個完整 Unicode 字元集的字型可用,他不對字型的預期品質要求太高,先求有,日後再動員社群來幫忙補完與美化,並只做一個尺寸為 8x16 或 16x16 的點陣字型。為什麼在 1998 那個 Truetype 已然成熟的年代仍選擇用 bitmap 的字型格式呢?這是因為 Roman 認為 bitmap 字型在各平台都可以讀取(只要用對方法),雖然字型的品質只能受限於有限的 8x16 或 16x16 的方格,但 bitmap 規格上的侷限與簡單反而可加快字型完成的腳步,因為字型製作者不需要去調整貝玆曲線、也不需去考慮大小字的顯示效果、hinting……等,而且所需的工具也較為簡單,可以不用去買專業的字型製作軟體就可以製作字型。又因為他覺得 bdf 與 hbf 格式不適合這個計劃,所以他開發了自己的 bitmap 格式 (以 .hex 為結尾),並又開發了將這個格式轉換成 bdf 格式的工具。

十年後,Luis Alejandro González Miranda 在 2008 年 1 月中貢獻了一個將 Roman 的 hex 字型格式轉換成 Fontforge sfd 格式的工具,並同意讓現在的維護者修改使用,所以我們現在有 truetype 的 unifont 了。

這十年來無數人努力的成果累積到今年 (2008) 六月二十,在目前的維護者 Paul Hardy 手上,終於完成了 Unicode 5.1 BMP 內所有的字元!偉哉!

PS. 在 CJK 字元方面,文泉驛絕對該記上一筆,超過兩萬個 CJK 新字是從房骞骞 (FangQ) 主持的 Unibit Font 1.1 中加進來的。

參考資料

GNU_Unifont 在 Wikipedia 的條目
Alejandro González Miranda 的網頁
Roman Czyborra 的 Unifont 舊網頁(現僅存於 Web Archive)
Unifoundry (目前的 Unifont 官方網站)


2008-06-10

讓 Win 與 Linux 的 Firefox 共享 Scrapbooks

相信在 Windows 下使用 Scrapbook 大家都不會有問題,所以本文僅探討在 Linux 上的設定。在開始之前,有幾點必須知道的是:

  • 必須知道 scrapbooks 所在的磁碟是採用 ntfs 還是 fat32 檔案系統。
  • 如果你對 Linux 不熟,且有足夠的 fat32 硬碟空間可以自由使用,建議你將 scrapbook 的資料放在 fat32 比較可靠,因為 linux 對 ntfs 的寫入支援,直到 2007 才出現 ntfs-3g 的穩定版,而對於 fat 的支援已經出現很久了,應該比較成熟。
  • 如果你只剩 ntfs 分割區可使用,那也沒關係,但因為需要使用 ntfs-3g,所以 Linux 核心必須至少大於 2.6.20,或者將 FUSE kernel driver 升級到安全的版本(給 Linux Kernel 2.6.9 版之後的核心使用的 Fuse Package)。
  • 對於 ntfs 的設定,我尚在實驗中,目前大致上可用,但穩定性仍需要一段時間考驗。我的經驗是,全文搜尋的時候,有時會停住,不知是 scrapbook 本身的 bug 還是我的 scrapbook 資料太多的緣故。

當 scrapbooks 位於 fat32 磁區時

  1. 編輯 /etc/fstab (需要 root 權限),加入這一行 (以下都在同一行哦!)
  2. /dev/hda5 /media/d vfat defaults, codepage=950, iocharset=utf8, user, umask=0027, uid=1000, gid=1000, noauto 0 0

    • /dev/hda5 是 scrapbook data 所在的磁碟分割區,需要依你自己的系統作調整。
    • /media/d 是掛載點,一樣,需要依你自己的系統作調整。
    • codepage=950,iocharset=utf8 是讓繁體中文可以正常顯示的設定。
    • user 是告訴 linux:任何人都可以掛載這個 partition,但只有該人才可 unmount 這個 partition。
    • umask 設定是讓使用者有 rwx 的權限,使用群組有 r-x 的權限,其他人沒有任何權限。
    • uid, gid 是指定掛載的 partition 的擁有者的 uid, gid,如果沒有指定,預設會用目前 process 的 uid, gid。如果你設了 user 選項,讓其他人可以掛載你的 scrapbook 所在的 partition,那麼其他人在使用電腦時若掛載了你的 scrapbook partition,partition 的 uid, gid 就會變成其他人的,那麼他就可以讀取/修改你的 scrapbook 了。所以如果我們指定了 user 選項,但不想讓人隨意動你的資料,最好也指定 uid, gid。在這裡,應該把 uid, gid 指定為你的 Linux 使用者的 uid, gid。(當然你也可以自己設定 group 來管理,這個我就不講了)
    • noauto 如果開機時不想讓系統自動掛載,要加上此選項。
  3. 重新掛載 /media/d 即可。

當 scrapbooks 位於 ntfs 磁區時

  1. 安裝 ntfs-3g
  2. 編輯 /etc/fstab,選項類似 vfat,就不再解釋了。要注意的是:這裡沒有 iocharset,改用 locale。
  3. /dev/hdb5 /media/d ntfs-3g defaults, locale=zh_TW.UTF-8, user, umask=0027, uid=1000, gid=1001 0 0

    • 如果不想自動掛載,可在 defaults 那串再加上 noauto 選項。
    • 另外有一點特別注意,mount 與 ntfs-3g 的配合還有點問題,所以目前 user 選項在此無效,仍必須有 root 權限才能掛載 ntfs-3g 的磁區。我們都知道,scrapbook 需要將資料寫入硬碟,但是,root 掛載的磁區,一般使用者要怎麼寫入呢?用 root 去跑 firefox?當然不用啦!把掛載磁區變成使用者的就可以了,所以在使用 ntfs 的情況下,這裡一定要設 uid,而且 umask 不能擋掉使用者 w 的權限哦!

如何撰寫 Adblock Plus 的過濾規則?

無法查看此摘要。請 按這裡查看文章。

2008-06-07

Firefox 設定檔資料夾內各檔案的用途

  • 資料夾
    bookmarkbackups:
    Fx 1.5 版以後才有,書籤檔的每日備份。
    Cache:
    Fx 1.5 版之前,內有網頁的快取檔。在 1.5 版以後,只有 Windows 上自訂 profile 位置的 profile 裡頭有這個資料夾。用 about:cache 可找到 cache 的位置,詳見 browser.cache.disk.parent_directory
    OfflineCache:
    3.0 以上的版本才有。讓 Web application 可以在離線時存取資料是 Fx 3 新增的功能,暫存的資料就放在這個資料夾。和上面 Cache 一樣,可用 about:cache 來看用前使用的 OfflineCache 實際位置。
    chrome:
    可將 userChrome.css 與 userContent.css 放在這裡。
    extensions:
    安裝的擴充套件都放在這裡。
    microsummary-generators:
    2.0 以後的版本。Regularly-updated succinct compilations of the most important information on web pages.
    minidumps
    放 Crash Reporter 報告的地方。
    searchplugins
    1.5 版以後才有。裡頭放搜尋欄內的搜尋引擎與其圖示的資料。

  • 檔案:
  • .autoreg
    暫存的空檔,用來代表已安裝的擴充套件有變動
    .parentlock (Mac OS X)
    見 parent.lock
    blocklist.xml:
    Fx 2.0 以後的版本才有。是自動下載的一份危險擴充套件的清單。
    bookmarks.bak
    Fx 3.0 之前的版本才有。是 bookmarks.html 的備份。
    bookmarks.html
    Fx 3.0 之前的書籤檔。Fx 3.0 以後的書籤已改用 sqlite 的格式,與瀏覽歷史合併放到 places.sqlite。
    bookmarks.html.moztmp
    和書籤相關的暫存檔。如果有發現這個檔的存在,就移除書籤檔的唯讀屬性,因為唯讀屬性會導致 Fx 產生多個 bookmarks-n.html 的檔案 (n 是數字)。
    bookmarks.postplaces.html
    Fx 3.0 (pre-release) 的檔案,Fx 3.0 Beta 4 與之前的的版本以及 03-14-2008 之前的 nightly 才有,在後來的 Fx 3 版本已不再使用這個檔。
    bookmarks-(date).html in bookmarkbackups
    Fx 1.5 以後的版本才有,是書籤的每日備份檔。
    bookmarks-(date).json in bookmarkbackups
    Fx 3.0 以後的版本才有,是書籤的每日備份檔。
    cert_override.txt
    儲存使用者指定的例外證書(certification exceptions)
    cert8.db
    安全證書
    compatibility.ini
    儲存上次使用這個 profile 的程式的版本與路徑。如果開啟這個 profile 的程式的路徑或版本與上次不同,就會觸發 XPCOM component 的 registration。這個檔是自動產生的,可以刪掉沒關係。
    components.ini
    Fx 1.5 之前用來羅列擴充套件資料夾與 XPCOM components 的檔案,在 1.5 版之後已被 extensions.ini 所取代。
    compreg.dat
    用來列出 registered XPCOM components。會在觸發 XPCOM registration process 時自動產生。
    content-prefs.sqlite
    3.0 以後的版本才有,記錄個人對頁面的設定。
    cookies.sqlite
    Fx 在 3.0 以後,改用 sqlite 紀錄 Cookies。
    cookies.txt
    Fx 在 3.0 之前,用這個純文字檔紀錄 Cookies。
    cookies.txt.moztmp
    和 cookies 相關的暫存檔,如果 Fx 發現這個檔存在,就會移除 cookies.txt 的唯讀屬性,因為如果 cookies.txt 是唯讀的,會導致生成多個 cookies-n.txt (n 是數字)。
    defaults.ini
    Fx 在 1.5 之前用來列出內有預設的 pref files 的擴充套件資料夾,Fx 1.5 以後,已被 extensions.ini 取代。
    downloads.rdf
    Fx 在 3.0 版之前用來紀錄下載歷史的檔案,如果下載很慢或 hang 住可以試著將這個檔案刪掉。
    downloads.sqlite
    Fx 在 3.0 以後,改用 sqlite 來紀錄下載歷史。
    extensions.cache
    Fx 在 1.5 以後才有此檔,裡頭羅列已安裝的擴充套件、擴充套件的 IDs、安裝的資料夾、上次修改的時間,這是用來註冊由拖放資料夾到已知位置的。這個檔是自動生成的,所以可以刪除沒關係,許多問題可藉由刪掉這個檔來解決。
    extensions.log
    ?
    extensions.ini
    Fx 1.5 以後才有,列出已安裝的擴充套件與佈景主題的資料夾。這個檔是由 nsExtensionManager 自動產生,low-level code 會依此去偵側已安裝的附加元件提供的 chrome packages 與 XPCOM components,許多問題可藉由刪掉此檔來解決。
    extensions.rdf
    已安裝擴充套件的資訊。如果擴充套件清單中有些你明明已經反安裝的擴充套件仍然留在清單中,可刪掉這個檔試試看,還有其他問題也可能可以藉由刪掉此檔來解決。
    extensions-startup.manifest
    僅 Fx 1.5 alphas (Deer Park alphas) 使用,後來改用 extensions.cache。
    formhistory.dat
    Fx 3.0 之前的版本使用此檔來儲存表單資料
    formhistory.sqlite
    Fx 3.0 與之後的版本改用 sqlite 格式來儲存表單資料。
    history.dat
    Fx 3.0 之前的版本用來紀錄瀏覽歷史的檔案。可刪掉來解決某些問題。Fx 3.0 與之後的版本改紀錄到 places.sqlite。
    hostperm.1
    Fx 3.0 之前的版本,對每個網站是否允許 cookies 與 popups 的設定放在此檔。
    key3.db
    是 signons.txt、signons2.txt、signons3.txt 的密鑰 (Key database)。
    kf.txt
    Fx 2.0 才有,用於防釣魚資訊的密鑰 (Key database for phishing protection)。
    localstore.rdf
    工具列與視窗大小/位置的設定,有時刪掉可以解決一些介面上的問題。
    localstore-safe.rdf
    Fx 1.5 與之後的版本,用於 Safe Mode 的 localstore.rdf,會將工具列與視窗還原為預設設定。
    lock (Linux)
    見 parent.lock
    mimeTypes.rdf
    下載特定類型的檔案時要執行的動作。可刪掉來還原原來下載的設定。
    parent.lock (Windows)
    用於標記目前這個 profile 是處於「使用中」的狀態。若刪除,可解除對所在的 profile 的鎖定。
    permissions.sqlite
    Fx 3.0 以上。存放特定網站是否可存取密碼、cookies、彈出視窗、圖片載入與附加元件……等權限的資料庫。
    persdict.dat
    個人的拼字字典。
    places.sqlite
    Fx 3.0 以後的版本用來儲存書籤與瀏覽歷史的資料庫。
    places.sqlite-journal
    Fx 3.0 and above,在 Firefox 開啟的狀態下,用來暫時儲存對 places.sqlite 的更新資料。
    places.sqlite-stmtjrnl
    Fx 3.0 and above,用途 ?
    pluginreg.dat
    Fx 3.0 以後用於 plugin 的 MIME types。Fx 3.0 之前 pluginreg.dat 是位於包含 profiles 的 "Firefox" 資料夾。
    prefs.js
    所有的偏好設定。見 about:config。
    search.json
    Fx 3.5 以後才有。是搜尋外掛資料 (search plugin data) 的快取 (cache),使用此快取,而不使用原本剖析 XML 檔的方式,可以改善啟動時間。
    search.rdf
    Fx 2.0 之前,關於 search plug-ins 的資訊。
    search.sqlite
    Fx 2.0 以後,改用 sqlite 來儲存關於 search plug-ins 的資訊。
    secmod.db
    安全模組資料庫
    sessionstore.js
    Fx 2.0 以後才有,用於儲存 sessions。
    signons.txt
    Fx 1.5.0.10 之前、Fx 2.x - 2.0.0.2 之前用於儲存加密後的網站登入資訊(帳號、密碼),需要 key3.db 配合才有用。
    signons2.txt
    Fx 1.5.0.10 以後的 1.5.x、Fx 2.0.0.2 以後的版本,用此檔儲存加密後的網站登入資訊(加密後的帳號、密碼)以及永不儲存密碼的例外網站清單,一樣需要 key3.db 配合才可作用。
    signons3.txt
    Fx 3.0 以後的版本,用於儲存加密後的網站登入資訊(加密後的帳號、密碼)以及永不儲存密碼的例外網站清單,一樣需要 key3.db 配合才可作用。
    signons.sqlite
    Fx 3.5 以後的版本,用於儲存加密後的網站登入資訊(加密後的帳號、密碼)以及永不儲存密碼的例外網站清單,一樣需要 key3.db 配合才可作用。
    urlclassifier.sqlite、urlclassifier2.sqlite、或 urlclassifier3.sqlite
    Fx 2.0 以後的版本新增防釣魚網站的功能,此檔用於儲存釣魚網站的相關資訊
    urlclassifierkey3.txt
    Fx 3.0 以後的版本才有,用於解開防釣魚資訊的密鑰(Key database)
    user.js
    預設並不存在,使用者若有需要,要自行建立。這個檔案內放的是使用者自訂的設定,在這裡的設定會蓋過 prefs.js 的設定。
    userChrome.css in chrome
    預設並不存在,使用者若有需要,要自行建立。這個檔案內放的是使用者對瀏覽器外觀 CSS 自訂的設定。
    userContent.css in chrome
    預設並不存在,使用者若有需要,要自行建立。這個檔案內放的是使用者對網頁 CSS 自訂的設定。
    userChrome.js in chrome
    預設並不存在,使用者若有需要,要自行建立。這個檔案內放的是使用者對瀏覽器行為的自訂設定。
    webappsstore.sqlite
    Fx 2.0 與以後的版本。用於 DOM storage。
    xpti.dat
    列出已註用的 XPCOM 介面。會在觸發 XPCOM registration process 時自動生成。
    XPC.mfasl (Linux)
    ?
    XPC.mfl (Windows)
    ?
    XUL.mfasl (Linux)
    見 XUL.mfl。
    XUL.mfl (Windows)
    Fx 1.5 之前用這個檔作為使用介面資料的快取。一些問題可能可以藉由刪掉此檔來解決。在 Fx 1.5 前,這個檔放在 profile 資料夾內,但 1.5 與之後的版本,只有自 訂 profile folder 的 profile 會有這個檔在裡頭,可由 Cache folder 來看檔案的位置。
    XUL FastLoad File (Mac OS X)
    見 XUL.mfl
更新日誌:
20100308 更新 Wiki 對 Fx 3.5 的一些說明

參考資料: http://kb.mozillazine.org/Profile_folder_-_Firefox