Carregar ficheiros de fontes a partir de um array de bytes

Solução API C++ para carregar TTF, WOFF, EOT, Type 1 e fontes CFF a partir de um MemoryStream.

 

A API Aspose.Font oferece-lhe capacidades extensas para trabalhar com fontes, incluindo conversão, manipulação de glifos, deteção de símbolos latinos e muito mais. Mas o primeiro passo na manipulação de fontes é carregar os ficheiros de fontes para os usar mais tarde.

Este artigo descreve como carregar ficheiros de fontes a partir de fluxos, mas para informações mais detalhadas sobre carregamento de fontes, consulte o artigo How to Load Files? . Lá encontrará numerosos exemplos de código C++ e entenderá os objetos e parâmetros necessários para o carregamento de fontes.

A API suporta vários formatos de fontes, incluindo TrueType (fonte única), TrueType (coleção de fontes), Web Open Font Format, Web Open Font Format versão 2.0, Embedded OpenType, Adobe Type 1 (pfa, pfb, afm, pfm) e Compact Font Format. Os trechos de código fornecidos demonstram como carregar um ficheiro True Type Font (TTF) a partir de um fluxo.

Como podemos aprender na Wikipedia TTF significa TrueType Font e é um formato de ficheiro para fontes escaláveis. Foi originalmente desenvolvido pela Apple Computer, mas hoje é amplamente usado tanto em sistemas operativos Mac como Windows. Os ficheiros TTF contêm instruções sobre como representar cada carácter de uma fonte em diferentes tamanhos e estilos, podendo ser facilmente redimensionados e usados em diferentes aplicações sem perder qualidade. As fontes TTF são amplamente utilizadas na tipografia digital e são comuns no design web, processamento de texto e publicação de desktop.

Para carregar fontes, precisará da API Aspose.Font para C++, que é uma API poderosa e fácil de usar para manipulação e conversão de documentos na plataforma C++. Para obter a API, abra o gestor de pacotes NuGet e procure por Aspose.Font, depois instale‑a. Também pode usar o seguinte comando no Console do Gestor de Pacotes.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Carregar TTF a partir de array de bytes/MemoryStream usando C++

Este trecho de código está escrito em C++ e demonstra como carregar um ficheiro TrueType Font (TTF) usando a API Aspose.Font. O código executa os seguintes passos:

  1. Construa o caminho para o ficheiro de fonte. Aqui, DataDir é uma variável predefinida que contém o caminho para o diretório onde se encontra o ficheiro Montserrat-Regular.ttf. O método Path.Combine combina os dois caminhos para criar o caminho completo para o ficheiro de fonte.
  2. Carregue os dados binários da fonte num array de bytes. O método File.ReadAllBytes() lê o conteúdo do ficheiro de fonte e devolve os dados como um array de bytes.
  3. Inicialize um objeto FontDefinition . FontType.TTF indica que o ficheiro de fonte é um TrueType Font(.ttf) e o novo ByteContentStreamSource (fontBytes) cria um objecto ByteContentStreamSource baseado nos dados binários da fonte armazenados no array fontBytes.
  4. Carregue a fonte. O método Font.Open() aceita o objeto FontDefinition como parâmetro e devolve a fonte carregada, que pode então ser usada para manipulações adicionais.

Código C++ para carregar fontes a partir do fluxo

    using Aspose::Font;
    using Aspose::Font::Sources;
    using Aspose::Font::Ttf;
     // Construct the path to the file
    System::String fontPath = System::IO::Path::Combine(get_DataDir(), u"Montserrat-Regular.ttf");

	// Load font binary data into the byte array
    System::ArrayPtr<uint8_t> fontBytes = System::IO::File::ReadAllBytes(fontPath);
    
    // Initialize the FontDefinition object  passing TTF as the FontType value, "ttf" as the fileExtension value, 
    // and ByteContentStreamSource object based on the fontBytes array
    System::SharedPtr<FontDefinition> fontDef = System::MakeObject<FontDefinition (Aspose::Font::FontType::TTF, u"ttf", System::MakeObject<ByteContentStreamSource>(fontBytes));

     // Load the font
    System::SharedPtr<Aspose::Font::Font> font = Aspose::Font::Font::Open(fontDef);