大於與小於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!"));
}
 








沒有留言:
張貼留言