<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一文讀懂字符、字形、字體

      完整內容也可以在公眾號「非專業程序員Ping」查看

      一、引言

      什么是Character?什么是Glyph?Character和Glyph是否一一對應?我們常說的Font又包含哪些東西?如果要自己實現一套文本的分詞、測量和布局,又需要理清楚哪些概念?ascent、descent、lineHeight之間的關系是怎么樣的?

      本文將盡量以簡潔易懂的方式來解釋以上問題,也可以提前Mark起來,作為日后的速查手冊。

      二、Character

      Character也叫字符,是一個抽象概念,比如字母A、中文等都可以視為一個字符,它只是一個語義單位,不關心具體長什么樣。

      三、Glpyh

      Glpyh也叫字形,表示字符的繪制方式;一個字符可以有多種方式繪制,比如字母A,可以有不同的大小、粗細、斜體、襯線等,但都是同一個字符;這些不同的繪制方式,都叫字形。
      在這里插入圖片描述

      3.1 Character與Glyph的關系

      字符與字形并非一一對應關系,一個字符可以由多個字形表示,比如é可以是e和重音符號的組合,在一些連字情況下,一個字形也可以代表多個字符,如下:
      在這里插入圖片描述

      四、Font

      4.1 Typeface

      指一套具有統一設計風格的Font集合,它是一種設計概念,而不是具體的文件

      4.2 Font

      Font可以理解成Typeface的某個具體實現。

      以Helvetica為例:

      • Typeface:Helvetica
      • Font:
        • Helvetica Regular.ttf
        • Helvetica Bold.ttf
        • Helvetica Italic.ttf
        • Helvetica Bold Italic.ttf

      4.3 Font Family

      Font Family是一組屬于同一個Typeface的字體(Fonts),它們共享設計風格,只是字重/寬度/樣式不同。

      比如:Helvetica是一個Font Family,里面包含字體:

      • Helvetica Regular
      • Helvetica Bold
      • Helvetica Italic
      • Helvetica Bold Italic

      4.4 Font Descriptor

      Font Descriptor(字體描述符)是一種屬性集合(Font Family、Font Weight、樣式 (italic/oblique)、大小等),用來描述或查詢一個字體;它不是字體文件,而是一個“過濾條件”或“配置對象”,在 CoreText 里對應 CTFontDescriptor

      Font Descriptor可以用于匹配系統中符合條件的字體,也可以用它來派生一個具體的CTFont,如:

      // 這里的 descriptor 只是描述條件,真正的字體對象是 font
      let descriptor = CTFontDescriptorCreateWithAttributes([
          kCTFontFamilyNameAttribute: "Microsoft YaHei",
          kCTFontWeightTrait: 0.8
      ])
      let font = CTFontCreateWithFontDescriptor(descriptor, 14, nil)
      

      4.5 Font Collections

      Font Collections是一組字體的集合,通常用于檢索和篩選,在 CoreText 里對應CTFontCollection。

      它可以包含系統中所有可用字體,也可以按條件過濾出子集,主要用途有:

      • 枚舉系統安裝的字體

      • 根據 Font Descriptor 找到所有匹配的字體

      • 做字體選擇器 UI(比如 Word 里的字體下拉框)

      4.6 小結

      image

      4.7 Glyph與Font的關系

      簡單理解,Font里存儲了Glyph的繪制樣式,Glyph與Unicode的映射關系等。

      Font里有各種各樣的表,存儲了Unicode code point與GlyphID的映射關系,每個Glyph繪制時的advance width 和left side bearing等,后續會有單獨的文章詳細解析Font文件內容,這里先理解二者的概念。

      五、文字排版的基本概念

      基本概念 解釋
      metrics 由字體設計師提供,用于描述每個Glyph周圍的間距
      advance width 前進寬度,基線方向到下一個Glyph origin的距離,或者理解為字形繪制完后,光標應該前進多少距離
      left-side bearing Glyph origin與Glyph左側的間距
      right-side bearing Glyph右側與advance width終點的距離
      ascent Glyph origin到Font中最高Glyph的頂部距離
      descent Glyph origin到Font中最低Glyph的底部距離
      bounding box
      bounding rectangle
      包含Glyph可視區域(注意非advance width)最小rect
      kerning 通常,Glyph一般按advance width排列,但為了提高可讀性,通常會引入kerning來擴大或縮小兩個glyph之間的間距,比如W和A:
      image
      leading/linegap line之間的添加的距離
      lineHeight lineHeight = ascent + descent + leading

      一圖勝過千言,貼兩張經典的圖:

      圖一 圖二
      image image

      更多精彩內容歡迎關注??公眾號:非專業程序員Ping

      posted on 2025-10-21 13:16  非專業程序員Ping  閱讀(263)  評論(7)    收藏  舉報

      導航

      主站蜘蛛池模板: 日本丰满少妇高潮呻吟| 四虎影视一区二区精品| 亚洲熟女综合色一区二区三区| 国产欧美亚洲精品a第一页| 亚洲精品漫画一二三区| 伊人久久大香线蕉av色婷婷色 | 熟女女同亚洲女同中文字幕| 性虎精品无码AV导航| 肃北| 国产精品一区在线蜜臀| 国产中文字幕精品免费| 无码任你躁久久久久久久| 这里只有精品免费视频| 国产精品v欧美精品∨日韩| 高清破外女出血AV毛片| 无码h黄肉动漫在线观看| 欧美人妻久久精品| 国产宅男宅女精品A片在线观看| 潜山县| 亚洲AV成人无码久久精品四虎| 国产精品亚洲二区在线播放| 五月丁香六月综合缴情在线| 国产精品中出一区二区三区| 亚洲欧美偷国产日韩| 8x国产精品视频| 伦伦影院午夜理论片 | 国产精品久久久久久无毒不卡 | 青青青爽在线视频观看| 精品久久久噜噜噜久久久| 不卡一区二区三区四区视频| 亚洲欧美日韩综合久久久| 久久精品国产精品亚洲蜜月| 亚洲一区中文字幕第十页| 中文字幕亚洲精品人妻| 国偷自产一区二区免费视频| 熟女蜜臀av麻豆一区二区| 久久综合97丁香色香蕉| 江源县| 国产成人无码区免费内射一片色欲| 少妇仑乱a毛片无码| 2022最新国产在线不卡a|