1. محصولات
  2.   Font
  3.   C++
  4.   Aspose.Font برای C++

Aspose.Font برای C++

 
 

API فونت C++ برای خواندن، ذخیره و تبدیل فونت‌ها

کتابخانه C++ امکان بارگذاری، خواندن، ذخیره و تبدیل فرمت‌های مختلف فونت مانند TrueType، WOFF، EOT، OpenType، CFF و Type1 را در برنامه‌های مبتنی بر C++ فراهم می‌کند.

Aspose.Font برای C++ یک ابزار بسیار قدرتمند است که مدیریت قلم را ساده می‌کند و مجموعه گسترده‌ای از ویژگی‌ها را برای توسعه‌دهندگان نرم‌افزار و برنامه‌نویسان ارائه می‌دهد. این ابزار به توسعه‌دهندگان C++ امکان می‌دهد با فرمت‌های مختلف قلم کار کنند و طیف وسیعی از وظایف مرتبط با قلم را انجام دهند. این امکان را برای توسعه‌دهندگان نرم‌افزار فراهم می‌کند تا فایل‌های قلم را در فرمت‌های مختلف مانند TrueType (TTF)، OpenType (OTF)، PostScript Type 1 (PFB/PFA)، WOFF، EOT و بسیاری دیگر بارگذاری، تولید، ویرایش و تبدیل کنند. API می‌تواند وظایف مرتبط با قلم شما را به سطح بعدی ارتقا دهد بدون نیاز به وابستگی‌های خارجی.

Aspose.Font برای C++ یک کتابخانه پر ویژگی است که قابلیت‌های جامع دستکاری فونت را برای توسعه‌دهندگان C++ فراهم می‌کند. این کتابخانه از طیف گسترده‌ای از عملیات‌های فونت پشتیبانی می‌کند، از جمله استخراج متادیتای فونت، بارگذاری فایل‌های فونت از دیسک یا جریان، دسترسی به اطلاعات گلیف، تبدیل فونت‌ها به فرمت‌های مختلف، خواندن اطلاعات فونت، به‌روزرسانی فایل‌های فونت و ذخیره‌سازی آن‌ها بر روی دیسک، خواندن اطلاعات متریک از فایل‌های فونت، رندر متن با استفاده از گلیف‌های فونت، ادغام فونت‌های TrueType و موارد بیشتر. این کتابخانه از سیستم‌عامل‌های ۳۲ بیتی و ۶۴ بیتی پشتیبانی می‌کند.

Aspose.Font برای C++ قابلیت‌های پیشرفته تایپوگرافی را ارائه می‌دهد، از جمله مدیریت لیگاتورها، جایگزینی‌های گلیف متنی زمینه‌ای و اختیاری، و گزینه‌های پیشرفته چیدمان متن. این ویژگی‌ها به‌ویژه هنگام کار با اسکریپت‌ها یا زبان‌های پیچیده که نیاز به شکل‌گیری و رندر متن پیشرفته دارند، مفید هستند. API به‌صورت کراس‌پلتفرم است و به کاربران امکان استفاده یکپارچه بر روی سیستم‌عامل‌های مختلف از جمله ویندوز، لینوکس و macOS را می‌دهد. اگر به دنبال ارتقاء قابلیت‌های دستکاری فونت در برنامه‌های C++ خود هستید، Aspose.Font بدون شک شایستگی بررسی دارد.

Previous Next

شروع کار با Aspose.Font برای C++

روش پیشنهادی برای نصب Aspose.Font برای C++ استفاده از NuGet است. لطفاً برای نصب روان، فرمان زیر را استفاده کنید.

نصب Aspose.Font برای C++ از طریق دستور NuGet

NuGet\Install-Package Aspose.Font.Cpp -Version 23.4.0

می‌توانید کتابخانه را مستقیماً از صفحه محصول Aspose.Font برای C++ دانلود کنید

تبدیل قلم به فرمت‌های فایل پشتیبانی‌شده از طریق API C++

یکی از ویژگی‌های قابل توجه Aspose.Font برای C++ قابلیت تبدیل فونت‌ها بین فرمت‌های فایل پشتیبانی‌شده مختلف است. این ویژگی زمانی که توسعه‌دهندگان نرم‌افزار نیاز به تبدیل فونت‌ها به فرمت خاصی دارند که با محیط یا پلتفرم هدف شما سازگار باشد، بسیار مفید می‌شود. این کتابخانه تبدیل بی‌وقفه بین فونت‌های TrueType، OpenType، CFF، PostScript Type 1 و موارد دیگر را پشتیبانی می‌کند و به توسعه‌دهندگان امکان می‌دهد تا به طیف وسیعی از سناریوها پاسخ دهند. مثال زیر نشان می‌دهد چگونه می‌توان فونت را از هر یک از فرمت‌های پشتیبانی‌شده مانند TTF بارگذاری کرده و با استفاده از دستورات C++ به WOFF2 تبدیل کرد.

تبدیل TTF به WOFF2 با استفاده از API C++

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

بارگذاری و استخراج قلم‌های Type1 از طریق API C++

Aspose.Font برای C++ به توسعه‌دهندگان نرم‌افزار اجازه می‌دهد تا فونت‌های Type1 و سایر فرمت‌های پشتیبانی‌شده را از منابع مختلف مانند فایل‌های محلی، جریان‌ها یا URLها بارگذاری کنند. توسعه‌دهندگان می‌توانند فونت‌ها را به‌صورت تک‌تک یا به‌صورت دسته‌ای بارگذاری کنند، که پردازش همزمان چندین فونت را آسان می‌سازد. پس از بارگذاری، توسعه‌دهندگان می‌توانند ویژگی‌های فونت‌ها را به‌روزرسانی کرده و آن‌ها را به فرمت مورد نظر ذخیره یا به راحتی به فرمت‌های دیگر صادر کنند. مثال زیر نشان می‌دهد چگونه می‌توان فونت‌های type1 را در برنامه‌های C++ بارگذاری و داده‌ها را استخراج کرد.

چگونه داده‌ها را از قلم‌های Type1 با استفاده از API C++ بارگذاری و استخراج کنیم؟

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 برای C++ یک کتابخانه بسیار پر ویژگی است که دسترسی به مجموعه‌ای گسترده از معیارهای فونت مانند ascent، descent، line gap و سایر اندازه‌گیری‌های اساسی را فراهم می‌کند. توسعه‌دهندگان نرم‌افزار می‌توانند اطلاعات گلیف‌ها مانند مقادیر یونیکد، جعبه‌های محدود‌کننده (bounding boxes)، عرض پیشروی (advance widths) و موارد دیگر را بازیابی کنند. این ویژگی‌ها به کاربران امکان می‌دهند متن را به‌دقت در برنامه‌های خود موقعیت‌دهی و رندر کنند. مثال زیر نشان می‌دهد چگونه توسعه‌دهندگان نرم‌افزار می‌توانند متن را با گلیف‌ها با استفاده از دستورات 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;
    }

دستکاری و ویرایش قلم از طریق API C++

Aspose.Font برای C++ به توسعه‌دهندگان نرم‌افزار امکان می‌دهد فونت‌های Type1 و سایر فرمت‌های پشتیبانی‌شده را از منابع مختلفی مانند فایل‌های محلی، جریان‌ها یا URLها بارگذاری کنند. توسعه‌دهندگان می‌توانند فونت‌ها را به‌صورت تک‌تک یا به‌صورت دسته‌ای بارگذاری کنند، که پردازش همزمان چندین فونت را آسان می‌سازد. پس از بارگذاری، می‌توانند ویژگی‌های فونت‌ها را به‌روزرسانی کرده و به فرمت دلخواه ذخیره یا به راحتی به فرمت‌های دیگر صادر کنند. مثال زیر نشان می‌دهد چگونه می‌توان فونت‌های type1 را در برنامه‌های C++ بارگذاری و داده‌ها را استخراج کرد.

اطلاعات متریک‌های قلم را از فونت‌های Type1 در داخل برنامه‌های C++ بخوانید

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

 فارسی