Compartilhar via


Definir a fonte para uma execução de texto

Este tópico mostra como utilizar as classes no SDK Open XML para o Office para definir o tipo de letra de uma parte do texto num documento de processamento de palavras através de programação.


Pacotes e partes do documento

Um documento Open XML é armazenado como um pacote, cujo formato é definido por ISO/IEC 29500. O pacote pode ter várias partes com relações entre elas. A relação entre as partes controla a categoria do documento. Um documento pode ser definido como um documento de processamento de texto caso seu item de relação do pacote contiver uma relação com uma parte do documento principal. Caso seu item de relação do pacote contenha uma relação com uma parte da apresentação, ela poderá ser definida como um documento de apresentação. Caso seu item de relação do pacote contenha uma relação com uma parte da pasta de trabalho, ela é definida como um documento de planilha. Neste tópico de tutorial, você usará um pacote de documentos de processamento de texto.


Estrutura do Elemento Run Fonts

O texto seguinte da especificação ISO/IEC 29500 pode ser útil ao trabalhar com rFonts o elemento .

Este elemento especifica os tipos de letra que devem ser utilizados para apresentar o conteúdo de texto desta execução. Numa única execução, podem existir até quatro tipos de conteúdo presentes que, cada um deles, pode utilizar um tipo de letra exclusivo:

  • ASCII

  • ANSI elevado

  • Script Complexo

  • Leste Asiático

A utilização de cada um destes tipos de letra deve ser determinada pelos valores de carateres Unicode do conteúdo de execução, a menos que seja manualmente substituída através da utilização do elemento cs.

Se este elemento não estiver presente, o valor predefinido é deixar a formatação aplicada ao nível anterior na hierarquia de estilos. Se este elemento nunca for aplicado na hierarquia de estilos, o texto será apresentado em qualquer tipo de letra predefinido que suporte cada tipo de conteúdo.

Considere uma única execução de texto com texto árabe e inglês, da seguinte forma:

Inglês العربية

Este conteúdo pode ser expresso numa única execução do WordprocessingML:

    <w:r>
      <w:t>English العربية</w:t>
    </w:r>

Apesar de estar na mesma execução, os conteúdos estão em diferentes tipos de letra ao especificar um tipo de letra diferente para carateres ASCII e CS na execução:

    <w:r>
      <w:rPr>
        <w:rFonts w:ascii="Courier New" w:cs="Times New Roman" />
      </w:rPr>
      <w:t>English العربية</w:t>
    </w:r>

Por conseguinte, esta execução de texto utilizará o tipo de letra Courier New para todos os carateres no intervalo ASCII e utilizará o tipo de letra Times New Roman para todos os carateres no intervalo Script Complexo.

© ISO/IEC 29500: 2016


Como funciona o código de exemplo

Depois de abrir o ficheiro de pacote para leitura/escrita, o código cria um RunProperties objeto que contém um RunFonts objeto que tem a respetiva Ascii propriedade definida como "Arial". RunProperties e RunFonts os objetos representam elementos de propriedades rPr de execução e executam elementos rFontde tipos de letra , respetivamente, no esquema Open XML Wordprocessing. Utilize um RunProperties objeto para especificar as propriedades de uma determinada execução de texto. Neste caso, para definir o tipo de letra da execução como Arial, o código cria um RunFonts objeto e, em seguida, define o Ascii valor como "Arial".

// Set the font to Arial to the first Run.
// Use an object initializer for RunProperties and rPr.
RunProperties rPr = new RunProperties(
    new RunFonts()
    {
        Ascii = "Arial"
    });

Em seguida, o código cria um Run objeto que representa a primeira execução de texto do documento. O código instancia um Run e define-o para a primeira execução de texto do documento. Em seguida, o código adiciona o RunProperties objeto ao Run objeto com o PrependChild método . O PrependChild método adiciona um elemento como o primeiro elemento subordinado ao elemento especificado na estrutura XML dentro da memória. Neste caso, a execução do exemplo de código produz uma estrutura XML dentro da memória onde o RunProperties elemento é adicionado como o primeiro elemento subordinado do Run elemento. Não é necessário ligar Save diretamente, porque estamos dentro de uma instrução using.

if (package.MainDocumentPart is null)
{
    throw new ArgumentNullException("MainDocumentPart is null.");
}

Run r = package.MainDocumentPart.Document.Descendants<Run>().First();
r.PrependChild<RunProperties>(rPr);

Observação

Este exemplo de código pressupõe que o documento de processamento de palavras de teste no caminho fileName contém, pelo menos, uma execução de texto.

Este é o código de exemplo completo em C# e em Visual Basic.

static void SetRunFont(string fileName)
{
    // Open a Wordprocessing document for editing.
    using (WordprocessingDocument package = WordprocessingDocument.Open(fileName, true))
    {
        // Set the font to Arial to the first Run.
        // Use an object initializer for RunProperties and rPr.
        RunProperties rPr = new RunProperties(
            new RunFonts()
            {
                Ascii = "Arial"
            });

        if (package.MainDocumentPart is null)
        {
            throw new ArgumentNullException("MainDocumentPart is null.");
        }

        Run r = package.MainDocumentPart.Document.Descendants<Run>().First();
        r.PrependChild<RunProperties>(rPr);
    }
}

Confira também