Skip to main content

Search OfficeIMO

Enter a topic, API type, or PowerShell command.

Documentation Search all OfficeIMO/

API Reference

Class

OfficeFontFaceCollection

Namespace OfficeIMO.Drawing
Assembly OfficeIMO.Core
Modifiers sealed

Scoped caller-supplied font faces used by drawing measurement, rasterization, and SVG export. Direct TrueType/OpenType, WOFF 1, WOFF 2, CFF/CFF2, and variable-font containers are handled by the first-party engine. An optional provider can override program loading for specialized engines.

Inheritance

  • Object
  • OfficeFontFaceCollection

Usage

This type appears in these public API surfaces even when no hand-authored example is attached directly to the page.

Accepted by parameters

Constructors

public OfficeFontFaceCollection() #

Creates an empty scoped font collection.

Methods

Add 4 overloads
public OfficeFontFaceCollection Add(String familyName, Byte[] data, OfficeFontStyle style = Regular) #
Returns: OfficeFontFaceCollection

Adds or replaces one family/style face. Invalid or unsupported font bytes throw.

Parameters

familyName System.String requiredposition: 0
data System.Byte[] requiredposition: 1
style OfficeIMO.Drawing.OfficeFontStyle = Regular optionalposition: 2
public OfficeFontFaceCollection Add(String familyName, Byte[] data, OfficeFontFaceDescriptor descriptor) #
Returns: OfficeFontFaceCollection

Adds or replaces one numerically described family face. Invalid or unsupported font bytes throw.

Parameters

familyName System.String requiredposition: 0
data System.Byte[] requiredposition: 1
descriptor OfficeIMO.Drawing.OfficeFontFaceDescriptor requiredposition: 2
public OfficeFontFaceCollection Add(String familyName, Byte[] data, OfficeFontStyle style, OfficeFontUnicodeRangeSet unicodeRanges) #
Returns: OfficeFontFaceCollection

Adds or replaces one unicode-range-constrained family/style face. A deterministic internal resource family is assigned when the range does not cover all Unicode scalars.

Parameters

familyName System.String requiredposition: 0
data System.Byte[] requiredposition: 1
style OfficeIMO.Drawing.OfficeFontStyle requiredposition: 2
unicodeRanges OfficeIMO.Drawing.OfficeFontUnicodeRangeSet requiredposition: 3
public OfficeFontFaceCollection Add(String familyName, Byte[] data, OfficeFontFaceDescriptor descriptor, OfficeFontUnicodeRangeSet unicodeRanges) #
Returns: OfficeFontFaceCollection

Adds or replaces one unicode-range-constrained, numerically described family face.

Parameters

familyName System.String requiredposition: 0
data System.Byte[] requiredposition: 1
descriptor OfficeIMO.Drawing.OfficeFontFaceDescriptor requiredposition: 2
unicodeRanges OfficeIMO.Drawing.OfficeFontUnicodeRangeSet requiredposition: 3
public OfficeFontFaceCollection AddAlias(String aliasFamilyName, String sourceFamilyName) #
Returns: OfficeFontFaceCollection

Adds another family name for all faces already registered under an existing family. The alias reuses the immutable decoded font programs without decoding or copying them again.

Parameters

aliasFamilyName System.String requiredposition: 0
Additional family name accepted by measurement and export.
sourceFamilyName System.String requiredposition: 1
Existing family whose faces and unicode ranges are reused.

Returns

This collection for fluent configuration.

public OfficeFontFaceCollection AddFallbackFamily(String familyName) #
Returns: OfficeFontFaceCollection

Appends one registered family to the fallback chain used when requested faces do not cover a text element.

Parameters

familyName System.String requiredposition: 0
Registered family or resource family name to append.

Returns

This collection for fluent configuration.

public OfficeFontFaceCollection AddRange(OfficeFontFaceCollection fonts) #
Returns: OfficeFontFaceCollection

Adds independent copies of all faces from another collection.

Parameters

fonts OfficeIMO.Drawing.OfficeFontFaceCollection requiredposition: 0
public OfficeFontFaceCollection AddRangePreservingExisting(OfficeFontFaceCollection fonts) #
Returns: OfficeFontFaceCollection

Adds independent copies of faces from another collection without replacing faces already registered under the same family, resource family, and style. Added faces are considered before existing fallback families, while existing document-scoped faces retain precedence.

Parameters

fonts OfficeIMO.Drawing.OfficeFontFaceCollection requiredposition: 0
public OfficeFontFaceCollection Clone() #
Returns: OfficeFontFaceCollection

Creates an independent collection snapshot.

PlanFallbackRuns 2 overloads
public IReadOnlyList<OfficeFontFallbackRun> PlanFallbackRuns(String text, String familyNames, OfficeFontStyle style = Regular) #
Returns: IReadOnlyList<OfficeFontFallbackRun>

Splits text into grapheme-safe runs using the first scoped family whose selected face covers each text element. Unresolved elements retain the original family list for platform or adapter fallback.

Parameters

text System.String requiredposition: 0
familyNames System.String requiredposition: 1
style OfficeIMO.Drawing.OfficeFontStyle = Regular optionalposition: 2
public IReadOnlyList<OfficeFontFallbackRun> PlanFallbackRuns(String text, String familyNames, OfficeFontFaceDescriptor descriptor) #
Returns: IReadOnlyList<OfficeFontFallbackRun>

Splits text into grapheme-safe runs after matching numeric weight, stretch, and slant for each family.

Parameters

text System.String requiredposition: 0
familyNames System.String requiredposition: 1
descriptor OfficeIMO.Drawing.OfficeFontFaceDescriptor requiredposition: 2
TryAdd 4 overloads
public Boolean TryAdd(String familyName, Byte[] data, OfficeFontStyle style = Regular) #
Returns: Boolean

Attempts to add or replace one family/style face without throwing for unsupported font data.

Parameters

familyName System.String requiredposition: 0
data System.Byte[] requiredposition: 1
style OfficeIMO.Drawing.OfficeFontStyle = Regular optionalposition: 2
public Boolean TryAdd(String familyName, Byte[] data, OfficeFontFaceDescriptor descriptor) #
Returns: Boolean

Attempts to add or replace one numerically described family face.

Parameters

familyName System.String requiredposition: 0
data System.Byte[] requiredposition: 1
descriptor OfficeIMO.Drawing.OfficeFontFaceDescriptor requiredposition: 2
public Boolean TryAdd(String familyName, Byte[] data, OfficeFontStyle style, OfficeFontUnicodeRangeSet unicodeRanges) #
Returns: Boolean

Attempts to add or replace one unicode-range-constrained family/style face. A deterministic internal resource family is assigned when the range does not cover all Unicode scalars.

Parameters

familyName System.String requiredposition: 0
data System.Byte[] requiredposition: 1
style OfficeIMO.Drawing.OfficeFontStyle requiredposition: 2
unicodeRanges OfficeIMO.Drawing.OfficeFontUnicodeRangeSet requiredposition: 3
public Boolean TryAdd(String familyName, Byte[] data, OfficeFontFaceDescriptor descriptor, OfficeFontUnicodeRangeSet unicodeRanges) #
Returns: Boolean

Attempts to add or replace one unicode-range-constrained, numerically described family face.

Parameters

familyName System.String requiredposition: 0
data System.Byte[] requiredposition: 1
descriptor OfficeIMO.Drawing.OfficeFontFaceDescriptor requiredposition: 2
unicodeRanges OfficeIMO.Drawing.OfficeFontUnicodeRangeSet requiredposition: 3
public Boolean TryMeasureText(String text, Double fontSize, String familyNames, OfficeFontStyle style, out Double width) #
Returns: Boolean

Attempts to measure text with a matching scoped face.

Parameters

text System.String requiredposition: 0
fontSize System.Double requiredposition: 1
familyNames System.String requiredposition: 2
style OfficeIMO.Drawing.OfficeFontStyle requiredposition: 3
width System.Double@ requiredposition: 4
TryResolveFaceForText 2 overloads
public Boolean TryResolveFaceForText(String text, String familyNames, OfficeFontStyle style, out OfficeFontFace face) #
Returns: Boolean

Resolves the scoped face that covers the supplied text for the requested CSS/Office family list and style. This uses the same unicode-range and fallback rules as measurement and rendering.

Parameters

text System.String requiredposition: 0
familyNames System.String requiredposition: 1
style OfficeIMO.Drawing.OfficeFontStyle requiredposition: 2
face OfficeIMO.Drawing.OfficeFontFace@ requiredposition: 3
public Boolean TryResolveFaceForText(String text, String familyNames, OfficeFontFaceDescriptor descriptor, out OfficeFontFace face) #
Returns: Boolean

Resolves a scoped face using numeric weight, stretch, and slant matching.

Parameters

text System.String requiredposition: 0
familyNames System.String requiredposition: 1
descriptor OfficeIMO.Drawing.OfficeFontFaceDescriptor requiredposition: 2
face OfficeIMO.Drawing.OfficeFontFace@ requiredposition: 3

Properties

public IOfficeFontProgramProvider FontProgramProvider { get; set; } #

Optional decoder and outline engine for formats outside the dependency-free core. The provider reference is retained by collection clones; decoded face programs are immutable.

public Func<OfficeFontProgramLoadRequest, IReadOnlyDictionary<String, Single>> FontVariationResolver { get; set; } #

Optional variable-font axis resolver invoked for each accepted face. Values are clamped to the font-defined axis range; unknown axes and non-finite values fail closed.

public IReadOnlyList<OfficeFontFace> Faces { get; } #

Registered faces in registration order.

public IReadOnlyList<String> FallbackFamilies { get; } #

Registered fallback families considered after the families requested by a text run.

Extension Methods

public static OfficeImageExportDiagnostic CreateSubstitutionDiagnostic(OfficeFontFaceCollection fonts, String text, String familyNames, OfficeFontStyle style = Regular, String source = null) #
Returns: OfficeImageExportDiagnostic

Reports when the renderer cannot use the first requested font family/style and must select a later family or the managed stroke fallback.

Parameters

fonts OfficeIMO.Drawing.OfficeFontFaceCollection requiredposition: 0
text System.String requiredposition: 1
familyNames System.String requiredposition: 2
style OfficeIMO.Drawing.OfficeFontStyle = Regular optionalposition: 3
source System.String = null optionalposition: 4