قراءة معلومات الحروف الرسومية والمقاييس

C++ API Solution لحساب عرض السلسلة ، وحساب إحداثيات الحروف الرسومية ، والمعالجات الأخرى باستخدام الحروف الرسومية.

 

تقدم Aspose.Font API مجموعة شاملة من الوظائف المتعلقة بالخط ، بما في ذلك التحويل ، ومعالجة الحروف الرسومية ، واكتشاف الرموز اللاتينية ، والمزيد. تتعلق بعض هذه الميزات بمعالجة الحروف الرسومية ، وهي أحرف فردية لمحرف أو تمثيلات رسومية للرموز / الأحرف. لفهم المزيد حول وحدات الخط هذه ، راجع مقالة مقدمة إلى Glyph .

توضح هذه الصفحة خيار قراءة معلومات Glyph و Metrics ، ولكن للحصول على فهم كامل للوظيفة ، راجع المقالة Using Glyph Objects . هنا ، ستجد العديد من أمثلة كود C++ والتعرف على قدرات Aspose.Font للعمل مع كائنات الحروف الرسومية والرسمية. يمكن العثور على المزيد من أمثلة التعليمات البرمجية التي توضح استخدام Aspose.Font لمعالجة الحروف الرسومية في Aspose Github Project .

مقاييس Glyph ، المصطلح المستخدم هنا ، يشير إلى المعلومات والقياسات الخاصة بحرف رسومي معين في خط. قد تتضمن معلومات مثل الارتفاع والعرض والعرض المتقدم والأبعاد الأخرى للحرف الرسومي ، والتي تعتبر مهمة لتحديد الموضع الصحيح وتباعد الأحرف في الخط. يتم استخدام هذه المقاييس بواسطة تخطيط النص وأنظمة العرض لضمان عرض متسق ودقيق للنص.

للعمل مع الحروف الرسومية ، نحتاج إلى:

  • Aspose.Font لـ C++ API وهي واجهة برمجة تطبيقات لمعالجة المستندات وتحويلها غنية بالميزات وقوية وسهلة الاستخدام.

  • افتح مدير الحزم NuGet ، وابحث عن Aspose.Font وقم بالتثبيت. يمكنك أيضًا استخدام الأمر التالي من Package Manager Console.

Package Manager Console Command


    PM> Install-Package Aspose.Font

خطوات حساب عرض السلسلة باستخدام C++:

لحساب عرض سلسلة باستخدام الحروف الرسومية ، تحتاج أولاً إلى تحديد عرض كل حرف رسومي فردي في السلسلة ، ثم تلخيص هذه العروض للحصول على العدد الإجمالي. إذا شرح ذلك بالخطوات ، فسيكون الترتيب التالي:

  1. حدد الخط والحجم اللذين تريد استخدامهما لحساب عرض السلسلة.
  2. لكل حرف في السلسلة ، حدد الحرف الرسومي المقابل في الخط. استخدم خريطة الأحرف ، والتي ستمنحك فهرس الحرف الرسومي المقابل.
  3. باستخدام فهرس الصورة الرمزية ، ابحث عن مقاييس الصورة الرمزية في جدول مقاييس الخط. عادةً ما تتضمن مقاييس الصورة الرمزية عرضها وارتفاعها وعرضها المتقدم.
  4. أضف العروض المتقدمة لجميع الحروف الرسومية في السلسلة للحصول على العرض الكلي للسلسلة. ملاحظة للانتباه إلى معلومات تقنين الأحرف.

إذا وصفت عملية مماثلة باستخدام كود C++ ، فستبدو في الاتجاه التالي.

كود C++ لمعرفة عرض السلسلة

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

خطوات حساب جميع نقاط الصورة الرمزية مع الإحداثيات باستخدام C++:

  1. قم بتعريف قائمة نقاط من النوع System :: Drawing :: Point: ستخزن هذه القائمة نقاط مقطع مسار الصورة الرمزية ..
  2. حدد مرجع الخدمة المبدئي على واجهة IPathSegment .
  3. كرر كل مقاطع مسار الصورة الرمزية ولخص النقاط.

كود C++ لمعرفة نقاط الصورة الرمزية

    //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;
    }



التعليمات

1. ما هو مقياس رسومي؟

مقاييس الصورة الرمزية هي المعلمات التي تؤثر على كيفية وضع الصورة الرمزية عند إنشاء تخطيط النص.

2. ما هي مقاييس الصورة الرمزية؟

مقاييس الصورة الرمزية الأكثر استخدامًا هي العرض المتقدم ، والأصل ، والمحامل الجانبية ، والخط الأساسي ، والصعود ، والصاعد ، والنسب ، والهبوط ، والمربع المحيط ، والارتفاع ، والعرض ، وتقنين الأحرف.

3. كيف تدير الحروف الرسومية باستخدام حل API هذا؟

لتشفير الحروف الرسومية في C# ، استخدم كيانات مساحة الاسم Aspose.Font.Glyphs .

4. ما هي أهمية مقاييس الصورة الرمزية؟

من خلال فهم مقاييس الحروف الرسومية وضبطها بشكل صحيح، يستطيع مصممو الطباعة والمصممون ضمان التباعد الأمثل والمحاذاة وسهولة قراءة النص في المواد المطبوعة أو الواجهات الرقمية أو صفحات الويب.