Önceki gönderide, CFF, TrueType, OpenType ve Type1 yazı tiplerini içeriden nasıl yükleyeceğinizi ve bunlarla çalışacağınızı gördünüz C++ uygulamalarınız. Bu makale, C++ kullanarak bir yazı tipindeki Latin sembollerinin programlı olarak nasıl algılanacağını göstererek sizi bir adım öteye götürüyor. Algılamanın ardından, bir yazı tipinin Latin sembollerini destekleyip desteklemediğine karar verebilirsiniz.

Yazı Tiplerindeki Latin Sembollerini Algılamak için C++ API

Aspose.Font for C++, yazı tiplerindeki Latin sembollerinin desteğini oldukça kolay bir şekilde algılamanızı sağlayan bir yazı tipi düzenleme ve yönetim API’sidir. API’yi indirebilir veya NuGet aracılığıyla yükleyebilirsiniz.

PM> Install-Package Aspose.Font.Cpp

C++‘da TrueType Yazı Tiplerinde Latin Sembollerini Algıla

Aspose.Font for C++ kullanarak Latin sembollerinin desteğini tespit etmek çok basit. Belirli bir TrueType yazı tipinin Latin sembollerini destekleyip desteklemediğini kontrol etmek için adımlar aşağıdadır.

  • Yazı tipini TrueType olarak belirterek yüklemek için FontDefinition sınıfından bir nesne oluşturun.
  • Yazı tipinin bilgilerine erişmek için TtfFont sınıfından bir nesne oluşturun.
  • Olası kodlar arasında geçiş yapın ve bunları glif kimliklerine dönüştürün.
  • Kaynak TrueType yazı tipinde Latin sembollerinin desteklenip desteklenmediğini kontrol etmek için glif kimliklerini eşleştirin.

Aşağıdaki kod örneği, C++ kullanılarak TrueType yazı tiplerinde Latin sembollerinin nasıl algılanacağını gösterir.

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";
//Tam yol ile yazı tipi dosya adı
    
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()));
}

C++‘da Type1 Yazı Tiplerindeki Latin Sembollerini Algıla

Type1 yazı tiplerinde Latin sembollerini algılama işlemi, TrueType yazı tiplerinde yaptığınızla aynıdır. Tek fark, Type1Font sınıfının kullanılmasıdır. Aşağıdaki adımlar, Type1 yazı tiplerinde Latin sembol algılama işleminin tamamını göstermektedir.

  • Tipini Type1 olarak belirterek yazı tipini yüklemek için FontDefinition sınıfını kullanın.
  • Yazı tipinin bilgilerine erişmek için Type1Font sınıfını kullanın.
  • Olası kodlar arasında geçiş yapın ve bunları glif kimliklerine dönüştürün.
  • Sağlanan Type1 yazı tipindeki Latin sembollerinin desteğini kontrol etmek için glif kimliklerini eşleştirin.

Aşağıdaki kod örneği, Type1 yazı tipindeki Latin sembollerinin C++ kullanılarak nasıl algılanacağını gösterir.

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";
//Tam yol ile yazı tipi dosya adı
    
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()));
}

Çözüm

Bu makalede, C++ kullanarak TrueType ve Type1 yazı tiplerinde Latin sembollerinin nasıl algılanacağını öğrendiniz. Bu makaledeki kod örnekleri, Latin sembollerinin belirli bir yazı tipi tarafından desteklenip desteklenmediğini belirlemenizi sağlar. Belgeleri kullanarak C++ yazı tipi işleme API’si hakkında daha fazla bilgi edinebilirsiniz.

Ayrıca bakınız