共用方式為


字元和字元執行

字元和字元執行可在DirectWrite API 的最低功能層使用,也就是圖像轉譯層。

字符

字元是指定字型中字元的實體標記法。 字元可能會有許多字元,且系統上的每個字型都可能會為該字元定義不同的字元。

兩個或多個字元也可以合併成單一圖像,此程式稱為圖像組合。 這也可以以相反方向完成,單一圖像會分割成多個圖像,稱為圖像分解。

替代字元

字型可能會提供字元的替代字元,例如 Pericles OpenType 字型的文體替代字元,如下列螢幕擷取畫面所示。 'A'、'E' 和 'O' 字元會以文體替代字元轉譯。

螢幕擷取畫面:使用替代字元的 「a」、「e」 和 「o」

替代字元的另一個範例是 swash 字元。 下列螢幕擷取畫面顯示 Pescadero 字型的標準和 swash 字元。

標準和 Swash 字元中字母 「a」 到 「n」 的螢幕擷取畫面

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

如需詳細資訊,請參閱 如何實作自訂文字轉譯器 主題。