Default Свойство (FontProgramsControllerBase)
В этом разделе
Возвращает или задает контроллер программы шрифта, который используется в качестве контроллера программы шрифта по умолчанию VintaSoft Imaging .NET SDK.
Синтаксис
Property Value
Значение по умолчанию:
FileFontProgramsControllerWithFallbackFont с каталогом шрифтов ".\fonts".
Пример
Вот пример пользовательского контроллера программы шрифта, который должен использоваться в качестве контроллера программы шрифта по умолчанию в приложениях Windows, Linux или macOS:
Imports System.Collections.Generic
Imports System.IO
Imports System.Runtime.Serialization
Imports Vintasoft.Imaging.Fonts
Namespace DemosCommonCode
''' <summary>
''' Provides access to the fonts, which are located in the specified directory.
''' </summary>
Public Class CustomFontProgramsController
Inherits FileFontProgramsControllerWithFallbackFont
#Region "Constants"
''' <summary>
''' The folder that contains the fonts.
''' </summary>
Const FontsFolder As String = "fonts"
''' <summary>
''' The filename of serialized font programs controller.
''' </summary>
Const FontProgramsControllerFilename As String = "fonts.dat"
#End Region
#Region "Constructors"
''' <summary>
''' Initializes the <see cref="CustomFontProgramsController"/> class.
''' </summary>
Shared Sub New()
RegisterSerializingType(Of CustomFontProgramsController)()
End Sub
''' <summary>
''' Initializes a new instance of the <see cref="CustomFontProgramsController"/> class.
''' </summary>
Public Sub New()
MyBase.New(True, GetFontFolders())
If FontFiles.Count = 0 Then
Console.WriteLine("CustomFontProgramsController: Fonts was not found!")
Else
RefreshFontNames()
End If
End Sub
''' <summary>
''' Initializes a new instance of the <see cref="CustomFontProgramsController"/> class.
''' </summary>
''' <param name="info">The SerializationInfo to populate with data.</param>
''' <param name="context">The destination for this serialization.</param>
Public Sub New(info As SerializationInfo, context As StreamingContext)
MyBase.New(info, context)
End Sub
#End Region
#Region "Methods"
''' <summary>
''' Sets <see cref="CustomFontProgramsController"/> as the default font programs controller.
''' </summary>
Public Shared Sub SetDefaultFontProgramsController()
[Default] = CreateOrDeserialize()
End Sub
''' <summary>
''' Creates or deserializes the <see cref="CustomFontProgramsController"/>.
''' </summary>
''' <returns>A new instance of <see cref="CustomFontProgramsController"/>.</returns>
Public Shared Function CreateOrDeserialize() As CustomFontProgramsController
Dim result As CustomFontProgramsController = Nothing
' if file with serialized font program controller exists
If File.Exists(FontProgramsControllerFilename) Then
Try
' deserialize font program controller
result = DirectCast(Deserialize(FontProgramsControllerFilename), CustomFontProgramsController)
Catch
End Try
End If
' if font program controller is not deserialized
If result Is Nothing Then
' create new font program controller
result = New CustomFontProgramsController()
' if font program controller contains fonts
If result.FontFiles.Count > 0 Then
' serialize font program controller
Serialize(FontProgramsControllerFilename, result)
End If
End If
Return result
End Function
''' <summary>
''' Returns array that contains paths to the folders with fonts.
''' </summary>
Private Shared Function GetFontFolders() As String()
Dim result As New List(Of String)()
Dim systemFontFolder As String
If Vintasoft.Imaging.ImagingEnvironment.IsWindows Then
systemFontFolder = Path.Combine(Environment.GetEnvironmentVariable("windir"), "Fonts")
Else
systemFontFolder = Environment.GetFolderPath(Environment.SpecialFolder.Fonts)
End If
If Not String.IsNullOrEmpty(systemFontFolder) Then
result.Add(systemFontFolder)
End If
result.Add(FontsFolder)
Return result.ToArray()
End Function
#End Region
End Class
End Namespace
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using Vintasoft.Imaging.Fonts;
namespace DemosCommonCode
{
/// <summary>
/// Provides access to the fonts, which are located in the specified directory.
/// </summary>
public class CustomFontProgramsController : FileFontProgramsControllerWithFallbackFont
{
#region Constants
/// <summary>
/// The folder that contains the fonts.
/// </summary>
const string FontsFolder = "fonts";
/// <summary>
/// The filename of serialized font programs controller.
/// </summary>
const string FontProgramsControllerFilename = "fonts.dat";
#endregion
#region Constructors
/// <summary>
/// Initializes the <see cref="CustomFontProgramsController"/> class.
/// </summary>
static CustomFontProgramsController()
{
RegisterSerializingType<CustomFontProgramsController>();
}
/// <summary>
/// Initializes a new instance of the <see cref="CustomFontProgramsController"/> class.
/// </summary>
public CustomFontProgramsController()
: base(true, GetFontFolders())
{
if (FontFiles.Count == 0)
{
Console.WriteLine("CustomFontProgramsController: Fonts was not found!");
}
else
{
RefreshFontNames();
}
}
/// <summary>
/// Initializes a new instance of the <see cref="CustomFontProgramsController"/> class.
/// </summary>
/// <param name="info">The SerializationInfo to populate with data.</param>
/// <param name="context">The destination for this serialization.</param>
public CustomFontProgramsController(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
#endregion
#region Methods
/// <summary>
/// Sets <see cref="CustomFontProgramsController"/> as the default font programs controller.
/// </summary>
public static void SetDefaultFontProgramsController()
{
Default = CreateOrDeserialize();
}
/// <summary>
/// Creates or deserializes the <see cref="CustomFontProgramsController"/>.
/// </summary>
/// <returns>A new instance of <see cref="CustomFontProgramsController"/>.</returns>
public static CustomFontProgramsController CreateOrDeserialize()
{
CustomFontProgramsController result = null;
// if file with serialized font program controller exists
if (File.Exists(FontProgramsControllerFilename))
{
try
{
// deserialize font program controller
result = (CustomFontProgramsController)Deserialize(FontProgramsControllerFilename);
}
catch
{
}
}
// if font program controller is not deserialized
if (result == null)
{
// create new font program controller
result = new CustomFontProgramsController();
// if font program controller contains fonts
if (result.FontFiles.Count > 0)
{
// serialize font program controller
Serialize(FontProgramsControllerFilename, result);
}
}
return result;
}
/// <summary>
/// Returns array that contains paths to the folders with fonts.
/// </summary>
private static string[] GetFontFolders()
{
List<string> result = new List<string>();
string systemFontFolder;
if (Vintasoft.Imaging.ImagingEnvironment.IsWindows)
systemFontFolder = Path.Combine(Environment.GetEnvironmentVariable("windir"), "Fonts");
else
systemFontFolder = Environment.GetFolderPath(Environment.SpecialFolder.Fonts);
if (!string.IsNullOrEmpty(systemFontFolder))
result.Add(systemFontFolder);
result.Add(FontsFolder);
return result.ToArray();
}
#endregion
}
}
Требования
Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5
Смотрите также