2007年1月28日 星期日

大於與小於50000的差異

在zhcon的basefont.cpp中看到這一段程式碼時, 心中突然有了些感觸。

下面所記載的程式碼,主要的目的是判斷在字型檔大於50000Bytes時,就改採用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!"));
}

沒有留言: