Baca informasi Glyphs dan Metrics

Solusi C++ API untuk menghitung lebar string, menghitung koordinat mesin terbang, dan manipulasi lainnya dengan mesin terbang.

 

Aspose.Font API menawarkan rangkaian lengkap fungsi terkait font, termasuk konversi, manipulasi mesin terbang, deteksi simbol Latin, dan banyak lagi. Beberapa fitur ini berkaitan dengan manipulasi mesin terbang, yang merupakan karakter individu dari jenis huruf atau representasi grafis dari simbol/karakter. Untuk memahami lebih lanjut tentang unit font ini, lihat artikel Pengantar Glyph .

Halaman ini menguraikan opsi untuk membaca informasi Glyph dan Metrics, tetapi untuk pemahaman lengkap tentang fungsinya, lihat artikel Menggunakan Objek Glyph . Di sini, Anda akan menemukan banyak contoh kode C++ dan mempelajari tentang kemampuan Aspose.Font untuk bekerja dengan glyph dan objek Glyph. Contoh kode lainnya yang mendemonstrasikan penggunaan Aspose.Font untuk memanipulasi Glyph dapat ditemukan di Aspose Proyek Github .

Metrik mesin terbang, istilah yang digunakan di sini, mengacu pada informasi dan pengukuran mesin terbang tertentu dalam sebuah font. Mereka mungkin menyertakan informasi seperti tinggi, lebar, lebar muka, dan dimensi lain dari mesin terbang, yang penting untuk pemosisian dan penspasian karakter yang tepat dalam font. Metrik ini digunakan oleh tata letak teks dan sistem rendering untuk memastikan tampilan teks yang konsisten dan akurat.

Untuk bekerja dengan mesin terbang kita membutuhkan:

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

  • Buka manajer paket NuGet, dan 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 menghitung lebar string menggunakan C++:

Untuk menghitung lebar string menggunakan mesin terbang, Anda harus terlebih dahulu menentukan lebar masing-masing mesin terbang dalam string, lalu menjumlahkan lebar tersebut untuk mendapatkan jumlah total. Jika dijelaskan dengan langkah-langkah urutannya adalah sebagai berikut:

  1. Tentukan font dan ukuran yang ingin Anda gunakan untuk menghitung lebar string.
  2. Untuk setiap karakter dalam string, tentukan mesin terbang yang sesuai di font. Gunakan peta karakter, yang akan memberi Anda indeks mesin terbang yang sesuai.
  3. Dengan menggunakan indeks mesin terbang, cari metrik mesin terbang di tabel metrik font. Metrik untuk mesin terbang biasanya mencakup lebar, tinggi, dan lebar muka.
  4. Tambahkan lebar lanjutan dari semua mesin terbang dalam string untuk mendapatkan lebar total string. Perhatikan untuk memperhatikan informasi kerning.

Jika menggambarkan proses serupa dengan kode C++, itu akan terlihat seperti selanjutnya.

Kode C++ untuk mengetahui lebar string

    using System;
    using System::IO;
    using System::Drawing;
    using System::Collections::Generic;
    using Aspose::Font::Sources;
    using Aspose::Font::Glyphs;
    using Aspose::Font::RenderingPath;
        //Declare the text and other constants
        const System::String text = u"Hello world";
        const int32_t fontSize = 10;
    
        //Declare the variable for string width
        double width = 0;
    
        //Get glyph for each letter in text and calculate width for whole text.
        //The same result can be achieved using method font.Metrics.MeasureString(text, fontSize).
        for (char16_t symbol : text)
        {
            System::SharedPtr<GlyphId> gid = this->_font->get_Encoding()->DecodeToGid(symbol);
            System::SharedPtr<Glyph> glyph = this->_font->GetGlyphById(gid);
            width += (glyph->get_WidthVectorX() / this->_font->get_Metrics()->get_UnitsPerEM()) * fontSize;
        }
	    font->get_Metrics()->MeasureString(text, width);

        //Print the output results
        System::Console::WriteLine(System::String::Format(u"Width for text \"{0}\" with font size {2} is equal {3}.", text, FontName, fontSize, width));

Langkah-langkah untuk menghitung semua titik mesin terbang dengan koordinat menggunakan C++:

  1. Deklarasikan daftar poin bertipe System::Drawing::Point: Daftar ini akan menyimpan poin dari a segmen jalur mesin terbang ..
  2. Tentukan referensi layanan Init pada antarmuka IPathSegment .
  3. Ulangi semua segmen jalur mesin terbang dan rangkum poinnya.

C++ Kode untuk mengetahui poin mesin terbang

    //Declare the resultant list with points
    System::SharedPtr<System::Collections::Generic::List<System::Drawing::Point>> points =
    System::MakeObject<System::Collections::Generic::List<System::Drawing::Point>>();
    
    //Init the service reference on IPathSegment
    System::SharedPtr<IPathSegment> prevSegment;
    
    //Iterate all the glyph path segments and collect points
    for (auto&& segment : glyph->get_Path()->get_Segments())
    {
        if ((System::ObjectExt::Is<LineTo>(segment)) || (System::ObjectExt::Is<CurveTo>(segment)))
        {
            if (System::ObjectExt::Is<MoveTo>(prevSegment))
            {
                System::SharedPtr<MoveTo> moveTo = System::DynamicCast_noexcept<Aspose::Font::RenderingPath::MoveTo>(prevSegment);
                AddPoint((int32_t)moveTo->get_X(), (int32_t)moveTo->get_Y(), points);
            }
            if (System::ObjectExt::Is<LineTo>(segment))
            {
                System::SharedPtr<LineTo> line = System::DynamicCast_noexcept<Aspose::Font::RenderingPath::LineTo>(segment);
                AddPoint((int32_t)line->get_X(), (int32_t)line->get_Y(), points);
            }
            else if (System::ObjectExt::Is<CurveTo>(segment))
            {
                System::SharedPtr<CurveTo> curve = System::DynamicCast_noexcept<Aspose::Font::RenderingPath::CurveTo>(segment);
                AddPoint((int32_t)curve->get_X1(), (int32_t)curve->get_Y1(), points);
                AddPoint((int32_t)curve->get_X2(), (int32_t)curve->get_Y2(), points);
                AddPoint((int32_t)curve->get_X3(), (int32_t)curve->get_Y3(), points);
            }
        }
        prevSegment = segment;
    }



FAQ

1. Apa itu metrik mesin terbang?

Metrik mesin terbang adalah parameter yang memengaruhi posisi mesin terbang saat tata letak teks dibuat.

2. Apa itu metrik mesin terbang?

Metrik mesin terbang yang paling banyak digunakan adalah lebar muka, asal, bantalan samping, garis dasar, naik, naik, turun, turun, kotak pembatas, tinggi, lebar, dan kerning.

3. Bagaimana cara mengelola Glyph dengan Solusi API ini?

Untuk membuat kode mesin terbang di C#, gunakan entitas ruang nama Aspose.Font.Glyphs .

4. Apa pentingnya metrik mesin terbang?

Dengan memahami dan menyesuaikan metrik mesin terbang dengan benar, juru ketik dan desainer dapat memastikan penspasian, penyelarasan, dan keterbacaan teks yang optimal dalam materi cetak, antarmuka digital, atau halaman web.