
Aspose.Font for C++
C++ ফন্ট API ফন্ট পড়া, সেভ এবং রূপান্তর করার জন্য
C++ লাইব্রেরি C++ ভিত্তিক অ্যাপ্লিকেশনে TrueType, WOFF, EOT, OpenType, CFF এবং Type1 সহ বিভিন্ন ফন্ট ফরম্যাট লোড, পড়া, সেভ এবং রূপান্তর করতে সক্ষম।
Aspose.Font for C++ একটি অত্যন্ত শক্তিশালী টুল যা ফন্ট হ্যান্ডলিং সহজ করে এবং সফটওয়্যার ডেভেলপার ও প্রোগ্রামারদের জন্য বিস্তৃত বৈশিষ্ট্যের সেট প্রদান করে। এটি C++ ডেভেলপারদের বিভিন্ন ফন্ট ফরম্যাটের সঙ্গে কাজ করতে এবং ফন্ট-সম্পর্কিত কাজের বিস্তৃত পরিসর সম্পাদন করতে সক্ষম করে। এটি সফটওয়্যার ডেভেলপারদের বিভিন্ন ফরম্যাটে, যেমন TrueType (TTF), OpenType (OTF), PostScript Type 1 (PFB/PFA), WOFF, EOT এবং আরও অনেকগুলোতে ফন্ট ফাইল লোড, জেনারেট, এডিট এবং কনভার্ট করতে সক্ষম করে। এই API কোনো বাহ্যিক নির্ভরতা ছাড়াই আপনার ফন্ট-সম্পর্কিত কাজকে পরবর্তী স্তরে উন্নীত করতে পারে।
Aspose.Font for C++ হল একটি বৈশিষ্ট্য-সমৃদ্ধ লাইব্রেরি যা C++ ডেভেলপারদের জন্য বিস্তৃত ফন্ট ম্যানিপুলেশন সক্ষমতা প্রদান করে। লাইব্রেরিটি ফন্ট অপারেশনের বিস্তৃত পরিসর সমর্থন করে, যার মধ্যে ফন্ট মেটাডেটা বের করা, ডিস্ক বা স্ট্রিম থেকে ফন্ট ফাইল লোড করা, গ্লিফ তথ্য অ্যাক্সেস করা, ফন্টকে বিভিন্ন ফরম্যাটে রূপান্তর করা, ফন্ট তথ্য পড়া, ফন্ট ফাইল আপডেট করা ও ডিস্কে সংরক্ষণ করা, ফন্ট ফাইল থেকে মেট্রিক্স তথ্য পড়া, ফন্ট গ্লিফ ব্যবহার করে টেক্সট রেন্ডার করা, TrueType ফন্ট মর্জ করা এবং আরও অনেক কিছু অন্তর্ভুক্ত। এটি ৩২-বিট এবং ৬৪-বিট উভয় অপারেটিং সিস্টেমকে সমর্থন করে।
Aspose.Font for C++ উন্নত টাইপোগ্রাফিক সক্ষমতা প্রদান করে, যার মধ্যে লিগেচার হ্যান্ডলিং, প্রাসঙ্গিক এবং ইচ্ছামত গ্লিফ প্রতিস্থাপন, এবং উন্নত টেক্সট লেআউট বিকল্প অন্তর্ভুক্ত। এই বৈশিষ্ট্যগুলি বিশেষত জটিল স্ক্রিপ্ট বা এমন ভাষার সঙ্গে কাজ করার সময় উপকারী, যেগুলোকে উন্নত টেক্সট শেপিং এবং রেন্ডারিং প্রয়োজন। API ক্রস-প্ল্যাটফর্ম এবং ব্যবহারকারীদের এটি বিভিন্ন অপারেটিং সিস্টেমে, যেমন Windows, Linux, এবং macOS-এ সহজে ব্যবহার করার সুযোগ দেয়। যদি আপনি আপনার C++ অ্যাপ্লিকেশনে ফন্ট ম্যানিপুলেশন সক্ষমতা বাড়াতে চান, তবে Aspose.Font নিঃসন্দেহে বিবেচনা করার যোগ্য।
C++ এর জন্য Aspose.Font দিয়ে শুরু করা
Aspose.Font for C++ ইনস্টল করার সুপারিশকৃত পদ্ধতি হল NuGet ব্যবহার করা। মসৃণ ইনস্টলেশনের জন্য দয়া করে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।
NuGet কমান্ডের মাধ্যমে C++ এর জন্য Aspose.Font ইনস্টল করুন
NuGet\Install-Package Aspose.Font.Cpp -Version 23.4.0আপনি লাইব্রেরি সরাসরি Aspose.Font for C++ পণ্য পৃষ্ঠা থেকে ডাউনলোড করতে পারেন
C++ API মাধ্যমে সমর্থিত ফাইল ফরম্যাটে ফন্ট রূপান্তর
Aspose.Font for C++ এর অন্যতম উল্লেখযোগ্য বৈশিষ্ট্য হল বিভিন্ন সমর্থিত ফাইল ফরম্যাটের মধ্যে ফন্ট রূপান্তর করার ক্ষমতা। সফটওয়্যার ডেভেলপারদের যখন লক্ষ্য পরিবেশ বা প্ল্যাটফর্মের সাথে সামঞ্জস্যপূর্ণ নির্দিষ্ট ফরম্যাটে ফন্ট রূপান্তর করতে হয়, তখন এটি খুবই সুবিধাজনক হয়। লাইব্রেরি TrueType, OpenType, CFF, PostScript Type 1 ফন্ট এবং আরও অনেক ফরম্যাটের মধ্যে নিরবচ্ছিন্ন রূপান্তর সমর্থন করে, যা ডেভেলপারদের বিস্তৃত পরিস্থিতি মোকাবেলায় সহায়তা করে। নিম্নলিখিত উদাহরণটি দেখায় কীভাবে TTF এর মতো সমর্থিত কোনো ফরম্যাট থেকে ফন্ট লোড করে C++ কমান্ড ব্যবহার করে WOFF2 তে রূপান্তর করা যায়।
C++ API ব্যবহার করে TTF কে WOFF2 এ রূপান্তর করুন
using namespace System;
using namespace Aspose::Font::Sources;
using namespace Aspose::Font::Ttf;
using namespace Aspose::Font;
// Open TTF font
SharedPtr fontFileDefinition = MakeObject(MakeObject(u"Montserrat-Regular.ttf"));
SharedPtr fontDefinition = MakeObject(FontType::TTF, fontFileDefinition);
SharedPtr font = Font::Open(fontDefinition);
// WOFF2 output settings
SharedPtr outStream = IO::File::Create(u"Montserrat-Regular.woff2");
// Convert TTF to WOFF2
font->SaveToFormat(outStream, FontSavingFormats::WOFF2);
C++ API মাধ্যমে Type1 ফন্ট লোড এবং এক্সট্র্যাক্ট করা
Aspose.Font for C++ সফটওয়্যার ডেভেলপারদেরকে Type1 এবং অন্যান্য সমর্থিত ফন্ট ফরম্যাট বিভিন্ন উৎস থেকে লোড করার সুযোগ দেয়, যেমন লোকাল ফাইল, স্ট্রিম বা URL। সফটওয়্যার ডেভেলপাররা ফন্টগুলোকে একে একে অথবা একসাথে লোড করতে পারে, যা একাধিক ফন্ট একসাথে প্রক্রিয়া করা সহজ করে। একবার লোড হয়ে গেলে, ডেভেলপাররা ফন্টের প্রোপার্টি আপডেট করতে পারে এবং সেগুলোকে ইচ্ছাকৃত ফরম্যাটে সংরক্ষণ বা অন্য ফরম্যাটে রপ্তানি করতে পারে সহজে। নিম্নলিখিত উদাহরণটি দেখায় কীভাবে C++ অ্যাপ্লিকেশনের মধ্যে type1 ফন্ট লোড এবং ডেটা বের করা যায়।
C++ API ব্যবহার করে Type1 ফন্ট থেকে ডেটা কীভাবে লোড এবং এক্সট্র্যাক্ট করবেন?
System::String fileName = dataDir + u"courier.pfb";
//Font file name with full path
System::SharedPtr fd = System::MakeObject(Aspose::Font::FontType::Type1, System::MakeObject(u"pfb", System::MakeObject(fileName)));
System::SharedPtr font = System::DynamicCast_noexcept(Aspose::Font::Font::Open(fd));
ফন্ট মেট্রিক্স এবং গ্লিফ সমর্থন
Aspose.Font for C++ একটি অত্যন্ত বৈশিষ্ট্যসমৃদ্ধ লাইব্রেরি, যা অ্যাসেন্ট, ডিসেন্ট, লাইন গ্যাপ এবং অন্যান্য গুরুত্বপূর্ণ মাপসহ ফন্ট মেট্রিক্সের বিশাল পরিসরে প্রবেশাধিকার প্রদান করে। সফটওয়্যার ডেভেলপাররা গ্লিফ তথ্য যেমন ইউনিকোড মান, বাউন্ডিং বক্স, অ্যাডভান্স প্রস্থ ইত্যাদি পুনরুদ্ধার করতে পারে। এই বৈশিষ্ট্যগুলো ব্যবহারকারীদের আপনার অ্যাপ্লিকেশনের মধ্যে টেক্সটকে সঠিকভাবে অবস্থান এবং রেন্ডার করতে সক্ষম করে। নিম্নলিখিত উদাহরণটি দেখায় কীভাবে সফটওয়্যার ডেভেলপাররা C++ কমান্ড ব্যবহার করে গ্লিফের সঙ্গে টেক্সট রেন্ডার করতে পারে।
C++ অ্যাপ্লিকেশনগুলিতে গ্লিফ ব্যবহার করে টেক্সট কীভাবে রেন্ডার করবেন?
using Aspose::Font::Glyphs;
using Aspose::Font::Rendering;
using Aspose::Font::RenderingPath;
class GlyphOutlinePainter: IGlyphOutlinePainter
RenderingText::GlyphOutlinePainter::GlyphOutlinePainter(System::SharedPtr path)
{
_path = path;
}
void RenderingText::GlyphOutlinePainter::MoveTo(System::SharedPtr moveTo)
{
_path->CloseFigure();
_currentPoint.set_X((float)moveTo->get_X());
_currentPoint.set_Y((float)moveTo->get_Y());
}
void RenderingText::GlyphOutlinePainter::LineTo(System::SharedPtr 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 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;
}
C++ API মাধ্যমে ফন্ট ম্যানিপুলেশন ও এডিটিং
Aspose.Font for C++ সফটওয়্যার ডেভেলপারদেরকে বিভিন্ন উৎস থেকে, যেমন লোকাল ফাইল, স্ট্রিম বা URL, Type1 সহ অন্যান্য সমর্থিত ফন্ট ফরম্যাট লোড করার সুযোগ দেয়। সফটওয়্যার ডেভেলপাররা ফন্টগুলো একে একে অথবা একসাথে লোড করতে পারে, যা একাধিক ফন্ট একসাথে প্রক্রিয়া করা সহজ করে। লোড করার পর, ডেভেলপাররা ফন্টের প্রপার্টি আপডেট করতে পারে এবং ইচ্ছাকৃত ফরম্যাটে সেভ করতে পারে অথবা সহজে অন্য ফরম্যাটে এক্সপোর্ট করতে পারে। নিম্নলিখিত উদাহরণটি দেখায় কীভাবে C++ অ্যাপ্লিকেশনের মধ্যে type1 ফন্ট লোড এবং ডেটা বের করা যায়।
C++ অ্যাপসের মধ্যে Type1 ফন্ট থেকে ফন্ট মেট্রিক্স তথ্য পড়ুন
System::String fileName = dataDir + u"courier.pfb";
//Font file name with full path
System::SharedPtr fd = System::MakeObject(Aspose::Font::FontType::Type1, System::MakeObject(u"pfb", System::MakeObject(fileName)));
System::SharedPtr font = System::DynamicCast_noexcept(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);
