در پست قبلی، نحوه بارگیری و کار با فونت‌های CFF، TrueType، OpenType و Type1 را از داخل مشاهده کرده‌اید. برنامه های C++ شما این مقاله با نشان دادن نحوه تشخیص نمادهای لاتین در یک فونت به صورت برنامه‌نویسی با استفاده از C++، شما را یک قدم جلوتر می‌برد. پس از شناسایی، می توانید تصمیم بگیرید که آیا یک فونت از نمادهای لاتین پشتیبانی می کند یا خیر.

C++ API برای تشخیص نمادهای لاتین در فونت ها

Aspose.Font for C++ یک API دستکاری و مدیریت فونت است که به شما امکان می دهد پشتیبانی از نمادهای لاتین در فونت ها را به راحتی تشخیص دهید. می‌توانید API را دانلود یا از طریق NuGet نصب کنید.

PM> Install-Package Aspose.Font.Cpp

تشخیص نمادهای لاتین در فونت های TrueType در C++

تشخیص پشتیبانی از نمادهای لاتین با استفاده از Aspose.Font برای C++ به سادگی یک پای است. مراحل زیر برای بررسی اینکه آیا یک فونت TrueType خاص از نمادهای لاتین پشتیبانی می کند یا نه، آورده شده است.

  • یک شی از کلاس FontDefinition برای بارگذاری فونت با تعیین نوع آن به عنوان TrueType ایجاد کنید.
  • یک شی از کلاس TtfFont برای دسترسی به اطلاعات فونت ایجاد کنید.
  • از میان کدهای ممکن حلقه بزنید و آنها را به شناسه های علامت دار رمزگشایی کنید.
  • برای بررسی اینکه آیا نمادهای لاتین در فونت منبع TrueType پشتیبانی می‌شوند یا خیر، شناسه‌های علامت را مطابقت دهید.

نمونه کد زیر نحوه تشخیص نمادهای لاتین در فونت های TrueType با استفاده از C++ را نشان می دهد.

For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String fileName = dataDir + u"Montserrat-Regular.ttf";
//نام فایل فونت با مسیر کامل
    
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<TtfFont> ttfFont = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd));
    
bool latinText = true;
    
    
for (uint32_t code = 65; code < static_cast<uint32_t>(123); code++)
{
    System::SharedPtr<GlyphId> gid = ttfFont->get_Encoding()->DecodeToGid(code);
    if (gid == nullptr || gid == System::StaticCast<System::Object>(GlyphUInt32Id::get_NotDefId()))
    {
        latinText = false;
    }
}
    
if (latinText)
{
    System::Console::WriteLine(System::String::Format(u"Font {0} supports latin symbols.", ttfFont->get_FontName()));
}
else
{
    System::Console::WriteLine(System::String::Format(u"Latin symbols are not supported by font {0}.", ttfFont->get_FontName()));
}

تشخیص نمادهای لاتین در فونت های Type1 در C++

فرآیند تشخیص علائم لاتین در فونت های Type1 مانند فونت های TrueType است. تنها تفاوت در استفاده از کلاس Type1Font است. مراحل زیر روند کامل تشخیص نمادهای لاتین در فونت های Type1 را نشان می دهد.

  • از کلاس FontDefinition برای بارگذاری فونت با تعیین نوع آن به عنوان Type1 استفاده کنید.
  • از کلاس Type1Font برای دسترسی به اطلاعات فونت استفاده کنید.
  • از میان کدهای ممکن حلقه بزنید و آنها را به شناسه های علامت دار رمزگشایی کنید.
  • برای بررسی پشتیبانی از نمادهای لاتین در فونت Type1 ارائه شده، شناسه های علامت را مطابقت دهید.

نمونه کد زیر نحوه تشخیص نمادهای لاتین در فونت Type1 با استفاده از C++ را نشان می دهد.

For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String fileName = dataDir + u"courier.pfb";
//نام فایل فونت با مسیر کامل
    
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::Type1, System::MakeObject<FontFileDefinition>(u"pfb", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<Type1Font> font = System::DynamicCast_noexcept<Aspose::Font::Type1::Type1Font>(Aspose::Font::Font::Open(fd));
    
bool latinText = true;
    
    
for (uint32_t code = 65; code < static_cast<uint32_t>(123); code++)
{
    System::SharedPtr<GlyphId> gid = font->get_Encoding()->DecodeToGid(code);
    if (gid == nullptr || gid == System::StaticCast<System::Object>(GlyphUInt32Id::get_NotDefId()))
    {
        latinText = false;
    }
}
    
if (latinText)
{
    System::Console::WriteLine(System::String::Format(u"Font {0} supports latin symbols.", font->get_FontName()));
}
else
{
    System::Console::WriteLine(System::String::Format(u"Latin symbols are not supported by font {0}.", font->get_FontName()));
}

نتیجه

در این مقاله نحوه تشخیص علائم لاتین در فونت های TrueType و Type1 با استفاده از C++ را یاد گرفتید. نمونه کد در این مقاله به شما امکان می دهد تشخیص دهید که آیا نمادهای لاتین توسط یک فونت خاص پشتیبانی می شوند یا خیر. می توانید با استفاده از مستندات درباره API دستکاری فونت C++ اطلاعات بیشتری کسب کنید.

همچنین ببینید