英文變寬字型的壓縮儲存和顯示

2021-06-22 03:26:15 字數 1020 閱讀 8298

我們知道,不像漢字,每個英文本母寬度是不同的,如果直接採用24x24的點陣位圖, 會浪費不少空間,於是我們可以根據實際寬度按行緊挨著儲存。如果不是8倍數長,比如是11x22,剩餘的位元位填零補齊。 由於一般cpu 字長都是32位的,下面的表示使用32bit乙個,記憶體對齊的儲存更快。

/*英文變寬字型的壓縮儲存和顯示*/

#include

#include

static const unsigned char s_asc_width =

;static const unsigned int s_asc_font =

;static int osd_font_get(char ch, int *w, int *h, const unsigned int **bits)

if(bits)*bits = s_asc_font + j;

if(w)*w = s_asc_width[idx];

if(h)*h = height;

return 0;

}int osd_draw_char_en(char ch, unsigned int *fb, int stride, int x, int y, int w, int h, unsigned int color, unsigned int bgcolor)

{ unsigned int *ptr = fb + (y*stride) + x;

const unsigned int *bits = null;

int height;

int i, j, k, total_bits, width;

if(osd_font_get(ch, &width, &height, &bits))return 0;

total_bits = width * height;

for(i = 0, j = 31, k = 0; i < total_bits; ++i){

ptr[k++] = (*bits & (1<

Hive的壓縮和儲存

資料儲存格式 hive和hadoop一樣,也可以使用壓縮來節省我們的mr處理的網路頻寬。其中壓縮格式和效能,也和hadoop類似。開啟map輸出階段壓縮 開啟reduce輸出階段壓縮 當hive將輸出寫入到表中時,輸出內容同樣可以進行壓縮。屬性hive.exec.compress.output控制著...

UILabel顯示不同的字型和顏色

在專案開發中,我們經常會遇到在這樣一種情形 在乙個uilabel 使用不同的顏色或不同的字型來體現字串,在ios 6 以後我們可以很輕鬆的實現這一點,官方的api 為我們提供了uilabel類的attributedtext,使用不同顏色和不同字型的字串,我們可以使用nsattributedtext ...

locale,中文的顯示和輸入,字型和emacs

reversion 0.5 date 2006 07 22 不使用中文的locale也是可以顯示和輸入中文的,因為從原理上說,對乙個x應用程式,只要它能正確識別要顯示文字的編碼,然後找到相應的字型就能正確顯示,而對中文的輸入來說,在能正確顯示的前提下,只要能知道來自輸入法的文字的編碼也能正確輸入。那...