Yazı Tipleri, metnin görünümünü tanımlamak için kullanılan dijital belgelerin ve web sayfalarının ayrılmaz bir parçasıdır. Yazı tipi dosyaları, yazı tipleriyle ilgili stiller, ağırlık, boyut vb. bilgileri depolamak için kullanılır. Bilgilerini çıkarmak için yazı tiplerini değiştirmeniz gereken durumlar olabilir. Bu tür senaryolar için, bu makalede, C++ kullanarak TrueType, CFF ve Type1 yazı tiplerinden bilgileri nasıl yükleyeceğinizi ve okuyacağınızı öğreneceksiniz.

C++ Yazı Tipi Düzenleme Kitaplığı

Aspose.Font for C++, TrueType, CFF, OpenType ve Type1 ile çalışmanıza izin veren güçlü bir yazı tipi işleme API’sidir. , EOT ve C++ uygulamalarınızdan birçok diğer yazı tipleri. Gliflerle çalışmanın yanı sıra yazı tiplerinden kodlama bilgilerini yükleyebilir, kaydedebilir ve ayıklayabilirsiniz. API, indirilenler bölümünden indirilebilir veya NuGet aracılığıyla kurulabilir.

C++ kullanarak CFF, TrueType ve Type1 Yazı Tiplerini yükleyin

Aspose.Font for C++, depolama ortamınızda bulunan dosyalardan CFF, TrueType ve Type1 yazı tiplerini yüklemenizi sağlar. Bir yazı tipi yüklemek için adımlar aşağıdadır.

  • Tipini (ör. TrueType, Type1, vb.) belirterek yazı tipini yüklemek için FontDefinition sınıfından bir nesne oluşturun.
  • FontDefinition nesnesinden sırasıyla CFF, TrueType ve Type1 yazı tiplerini açmak için CffFont, TtfFont veya Type1Font sınıfını kullanın.

C++ kullanarak CFF Yazı Tiplerini yükleyin

Aşağıdaki kod örneği, C++ kullanarak CFF yazı tiplerinin nasıl yükleneceğini 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"OpenSans-Regular.cff";
//Tam yol ile yazı tipi dosya adı
    
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::CFF, System::MakeObject<FontFileDefinition>(u"cff", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<CffFont> ttfFont = System::DynamicCast_noexcept<Aspose::Font::Cff::CffFont>(Aspose::Font::Font::Open(fd));

TrueType Yazı Tiplerini C++ kullanarak yükleyin

Aşağıdaki kod örneği, C++ kullanarak TrueType yazı tiplerinin nasıl yükleneceğini 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));

Type1 Yazı Tiplerini C++ kullanarak yükleyin

Aşağıdaki kod örneği, Type1 yazı tiplerinin C++ kullanılarak nasıl yükleneceğini 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));

C++ kullanarak TrueType veya Type1’den Yazı Tipi Metriklerini Çıkarın

Aspose.Font for C++ ayrıca Ascender, Descender, TypoAscender, TypoDescender ve UnitsPerEm gibi bilgileri içeren yazı tipi metriklerini ayıklamanıza olanak tanır. Aşağıda, bir TrueType veya Type1 yazı tipinden yazı tipi ölçümlerini alma adımları yer almaktadır.

  • TrueType veya Type1 yazı tipini yüklemek için FontDefinition sınıfından bir nesne oluşturun.
  • Yazı tipinin türüne göre TtfFont veya Type1Font sınıfını kullanarak yazı tipini açın.
  • Yazı tipinin ölçüm bilgilerini çıkarın.

C++ kullanarak TrueType Yazı Tipinden Yazı Tipi Metriklerini Alın

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> font = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(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);
    
//'A' sembolü için yazı tipi glifi hakkındaki bilgilere erişmek için yazı tipinden TtfCMapFormatBaseTable nesnesi olarak cmap unicode kodlama tablosunu alın.
//Ayrıca glif'e erişmek için fontun TtfGlyfTable (tablo 'glyf') nesnesine sahip olduğunu kontrol edin.
System::SharedPtr<Aspose::Font::TtfCMapFormats::TtfCMapFormatBaseTable> cmapTable;
if (font->get_TtfTables()->get_CMapTable() != nullptr)
{
    cmapTable = font->get_TtfTables()->get_CMapTable()->FindUnicodeTable();
}
if (cmapTable != nullptr && font->get_TtfTables()->get_GlyfTable() != nullptr)
{
    System::Console::WriteLine(System::String(u"Font cmap unicode table: PlatformID = ") + cmapTable->get_PlatformId() + u", PlatformSpecificID = " + cmapTable->get_PlatformSpecificId());
    
    //'A' sembolü için kod
    char16_t unicode = (char16_t)65;
    
    //'A' için glif dizini
    uint32_t glIndex = cmapTable->GetGlyphIndex(unicode);
    
    if (glIndex != static_cast<uint32_t>(0))
    {
        //'A' için glif
        System::SharedPtr<Glyph> glyph = font->GetGlyphById(glIndex);
        if (glyph != nullptr)
        {
            //Glif ölçümlerini yazdır
            System::Console::WriteLine(u"Glyph metrics for 'A' symbol:");
            System::String bbox = System::String::Format(System::String(u"Glyph BBox: Xmin = {0}, Xmax = {1}") + u", Ymin = {2}, Ymax = {3}", glyph->get_GlyphBBox()->get_XMin(), glyph->get_GlyphBBox()->get_XMax(), glyph->get_GlyphBBox()->get_YMin(), glyph->get_GlyphBBox()->get_YMax());
            System::Console::WriteLine(bbox);
            System::Console::WriteLine(System::String(u"Width:") + font->get_Metrics()->GetGlyphWidth(System::MakeObject<GlyphUInt32Id>(glIndex)));
        }
    }
}

C++ kullanarak Type1 Font’tan Font Metriklerini Çıkarın

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

Çözüm

Bu makalede, C++ kullanarak CFF, TrueType ve Type1 yazı tiplerini yüklemeyi ve bilgilerini çıkarmayı öğrendiniz. Belgeleri kullanarak C++ Yazı Tipi Manipülasyonu API’si hakkında daha fazlasını keşfedebilirsiniz.