大於與小於50000的差異
在 zhcon 的 basefont.cpp
中看到這一段程式碼時, 心中突然有了些感觸。
下面所記載的程式碼,主要的目的是判斷在字型檔大於 5000 bytes 時,就改採用 memory mapped 的方式來配置,因為 CJK 所用的字型大部分大於這個容量,所以得另外作一些處理。 而這些細心的念頭, 是在 FreeType 的 PCF部分,還有 libXFont 的 PCF中找不到的。 想當然爾,國外地區的 Hackers 只需要用到 ASCII 的字型,誰會去關心這樣的細節呢?
因此,對於這些 CJK 的基礎建設,我們更應該主動去作才是。
若我們不作,還有誰會來作?
if (mBufSize > 50000) {
//hzfont use mmap
mpBuf = (char *) mmap((caddr_t) 0, mBufSize, PROT_READ,
MAP_FILE | MAP_SHARED, mFd, (off_t) 0);
if (mpBuf == MAP_FAILED)
throw (runtime_error("error in mmap gbfont!"));
} else {
//ascii font read to buffer
mpBuf = (char *) new char[mBufSize];
unsigned nread = read(mFd, mpBuf, mBufSize);
if (nread != mBufSize)
throw (runtime_error("error in reading asciifont!"));
}