У попередній публікації ви бачили, як завантажувати шрифти CFF, TrueType, OpenType і Type1 і працювати з ними зсередини ваші програми C++. Ця стаття зробить вас ще на один крок далі, продемонструвавши, як визначити латинські символи у шрифті програмним шляхом за допомогою C++. Після виявлення ви можете вирішити, чи підтримує шрифт латинські символи чи ні.
- C++ API для виявлення латинських символів у шрифтах
- Визначайте латинські символи у шрифтах TrueType за допомогою C++
- Виявлення латинських символів у шрифтах Type1 за допомогою 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 для доступу до інформації про шрифт.
- Перегляньте можливі коди та розкодуйте їх у ідентифікатори гліфів.
- Зіставте ідентифікатори гліфів, щоб перевірити, чи підтримуються латинські символи у вихідному шрифті 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++ за допомогою документації.