Charger des fichiers de police depuis un tableau d’octets

Solution API C++ pour charger des polices TTF, WOFF, EOT, Type 1 et CFF depuis un MemoryStream.

 

La solution Aspose.Font API vous offre des capacités étendues pour travailler avec les polices, y compris la conversion, la manipulation de glyphes, la détection de symboles latins, et bien plus encore. Mais la première étape de la manipulation de police est de charger les fichiers de police afin de les utiliser ultérieurement.

Cet article décrit comment charger des fichiers de police depuis des flux, mais pour des informations plus détaillées sur le chargement de polices, référez‑vous à l’article How to Load Files? . Vous y trouverez de nombreux exemples de code C++ et comprendrez les objets et paramètres nécessaires au chargement des polices.

L'API prend en charge plusieurs formats de police, y compris TrueType (police unique), TrueType (collection de polices), Web Open Font Format, Web Open Font Format version 2.0, Embedded OpenType, police Adobe Type 1 (pfa, pfb, afm, pfm), et Compact Font Format. Les extraits de code fournis démontrent comment charger un fichier True Type Font (TTF) depuis un flux.

Comme nous pouvons le voir sur Wikipedia , TTF signifie TrueType Font et est un format de fichier pour les polices informatiques évolutives. Il a été développé à l’origine par Apple Computer, mais est maintenant largement utilisé sur les systèmes d’exploitation Mac et Windows. Les fichiers TTF contiennent des instructions sur la façon de rendre chaque caractère d’une police à différentes tailles et styles, et ils peuvent être facilement redimensionnés et utilisés dans différentes applications sans perte de qualité. Les polices TTF sont largement utilisées pour la typographie numérique et sont couramment employées dans la conception de sites web, le traitement de texte et la publication assistée par ordinateur.

Pour charger des polices, vous aurez besoin de l'API Aspose.Font pour C++, qui est une API puissante et facile à utiliser pour la manipulation et la conversion de documents sur la plateforme C++. Pour obtenir l'API, ouvrez le gestionnaire de paquets NuGet et recherchez Aspose.Font, puis installez-le. Vous pouvez également utiliser la commande suivante dans la console du gestionnaire de paquets.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Charger un TTF depuis un tableau d'octets/MemoryStream en C++

Cet extrait de code est écrit en C++ et montre comment charger un fichier TrueType Font (TTF) à l’aide de l’API Aspose.Font. Le code effectue les étapes suivantes :

  1. Construisez le chemin vers le fichier de police. Ici, DataDir est une variable prédéfinie contenant le chemin du répertoire où se trouve le fichier de police Montserrat-Regular.ttf. La méthode Path.Combine combine les deux chemins pour créer le chemin complet du fichier de police.
  2. Chargez les données binaires de la police dans un tableau d’octets. La méthode File.ReadAllBytes() lit le contenu du fichier de police et renvoie les données sous forme de tableau d’octets.
  3. Initialisez un objet FontDefinition . FontType.TTF indique que le fichier de police est une TrueType Font (.ttf) et le nouveau ByteContentStreamSource (fontBytes) crée un objet ByteContentStreamSource basé sur les données binaires de la police stockées dans le tableau fontBytes.
  4. Chargez la police. La méthode Font.Open() prend l’objet FontDefinition comme paramètre et renvoie la police chargée, qui peut ensuite être utilisée pour d’autres manipulations.

Code C++ pour charger des polices depuis le flux

    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);