ใน โพสต์ก่อนหน้า คุณได้เห็นวิธีโหลดและใช้งานฟอนต์ 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 for C++ นั้นง่ายเหมือนวงกลม ต่อไปนี้เป็นขั้นตอนในการตรวจสอบว่าฟอนต์ TrueType รองรับสัญลักษณ์ละตินหรือไม่

  • สร้างวัตถุของคลาส FontDefinition เพื่อโหลดฟอนต์โดยระบุประเภทเป็น TrueType
  • สร้างวัตถุของคลาส TtfFont เพื่อเข้าถึงข้อมูลของแบบอักษร
  • วนซ้ำรหัสที่เป็นไปได้และถอดรหัสเป็น glyph ID
  • จับคู่รหัสสัญลักษณ์เพื่อตรวจสอบว่ารองรับสัญลักษณ์ละตินในฟอนต์ 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 เพื่อเข้าถึงข้อมูลของฟอนต์
  • วนซ้ำรหัสที่เป็นไปได้และถอดรหัสเป็น glyph ID
  • จับคู่รหัสสัญลักษณ์เพื่อตรวจสอบการรองรับสัญลักษณ์ละตินในแบบอักษร 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++ ได้โดยใช้ เอกสารประกอบ

ดูสิ่งนี้ด้วย