الأحرف هي رموز تشرح معاني الكلمات المختلفة. يمكنك عرض أحرف نصية مختلفة باستخدام خطوط TrueType باستخدام C++ مع واجهة برمجة تطبيقات Aspose.Font for C++. وهو يدعم ميزات عرض النص المختلفة بما في ذلك TrueType و Type1 و OTF و EOT وخطوط أخرى. دعنا نستكشف كيفية استخدام ميزات عرض النص مع بضع استدعاءات بسيطة لواجهة برمجة التطبيقات. سنغطي الموضوع تحت العناوين التالية:
- C++ TrueType Font Rendering API - التثبيت
- تنفيذ واجهة لرسم الصورة الرمزية لتقديم خطوط تروتايب باستخدام C++
- عرض النص باستخدام خط TrueType باستخدام C++
C++ TrueType Font Rendering API - التثبيت
بالنظر إلى شعبية منصة C++ والطلب عليها ، فقد قدمنا ميزات مفيدة جدًا في Aspose.Font for C++ API. لعرض خطوط TrueType في تطبيقاتك ، تحتاج إلى تكوين API عن طريق تنزيلها من New Releases ، أو يمكنك تثبيتها عبر NuGet باستخدام الأمر التالي:
Install-Package Aspose.Font.Cpp
تنفيذ واجهة لرسم الصورة الرمزية لتقديم خطوط تروتايب باستخدام C++
بادئ ذي بدء ، تحتاج إلى تنفيذ IGlyphOutlinePainter ضمن مساحة الاسم Aspose.Font.Rendering. اتبع الخطوات أدناه لتنفيذ الأساليب والفئات:
- أنشئ فئة باسم GlyphOutlinePainter
- استخدم System.Drawing.Drawing2D.GraphicsPath لرسم الرسومات
يوجد أدناه مقتطف رمز C++ لتنفيذ الواجهة من أجل رسم صور رمزية:
For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
RenderingText::GlyphOutlinePainter::GlyphOutlinePainter(System::SharedPtr<System::Drawing::Drawing2D::GraphicsPath> path)
{
_path = path;
}
void RenderingText::GlyphOutlinePainter::MoveTo(System::SharedPtr<Aspose::Font::RenderingPath::MoveTo> moveTo)
{
_path->CloseFigure();
_currentPoint.set_X((float)moveTo->get_X());
_currentPoint.set_Y((float)moveTo->get_Y());
}
void RenderingText::GlyphOutlinePainter::LineTo(System::SharedPtr<Aspose::Font::RenderingPath::LineTo> lineTo)
{
float x = (float)lineTo->get_X();
float y = (float)lineTo->get_Y();
_path->AddLine(_currentPoint.get_X(), _currentPoint.get_Y(), x, y);
_currentPoint.set_X(x);
_currentPoint.set_Y(y);
}
void RenderingText::GlyphOutlinePainter::CurveTo(System::SharedPtr<Aspose::Font::RenderingPath::CurveTo> curveTo)
{
float x3 = (float)curveTo->get_X3();
float y3 = (float)curveTo->get_Y3();
_path->AddBezier(_currentPoint.get_X(), _currentPoint.get_Y(), (float)curveTo->get_X1(), (float)curveTo->get_Y1(), (float)curveTo->get_X2(), (float)curveTo->get_Y2(), x3, y3);
_currentPoint.set_X(x3);
_currentPoint.set_Y(y3);
}
void RenderingText::GlyphOutlinePainter::ClosePath()
{
_path->CloseFigure();
}
System::Object::shared_members_type Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::GetSharedMembers()
{
auto result = System::Object::GetSharedMembers();
result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_path", this->_path);
result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_currentPoint", this->_currentPoint);
return result;
}
ثانيًا ، يرجى إنشاء طريقة باسم DrawText بالخطوات التالية:
- التكرار خلال الرموز في السلسلة النصية
- احصل على GID كمعرف رسومي محدد لكل رمز
- إنشاء GlyphOutlinePainter ومرر إلى GlyphOutlineRenderer كائن
- حدد إحداثيات Glyph مع كائن Matrix
علاوة على ذلك ، بعد اتباع جميع هذه الخطوات ، قم بإنشاء طريقة مساعدة لحساب أبعاد الخط للصورة كما هو موضح في مقتطف رمز C++ التالي:
For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
double RenderingText::FontWidthToImageWith(double width, int32_t fontSourceResulution, double fontSize, double dpi /* = 300*/)
{
double resolutionCorrection = dpi / 72;
// 72 هي نقطة في البوصة الداخلية للخط
return (width / fontSourceResulution) * fontSize * resolutionCorrection;
}
عرض النص باستخدام خط TrueType باستخدام C++
لقد قمنا بتنفيذ الوظيفة المطلوبة لعرض النص باستخدام خطوط TrueType. الآن دعنا نسمي الطرق باستخدام Aspose.Font لـ C++ API كمقتطف للشفرة أدناه:
For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String dataDir = RunExamples::GetDataDir_Data();
System::String fileName1 = dataDir + u"Montserrat-Bold.ttf";
//اسم ملف الخط بالمسار الكامل
System::SharedPtr<FontDefinition> fd1 = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName1)));
System::SharedPtr<TtfFont> ttfFont1 = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd1));
System::String fileName2 = dataDir + u"Lora-Bold.ttf";
//اسم ملف الخط بالمسار الكامل
System::SharedPtr<FontDefinition> fd2 = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName2)));
System::SharedPtr<TtfFont> ttfFont2 = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd2));
DrawText(u"Hello world", ttfFont1, 14, System::Drawing::Brushes::get_White(), System::Drawing::Brushes::get_Black(), dataDir + u"hello1_montserrat_out.jpg");
DrawText(u"Hello world", ttfFont2, 14, System::Drawing::Brushes::get_Yellow(), System::Drawing::Brushes::get_Red(), dataDir + u"hello2_lora_out.jpg");
استنتاج
في هذه المقالة ، تعلمت كيفية عرض نص باستخدام خطوط TrueType مع C++. هل أنت مهتم بمعرفة المزيد حول الميزات التي تقدمها Aspose.Font لواجهة برمجة تطبيقات C++؟ يمكنك معرفة المزيد من التفاصيل من خلال استكشاف مراجع API أو وثائق المنتج. ومع ذلك ، إذا واجهت أي غموض أو احتجت إلى مساعدة ، فلا تتردد في الاتصال بنا عبر منتديات الدعم المجاني. نحن نتطلع إلى التعامل معك!