CacheKey

MemoryFontSource.CacheKey property

The key of this source in the cache.

public string CacheKey { get; }

Remarks

This key is used to identify cache item when saving/loading font search cache with SaveSearchCache and SetFontsSources methods.

Examples

Shows how to speed up the font cache initialization process.

const string cacheKey1 = "Arvo";
const string cacheKey2 = "Arvo-Bold";
FontSettings parsedFonts = new FontSettings();
FontSettings loadedCache = new FontSettings();

parsedFonts.SetFontsSources(new FontSourceBase[]
{
    new FileFontSource(FontsDir + "Arvo-Regular.ttf", 0, cacheKey1),
    new FileFontSource(FontsDir + "Arvo-Bold.ttf", 0, cacheKey2)
});

using (MemoryStream cacheStream = new MemoryStream())
{
    parsedFonts.SaveSearchCache(cacheStream);
    loadedCache.SetFontsSources(new FontSourceBase[]
    {
        new SearchCacheStream(cacheKey1),
        new MemoryFontSource(File.ReadAllBytes(FontsDir + "Arvo-Bold.ttf"), 0, cacheKey2)
    }, cacheStream);
}

Assert.That(loadedCache.GetFontsSources().Length, Is.EqualTo(parsedFonts.GetFontsSources().Length));

Shows how to speed up the font cache initialization process (SearchCacheStream).

/// <summary>
/// Load the font data only when required instead of storing it in the memory
/// for the entire lifetime of the "FontSettings" object.
/// </summary>
private class SearchCacheStream : StreamFontSource
{
    public SearchCacheStream(string cacheKey):base(0, cacheKey)
    {
    }

    public override Stream OpenFontDataStream()
    {
        return File.OpenRead(FontsDir + "Arvo-Regular.ttf");
    }
}

See Also