FontSavingArgs Class

Provides data for the FontSaving(FontSavingArgs) event.

ExpandedInheritance Hierarchy

SystemObject
  Aspose.Words.SavingFontSavingArgs

Namespace:  Aspose.Words.Saving
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 21.5.0

ExpandedSyntax

public class FontSavingArgs

The FontSavingArgs type exposes the following members.

ExpandedProperties

  NameDescription
Public propertyCode exampleBold
Indicates whether the current font is bold.
Public propertyCode exampleDocument
Gets the document object that is being saved.
Public propertyCode exampleFontFamilyName
Indicates the current font family name.
Public propertyCode exampleFontFileName
Gets or sets the file name (without path) where the font will be saved to.
Public propertyCode exampleFontStream
Allows to specify the stream where the font will be saved to.
Public propertyCode exampleIsExportNeeded
Allows to specify whether the current font will be exported as a font resource. Default is true.
Public propertyCode exampleIsSubsettingNeeded
Allows to specify whether the current font will be subsetted before exporting as a font resource.
Public propertyCode exampleItalic
Indicates whether the current font is italic.
Public propertyCode exampleKeepFontStreamOpen
Specifies whether Aspose.Words should keep the stream open or close it after saving a font.
Public propertyCode exampleOriginalFileName
Gets the original font file name with an extension.
Public propertyCode exampleOriginalFileSize
Gets the original font file size.

ExpandedMethods

  NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)

ExpandedRemarks

When Aspose.Words saves a document to HTML or related formats and ExportFontResources is set to true, it saves each font subject for export into a separate file.

FontSavingArgs controls whether particular font resource should be exported and how.

FontSavingArgs also allows to redefine how font file names are generated or to completely circumvent saving of fonts into files by providing your own stream objects.

To decide whether to save a particular font resource, use the IsExportNeeded property.

To save fonts into streams instead of files, use the FontStream property.

ExpandedExamples

Shows how to define custom logic for exporting fonts when saving to HTML.
public void SaveExportedFonts()
{
    Document doc = new Document(MyDir + "Rendering.docx");

    // Configure a SaveOptions object to export fonts to separate files.
    // Set a callback that will handle font saving in a custom manner.
    HtmlSaveOptions options = new HtmlSaveOptions
    {
        ExportFontResources = true,
        FontSavingCallback = new HandleFontSaving()
    };

    // The callback will export .ttf files and save them alongside the output document.
    doc.Save(ArtifactsDir + "HtmlSaveOptions.SaveExportedFonts.html", options);

    foreach (string fontFilename in Array.FindAll(Directory.GetFiles(ArtifactsDir), s => s.EndsWith(".ttf")))
    {
        Console.WriteLine(fontFilename);
    }

}

/// <summary>
/// Prints information about exported fonts and saves them in the same local system folder as their output .html.
/// </summary>
public class HandleFontSaving : IFontSavingCallback
{
    void IFontSavingCallback.FontSaving(FontSavingArgs args)
    {
        Console.Write($"Font:\t{args.FontFamilyName}");
        if (args.Bold) Console.Write(", bold");
        if (args.Italic) Console.Write(", italic");
        Console.WriteLine($"\nSource:\t{args.OriginalFileName}, {args.OriginalFileSize} bytes\n");

        // We can also access the source document from here.
        Assert.True(args.Document.OriginalFileName.EndsWith("Rendering.docx"));

        Assert.True(args.IsExportNeeded);
        Assert.True(args.IsSubsettingNeeded);

        // There are two ways of saving an exported font.
        // 1 -  Save it to a local file system location:
        args.FontFileName = args.OriginalFileName.Split(Path.DirectorySeparatorChar).Last();

        // 2 -  Save it to a stream:
        args.FontStream =
            new FileStream(ArtifactsDir + args.OriginalFileName.Split(Path.DirectorySeparatorChar).Last(), FileMode.Create);
        Assert.False(args.KeepFontStreamOpen);
    }
}

ExpandedSee Also