字元和字元執行
字元和字元執行可在DirectWrite API 的最低功能層使用,也就是圖像轉譯層。
字符
字元是指定字型中字元的實體標記法。 字元可能會有許多字元,且系統上的每個字型都可能會為該字元定義不同的字元。
兩個或多個字元也可以合併成單一圖像,此程式稱為圖像組合。 這也可以以相反方向完成,單一圖像會分割成多個圖像,稱為圖像分解。
替代字元
字型可能會提供字元的替代字元,例如 Pericles OpenType 字型的文體替代字元,如下列螢幕擷取畫面所示。 'A'、'E' 和 'O' 字元會以文體替代字元轉譯。
替代字元的另一個範例是 swash 字元。 下列螢幕擷取畫面顯示 Pescadero 字型的標準和 swash 字元。
Swashes 和其他印刷樣式功能,包括更詳細的替代字元,可透過 OpenType取得。 OpenType 印刷樣式功能可以使用 IDWriteTextLayout::SetTypography 套用至文字範圍,並傳遞與所需功能相關聯的 DWRITE_FONT_FEATURE_TAG 列舉常數。
字元執行
圖像執行代表一組連續的字元,這些字元全都有相同的字型和大小,以及相同的用戶端繪圖效果。 底線和刪除線不是所套用文字範圍的字元執行的一部分,稍後會繪製。 影像等内嵌物件也會分開繪製,因為它們不是字型的一部分。
IDWriteFontFace 介面
DirectWrite使用與 Windows Pesentation Foundation 相同的系統, (WPF) ,因此每個字型系列可以有多個實體字型。 字型臉部,例如DirectWrite中的IDWriteFontFace介面,代表具有特定粗細、斜面和延展的實體字型。 它包含字型臉部類型、適當的檔案參考、臉部識別資料和各種字型資料,例如計量、名稱和圖像大綱。
您可以直接從字型名稱建立 IDWriteFontFace ,或從字型集合取得。
字符度量
個別圖像具有與其相關聯的計量。 您可以使用 IDWriteFontFace::GetDesignGlyphMetrics 方法,取得字元執行中所有字元的計量。 這會傳回 DWRITE_GLYPH_METRICS 結構,此結構具有進階寬度、左邊和右側承載、頂端和底端承載、高度和垂直基準原點。
下圖顯示兩個不同字元字元的各種計量。
繪製圖像執行
實作自訂文字轉譯器時,圖像的轉譯是由 IDWriteTextRenderer::D rawGlyphRun處理,這是您實作為衍生自 IDWriteTextRenderer類別一部分的回呼方法。 傳遞至DrawGlyphRun的DWRITE_GLYPH_RUN結構包含IDWriteFontFace物件,名為fontFace,代表整個字元執行的字型臉部。
IDWriteFontFace物件也會提供GetGlyphRunOutline方法,此方法會使用指定的幾何接收回呼來計算字元大綱,例如使用Direct2D轉譯時的ID2D1SimplifiedGeometrySink。
如需詳細資訊,請參閱 如何實作自訂文字轉譯器 主題。