iOS 核心圖形之CGFont
前言
UIFont
的底層實現,用於繪製文字的一組字元符號和佈局資訊
資料型別
1.CGFontRef
:CGFont
的引用
typedef unsigned short CGFontIndex;
提供指定字形識別符號的附加方法。等價於CGGlyph,可以交替使用這兩種型別的常量
-
CGGlyph
等價於CGFontIndex
typedef CGFontIndex CGGlyph;
kCGFontIndexMax // `CGFontIndex`最大值
kCGFontIndexInvalid // 無效的字型索引
kCGGlyphMax // 與kCGFontIndexMax等價
繪製文字時,指定一個字元序列。不過,Core Graphics
還允許使用CGGlyph
值指定符號。無論哪種情況,Core Graphics
都使用Apple Type Services (ATS)
框架提供的字型資料呈現文字
為函式CGContextShowGlyphs
和CGContextShowGlyphsAtPoint
提供CGGlyph
值。這些函式分別在當前文字位置或指定位置顯示符號陣列
-
CGFontPostScriptFormat
:PostScript
字型子集的可能格式
kCGFontPostScriptFormatType1 // 以`Adobe Type 1`字型格式記錄
kCGFontPostScriptFormatType3 // 在`PostScript`語言參考
kCGFontPostScriptFormatType42 // 在`Adobe`技術說明5012 (Type 42字型格式規範)中有說明,
- 用於字型變化軸字典的鍵
const CFStringRef kCGFontVariationAxisName // 用於從變異軸字典中獲取變異軸名稱的鍵。使用此鍵獲得的值是一個`CFStringRef`,它指定了變化軸的名稱
const CFStringRef kCGFontVariationAxisMinValue // 用於從變化軸字典中獲取最小變化軸值的鍵。使用此鍵獲得的值是一個`CFNumberRef`,它指定了變化軸的最小值
const CFStringRef kCGFontVariationAxisMaxValue // 用於從變化軸字典中獲取最大變化軸值的鍵。使用此鍵獲得的值是一個`CFNumberRef`,它指定了變化軸的最大值
const CFStringRef kCGFontVariationAxisDefaultValue // 用於從變異軸字典中獲取預設變異軸值的鍵。使用此鍵獲得的值是一個`CFNumberRef`,它指定變數軸的預設值
Retain & Release
CGFontRef CGFontRetain(CGFontRef font); // Retain等同於CFRetain
CGFontRef CGFontRelease(CGFontRef font); // Release等同於CFRelease
建立CGFont
以下方法建立都需要呼叫CFRelease
CGFontRef CGFontCreateCopyWithVariations(CGFontRef font, CFDictionaryRef variations); // 複製
// variations 變體規範字典,包含與字型的變體軸名稱對應的鍵。字典中的每個鍵都是一個變異軸名稱。每個鍵的值是為表示為`CFNumber`物件的特定變化軸指定的值。變數中沒有指定變數軸名稱,則使用字型的當前值
CGFontRef CGFontCreateWithFontName(CFStringRef name) // 通過字型名字建立
// 注意 在核上下文繪製文字之前,必須通過呼叫函式`CGContextSetFont`將字型設定為當前圖形狀態
CGFontRef CGFontCreateWithDataProvider(CGDataProviderRef provider) // 從資料提供程式提供的資料建立字型物件
// 注意 在核心圖形上下文中繪製文字之前,必須通過呼叫函式`CGContextSetFontSize`將字型設定為當前圖形狀態
PostScript字型
CFStringRef CGFontCopyPostScriptName(CGFontRef font) // 獲取字型的`PostScript`名稱
bool CGFontCanCreatePostScriptSubset(CGFontRef font, CGFontPostScriptFormat format) // `Core Graphics`是否可以以`PostScript`格式建立字型的子集
CFDataRef CGFontCreatePostScriptSubset(CGFontRef font, CFStringRef subsetName, CGFontPostScriptFormat format, const CGGlyph *glyphs, size_t count, const CGGlyph *encoding) // 以指定的`PostScript`格式建立字型的子集
CFDataRef CGFontCreatePostScriptEncoding(CGFontRef font, const CGGlyph *encoding) // 以指定的`PostScript`格式建立字型的子集
使用字型表
CFArrayRef CGFontCopyTableTags(CGFontRef font) // 返回與字型的字型表對應的標記陣列
// 返回陣列中的每個條目都是一個4位元組的值,表示一個TrueType或OpenType字型表標記。要以適合32位和64位架構的方式獲得索引k處的標記,需要使用類似於以下程式碼 : tag = (uint32_t)(uintptr_t)CFArrayGetValue(table, k);
CFDataRef CGFontCopyTableForTag(CGFontRef font, uint32_t tag) // 返回與提供的標記對應的字型表
獲得字型資訊
CFTypeID CGFontGetTypeID(void) // 獲取TypeId
CFArrayRef CGFontCopyVariationAxes(CGFontRef font) // 返回字型的變體軸字典陣列
CFDictionaryRef CGFontCopyVariations(CGFontRef font) // 返回字型的變體規範字典
CFStringRef CGFontCopyFullName(CGFontRef font) // 獲取字型全名
int CGFontGetAscent(CGFontRef font) // 返回字型的上升率 ***上升是字型中字形基線以上的最大距離
int CGFontGetDescent(CGFontRef font) // 返回字型的下移 *** 下降是字型中字形基線以下的最大距離
int CGFontGetLeading(CGFontRef font) // 返回字型的前導 *** 字型中連續文字行之間的間距。該值以字形空間單位指定
int CGFontGetCapHeight(CGFontRef font) // 返回字型的帽高 *** 字型中字形的平直大寫字母頂部基線以上的距離
int CGFontGetXHeight(CGFontRef font) // 返回字型的x高度 *** 字型中字形的平直、非升序小寫字母(如x)頂部基線以上的距離
CGRect CGFontGetFontBBox(CGFontRef font) // 返回字型的邊框 *** 字型中所有字形的所有包圍框的聯合
CGFloat CGFontGetItalicAngle(CGFontRef font) // 返回字型的斜體角度 *** 字型的斜體角,從垂直方向逆時針角度測量
CGFloat CGFontGetStemV(CGFontRef font) // 字型中占主導地位的垂直字形的粗細
bool CGFontGetGlyphBBoxes(CGFontRef font, const CGGlyph *glyphs, size_t count, CGRect *bboxes) // 獲取陣列中每個字形的邊界框
CGGlyph CGFontGetGlyphWithGlyphName(CGFontRef font, CFStringRef name) // 字型物件關聯的字形名稱的字形
CFStringRef CGFontCopyGlyphNameForGlyph(CGFontRef font, CGGlyph glyph) // 指定字形的字形名稱
size_t CGFontGetNumberOfGlyphs(CGFontRef font) // 字形的數目
bool CGFontGetGlyphAdvances(CGFontRef font, const CGGlyph *glyphs, size_t count, int *advances) // 獲取所提供陣列中每個字形的前進寬度
int CGFontGetUnitsPerEm(CGFontRef font) // 字型的符號空間單元數
相關文章
- iOS 圖形效能優化iOS優化
- iOS 圖形效能最佳化iOS
- canvas核心技術-如何繪製圖形Canvas
- Django之圖形驗證碼Django
- NVIDIA開始開源其Linux核心圖形驅動程式Linux
- 002.02 Tkinter 圖形介面之文字範例
- 圖形學之Unity渲染管線流程Unity
- jmeter學習指南之結果分析-圖形圖表JMeter
- Flutter 自定義 Widget 之餅形圖實戰Flutter
- 圖形化還原崩潰地址 iOS的crash檔案分析iOS
- 畫影圖形: SVG & Canvas 圖形對比SVGCanvas
- 計算機圖形學之矩陣變換計算機矩陣
- 前端之圖形學-1 資料視覺化前端視覺化
- 微信小程式之裁剪圖片成圓形微信小程式
- 手機寫作業系統之 圖形模式作業系統模式
- iOS面試準備之思維導圖iOS面試
- 箱形圖(python畫圖)Python
- Linux核心之 核心同步Linux
- 繪製圖形
- echarts環形圖Echarts
- iOS圖形處理概論:OpenGL ES,Metal,Core Graphics,Core Image,GPUImage,OpenCV等iOSGPUUIOpenCV
- iOS神技之動態更換APP的Icon圖iOSAPP
- 《iOS之導航控制器的使用圖解》iOS圖解
- 計算機圖形:三維觀察之投影變換計算機
- 159_模型_Power BI 地理分析之形狀地圖模型地圖
- iOS 生成二維碼/條形碼iOS
- css 畫圖形大全CSS
- Java的圖形列印Java
- matplotlib繪製圖形
- python 圖形初學Python
- 圖形的認識
- Drawable圖形定製
- CAD列印圖形教程
- 圖形驗證碼
- java:繪製圖形Java
- iOS 動畫之Spring動畫、Block動畫、GIF圖iOS動畫SpringBloC
- weex踩坑之image圖片在ios/Android不顯示iOSAndroid
- halcon運算元之如何畫各種互動ROI圖形