FontSubstitutionSettings

FontSubstitutionSettings class

Especifica la configuración del mecanismo de sustitución de fuentes.

Para obtener más información, visite elTrabajar con fuentes artículo de documentación.

public class FontSubstitutionSettings

Propiedades

NombreDescripción
DefaultFontSubstitution { get; }Configuraciones relacionadas con la regla de sustitución de fuentes predeterminada.
FontConfigSubstitution { get; }Configuraciones relacionadas con la regla de sustitución de configuración de fuentes.
FontInfoSubstitution { get; }Configuraciones relacionadas con la regla de sustitución de información de fuente.
FontNameSubstitution { get; }Configuraciones relacionadas con la regla de sustitución de nombres de fuentes.
TableSubstitution { get; }Configuraciones relacionadas con la regla de sustitución de tablas.

Observaciones

El proceso de sustitución de fuentes consta de varias reglas que se verifican una por una en un orden específico. Si la primera regla no puede resolver la fuente, se verifica la segunda regla y así sucesivamente.

El orden de las reglas es el siguiente: 1. Regla de sustitución de nombre de fuente (habilitada de forma predeterminada) 2. Regla de sustitución de configuración de fuente (deshabilitada de manera predeterminada) 3. Regla de sustitución de tabla (habilitada de manera predeterminada) 4. Regla de sustitución de información de fuente (habilitado de forma predeterminada) 5. Regla de fuente predeterminada (habilitada de forma predeterminada)

Tenga en cuenta que la regla de sustitución de información de fuente siempre resolverá la fuente siFontInfo está disponible y anulará la regla de fuente predeterminada. Si desea utilizar la regla de fuente predeterminada, debe desactivar la regla de sustitución de información de fuente .

Tenga en cuenta que la regla de sustitución de configuración de fuentes resolverá la fuente en la mayoría de los casos y, por lo tanto, anulará todas las demás reglas.

Ejemplos

Muestra cómo acceder a la fuente de fuentes del sistema de un documento y configurar fuentes sustitutas.

Document doc = new Document();
doc.FontSettings = new FontSettings();

// De forma predeterminada, un documento en blanco siempre contiene una fuente de fuente del sistema.
Assert.AreEqual(1, doc.FontSettings.GetFontsSources().Length);

SystemFontSource systemFontSource = (SystemFontSource) doc.FontSettings.GetFontsSources()[0];
Assert.AreEqual(FontSourceType.SystemFonts, systemFontSource.Type);
Assert.AreEqual(0, systemFontSource.Priority);

PlatformID pid = Environment.OSVersion.Platform;
bool isWindows = (pid == PlatformID.Win32NT) || (pid == PlatformID.Win32S) ||
                 (pid == PlatformID.Win32Windows) || (pid == PlatformID.WinCE);
if (isWindows)
{
    const string fontsPath = @"C:\WINDOWS\Fonts";
    Assert.AreEqual(fontsPath.ToLower(),
        SystemFontSource.GetSystemFontFolders().FirstOrDefault()?.ToLower());
}

foreach (string systemFontFolder in SystemFontSource.GetSystemFontFolders())
{
    Console.WriteLine(systemFontFolder);
}

// Establece una fuente que existe en el directorio de fuentes de Windows como sustituto de una que no existe.
doc.FontSettings.SubstitutionSettings.FontInfoSubstitution.Enabled = true;
doc.FontSettings.SubstitutionSettings.TableSubstitution.AddSubstitutes("Kreon-Regular", new[] {"Calibri"});

Assert.AreEqual(1,
    doc.FontSettings.SubstitutionSettings.TableSubstitution.GetSubstitutes("Kreon-Regular").Count());
Assert.Contains("Calibri",
    doc.FontSettings.SubstitutionSettings.TableSubstitution.GetSubstitutes("Kreon-Regular").ToArray());

// Alternativamente, podríamos agregar una carpeta de fuente de fuente en la que la carpeta correspondiente contenga la fuente.
FolderFontSource folderFontSource = new FolderFontSource(FontsDir, false);
doc.FontSettings.SetFontsSources(new FontSourceBase[] {systemFontSource, folderFontSource});
Assert.AreEqual(2, doc.FontSettings.GetFontsSources().Length);

// Restablecer las fuentes de fuentes aún nos deja con la fuente de fuentes del sistema, así como con nuestros sustitutos.
doc.FontSettings.ResetFontSources();

Assert.AreEqual(1, doc.FontSettings.GetFontsSources().Length);
Assert.AreEqual(FontSourceType.SystemFonts, doc.FontSettings.GetFontsSources()[0].Type);
Assert.AreEqual(1,
    doc.FontSettings.SubstitutionSettings.TableSubstitution.GetSubstitutes("Kreon-Regular").Count());

Ver también