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 API’sı
- C++ kullanarak CFF, TrueType ve Type1 Yazı Tiplerini yükleyin
- C++ kullanarak TrueType veya Type1 Yazı Tiplerinden Yazı Tipi Metriklerini Çıkarın
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.