計算機系統是如何顯示乙個字元的?

時間 2021-05-14 16:26:24

1樓:桃花島主

先挖個坑慢慢填。

鑑於本人搞軟體出身,一下內容中硬體和驅動相關部分基本不談,而以軟體為主。

先來段廢話:字元的輸入和輸出是有UI的計算機的兩項基本功能,這兩塊的水很深,簡單的乙個高中生可以很快寫出來,稍複雜點的足以解決乙個程式設計師團隊的溫飽。

先看流程

最簡單字元輸入的過程:a輸入裝置產生輸入訊號後,b根據鍵盤的布局產生基礎字元,c根據多個基礎字元和轉換表產生中間字元並由使用者選擇,(d複雜點的話中間字元再根據輸入和字典產生最終字元),e然後將中間字元(或最終字元)作為結果傳給客戶程式。

例項:a按下鍵盤從下往上第5行左側第二個鍵,b根據鍵盤布局不同產生基礎字元如q,a,z此處以q為例c查表產生中間字元列表奇,起,氣等,假設使用者選擇氣d查字典得到氣氛,氣球等候選詞,使用者再選澤氣氛e使用者將最終詞氣氛傳給客戶程式。使用者程式就得到氣氛乙個串文字輸出的簡單過程

1對使用者傳入乙個字串進行編碼轉換

2.對字串進行編碼重整

3.根據字元屬性分隔

4 根據字型檔資訊獲得字元和字型的度量資訊列表5根據度量資訊和顯示寬度將文字分為多行

6根據度量資訊排布字形計算每個字形的位置

7按照字形位置將字形繪製到畫布上

今夜到此為止,明日繼續

2樓:

要想深刻的理解計算機如何顯示字元,我推薦的步驟如下:

學習使用最簡單的51微控制器配合一塊最簡單的12864液晶屏顯示乙個字元。

如果嫌麻煩,端詳12864液晶螢幕,仔細觀察上邊的小方塊,心中想乙個字元,腦補小方塊被點亮的情景,就理解了字元是如何顯示出來的。

3樓:左慶

想象一下你現在在記事本裡面打字(只考慮英文輸入),然後按照我下面說的來思考:

1.鍵盤上的每個鍵都有乙個編號,比如按鍵A用編號VK_A來表示。CapsLock用VK_Cap表示,

Shift用VK_Shift來表示。

2.大小寫的切換。記事本程式內部(也有可能是作業系統就記錄了)需要乙個標記位來記錄現在是大寫還是小寫。

假設這個標記是Cap_Flag,預設是Cap_Flag為false,按一下就變成true,再按一下就變成false。

3.Shift鍵。你按下VK_A鍵的時候,程式會判斷VK_Shift是不是也被按下去了,還有當前Cap_Flag的狀態。根據這三者來確定你現在輸入的是大寫A還是小寫a。

4.字元的儲存。純英文本元很少,不超過256個。

其實主要就是大寫A到Z,小寫a到z,數字0到9.其他的比如空格(Space),製表符(Tab),換行符(Enter),再具體的就不細說的。總之每個字元有乙個數字來儲存它。

不同的字符集儲存字元的時候可能不同,有的能存的多,有的能存的少,有的幾種字符集有重疊部分,有的不重疊。

5.字型。每個字元長什麼樣,這叫做字型。就和書法一樣,有正楷,有草書,隸書等等。字元的字型常用的比如宋體,黑體,仿宋,英文的比如Times new Roman.

6.每個字元的樣子是怎麼儲存的。每種字型應該要儲存所有字元的樣子,不過也許有些字元根本就沒存,顯示的時候可能就是乙個方框。

字型可能用畫素矩陣儲存,也許用向量圖儲存。所謂畫素矩陣就好比活字印刷術的活字吧(好比印章一樣),那字只能那麼大,放大縮小都可能不清晰。向量圖就是一些線條,粗多少,長多少,有一些基本元素組成,等確定了字要以多大顯示之後再柵格化到畫素上。

4樓:

在UNIX終端上和DOS裡 , 字元是終端或顯示卡(使用內建字型檔)繪製的,不但跟unicode和freetype什麼的沒有任何關係,而且跟作業系統都沒有關係。

印表機也是如此:當你把乙個文字檔案直接傳送給印表機,印表機使用內建的字型檔繪製每個文字和符號

5樓:Belleve

大體過程是:字元編碼(Unicode)→字型的字形索引(Glyph ID)→字形輪廓→位圖字形

具體細節的話去看 Freetype 原始碼好了

const char 指向的是乙個字元,還是乙個字串?

Yan Ni 它是個指向常量的指標。你對它解引用,就指向乙個字元 你對它進行字串的操作strcpy strlen等等,它就是乙個字串。而且,C語言並不保證這個const char 一定能指向乙個字串,你可以隨便指,然後C語言就會認為從這裡一直到它遇到的第乙個 0就是它所指的字串。 Sunchy321...

python如何統計乙個字串中各字元的數量?

Shreck Ye 其實因為字符集是已知而且連續的,直接按字元編碼對映到乙個記憶體陣列裡面效率要比字典更高。不過既然是Python,變數都是用字典存的,效率似乎就無所謂了,更重要的是怎麼寫更簡單更快。這裡用字典也更方便簡單,參照高讚答案用collections.Counter一行就可以解決更好。 2...

C語言,用陣列定義乙個字串,那這個字串是怎麼儲存在這個陣列中的呢?

the gc 對於scanf的 s的解釋如下 Matches a sequence of non white space characters the nextpointer must be a pointer to the initial element of acharacter array t...