CoreText 預備知識點 1

文字排版的基礎概念

字體(Font):
和我們平時說的字體不同,計算機意義上的字體表示的是同一大小,同一樣式(Style)字形的集合。從這個意義上來說,當我們?yōu)槲淖衷O置粗體,斜體時其實是使用了另外一種字體(下劃線不算)。而平時我們所說的字體只是具有相同設計屬性的字體集合,即Font Family或typeface。

字符(Character)和字形(Glyphs):
排版過程中一個重要的步驟就是從字符到字形的轉(zhuǎn)換,字符表示信息本身,而字形是它的圖形表現(xiàn)形式。字符一般就是指某種編碼,如Unicode編碼,而字形則是這些編碼對應的圖片。但是他們之間不是一一對應關系,同個字符的不同字體族,不同字體大小,不同字體樣式都對應了不同的字形。而由于連寫(Ligatures)的存在,多個字符也會存在對應一個字形的情況。

8369_140521152404_1.png

字形描述集(Glyphs Metris)
即字形的各個參數(shù)。如下面的兩張圖:

8369_140521152502_1.png
8369_140521152528_1.gif

邊框(Bounding Box):
一個假想的邊框,盡可能地容納整個字形。

基線(Baseline):
一條假想的參照線,以此為基礎進行字形的渲染。一般來說是一條橫線。

基礎原點(Origin):
基線上最左側(cè)的點。

行間距(Leading):
行與行之間的間距。

字間距(Kerning):
字與字之間的距離,為了排版的美觀,并不是所有的字形之間的距離都是一致的,但是這個基本步影響到我們的文字排版。

上行高度(Ascent)和下行高度(Decent):
一個字形最高點和最低點到基線的距離,前者為正數(shù),而后者為負數(shù)。當同一行內(nèi)有不同字體的文字時,就取最大值作為相應的值。如下圖:

8369_140521152601_1.png

紅框高度既為當前行的行高,綠線為baseline,綠色到紅框上部分為當前行的最大Ascent,綠線到黃線為當前行的最大Desent,而黃框的高即為行間距。由此可以得出:lineHeight = Ascent + |Decent| + Leading。

更加詳細的內(nèi)容可以參考蘋果的這篇文檔: 《Cocoa Text Architecture Guide》。當然如果要做到更完善的排版,還需要掌握段落排版(Paragragh Style)相關的知識,但是如果只是完成聊天框內(nèi)的文字排版,以上的基礎知識已經(jīng)夠用了。詳細的段落樣式相關知識可以參考: 《Ruler and Paragraph Style Programming Topics》

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1.iOS中的round、ceil、floor函數(shù)略解 round如果參數(shù)是小數(shù),則求本身的四舍五入.ceil如果...
    K_Gopher閱讀 1,265評論 1 0
  • 文字排版的基礎概念 字體(Font):和我們平時說的字體不同,計算機意義上的字體表示的是同一大小,同一樣式(Sty...
    iOS白水閱讀 705評論 0 0
  • 文字排版的基礎概念 字體(Font):和我們平時說的字體不同,計算機意義上的字體表示的是同一大小,同一樣式(Sty...
    jobs_chen閱讀 1,463評論 0 0
  • 野航舊詩集自序 選夢無端,此生何似?攖茲濁縛,哪便靈飛?嚶嚶在耳,猶繞頻伽之音;滔滔滿目,方革文化之命。影幻菱花,...
    李野航閱讀 512評論 3 3
  • [行者無疆]《與孩子共享自然》D3(喚醒計劃D5/23)畫好游覽地圖。第三天帶讀里提到探索大地之心,可以把經(jīng)過的地...
    wxgcgb閱讀 222評論 0 0

友情鏈接更多精彩內(nèi)容