Baca informasi font

Jelajahi metrik font dengan Aspose.Font API Solution untuk C++. Pelajari wawasan mendetail tentang setiap goresan, kurva, dan nuansa. Solusi kami memungkinkan Anda bekerja dengan glyph secara mudah, memungkinkan Anda mengekstrak informasi tentang karakteristik unik dari font apa pun.

 

Selami dunia kemungkinan font dengan Aspose.Font API Solution untuk C++ yang menawarkan Anda seperangkat fitur kuat, termasuk konversi font, manipulasi glyph, deteksi simbol Latin, dan lainnya. API kami juga memberi Anda kemampuan untuk bekerja dengan glyph dan memperoleh informasi tentang glyph yang termasuk dalam font. Tingkatkan desain Anda, dorong proyek Anda, dan buka potensi penuh glyph dengan Aspose.Font untuk C++. Jangan menunggu dan dapatkan percobaan gratis!

Glyph adalah desain unik untuk karakter atau simbol dalam sebuah tipe huruf. Untuk memahami unit font ini lebih baik, baca artikel Pengantar Glyph . Metrik font adalah pengukuran dan spesifikasi yang digunakan untuk menggambarkan tampilan visual sebuah tipe huruf. Metrik ini dapat mencakup informasi seperti tinggi karakter, lebar karakter, spasi antar karakter, dan posisi garis dasar, antara lain. Mereka memungkinkan desainer dan pengembang perangkat lunak memprediksi tata letak teks dalam dokumen digital dan antarmuka pengguna secara akurat.

Halaman ini menjelaskan cara mengambil metrik font yang berbeda seperti jumlah glyph, tinggi huruf, lebar glyph ‘A’, dll. Namun, fungsionalitas lengkap bekerja dengan glyph dijelaskan secara detail dalam artikel Menggunakan objek Glyph. Contoh kode mencakup bagian tentang mengambil metadata font, termasuk nama font. Jenis fungsionalitas ini dapat diintegrasikan ke dalam aplikasi web, seperti aplikasi Metadata Font yang tersedia dalam ekosistem Aspose. Jika Anda ingin mempelajari contoh lengkap dan file data, silakan kunjungi Aspose Proyek Github .

Untuk mendapatkan metrik font kami membutuhkan:

  • API Aspose.Font untuk C++ yang kaya fitur, kuat, dan mudah digunakan untuk manipulasi serta konversi dokumen.

  • Buka pengelola paket NuGet, cari Aspose.Font dan instal. Anda juga dapat menggunakan perintah berikut dari Package Manager Console.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Langkah-langkah untuk mendapatkan metrik font menggunakan C++:

  1. Ekstrak informasi tentang sebuah font dengan membuat instance dari kelas TtfFont .
  2. Cetak nama font menggunakan properti FontName.
  3. Cetak jumlah glyph dalam font menggunakan properti NumGlyphs. Metrik font, seperti ascender, descender, typo ascender, typo descender, dan UnitsPerEm juga dicetak.
  4. Kode kemudian mengambil tabel enkoding unicode cmap dari font, yang digunakan untuk memetakan kode karakter ke indeks glyph. Ia memeriksa apakah font memiliki tabel cmap dan tabel glyf, yang digunakan untuk mengakses glyph. Jika kedua tabel ada, ia mengambil indeks glyf untuk karakter A dan kemudian mendapatkan glyph untuk simbol A.
  5. Cetak kotak pembatas (bounding box) glyph A dan lebarnya.

Kode C++ untuk mendapatkan informasi tentang glyph font

    using Aspose::Font;
    using Aspose::Font::Glyphs;
    using Aspose::Font::Ttf;
    //Font file name with the full path
    
    System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName)));
    System::SharedPtr<TtfFont> font = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd));
    
    System::String name = font->get_FontName();
    System::Console::WriteLine(System::String(u"Font name: ") + name);
    System::Console::WriteLine(System::String(u"Glyph count: ") + font->get_NumGlyphs());
    System::String metrics = System::String::Format(u"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}", font->get_Metrics()->get_Ascender(), font->get_Metrics()->get_Descender(), font->get_Metrics()->get_TypoAscender(), font->get_Metrics()->get_TypoDescender(), font->get_Metrics()->get_UnitsPerEM());
    
    System::Console::WriteLine(metrics);
    
    //Get cmap unicode encoding table from the font as object TtfCMapFormatBaseTable to access the information about the font glyph for symbol 'A'.
    //Also check that font has object TtfGlyfTable (table 'glyf') to access glyph.
    System::SharedPtr<Aspose::Font::TtfCMapFormats::TtfCMapFormatBaseTable> cmapTable;
    if (font->get_TtfTables()->get_CMapTable() != nullptr)
    {
        cmapTable = font->get_TtfTables()->get_CMapTable()->FindUnicodeTable();
    }
    if (cmapTable != nullptr && font->get_TtfTables()->get_GlyfTable() != nullptr)
    {
        System::Console::WriteLine(System::String(u"Font cmap unicode table: PlatformID = ") + cmapTable->get_PlatformId() + u", PlatformSpecificID = " + cmapTable->get_PlatformSpecificId());
    
        //Code for 'A' symbol
        char16_t unicode = (char16_t)65;
    
        //Glyph index for 'A'
        uint32_t glIndex = cmapTable->GetGlyphIndex(unicode);
    
        if (glIndex != static_cast<uint32_t>(0))
        {
            //Glyph for 'A'
            System::SharedPtr<Glyph> glyph = font->GetGlyphById(glIndex);
            if (glyph != nullptr)
            {
                //Print glyph metrics
                System::Console::WriteLine(u"Glyph metrics for 'A' symbol:");
                System::String bbox = System::String::Format(System::String(u"Glyph BBox: Xmin = {0}, Xmax = {1}") + u", Ymin = {2}, Ymax = {3}", glyph->get_GlyphBBox()->get_XMin(), glyph->get_GlyphBBox()->get_XMax(), glyph->get_GlyphBBox()->get_YMin(), glyph->get_GlyphBBox()->get_YMax());
                System::Console::WriteLine(bbox);
                System::Console::WriteLine(System::String(u"Width:") + font->get_Metrics()->GetGlyphWidth(System::MakeObject<GlyphUInt32Id>(glIndex)));
            }
        }
    }