Yazin tipi bilgilerini okuyun
Aspose.Font API Çözümü for C++ ile yazı tipi ölçümlerini keşfedin. Her çizgi, eğri ve nüans hakkında ayrıntılı içgörüler öğrenin. Çözümümüz, gliflerle sorunsuz çalışmanızı sağlar ve herhangi bir yazı tipinin benzersiz özellikleri hakkında bilgi çıkarmanıza imkan tanır.
Aspose.Font API Çözümü for C++ ile yazı tipi olasılıkları dünyasına dalın; bu çözüm font dönüşümleri, glif manipülasyonu, Latin simge tespiti ve daha fazlasını içeren güçlü özellikler paketi sunar. API'miz ayrıca gliflerle çalışmanıza ve bir fontta bulunan glifler hakkında bilgi almanıza olanak tanır. Tasarımlarınızı yükseltin, projelerinizi güçlendirin ve Aspose.Font for C++ ile gliflerin tam potansiyelini ortaya çıkarın. Beklemeyin, ücretsiz deneme sürümünü alın!
Bir glif, bir yazı tipindeki karakter veya sembolün benzersiz tasarımıdır. Bu yazı tipi birimini daha iyi anlamak için Glif Giriş makalesini okuyun. Yazı tipi ölçümleri, bir yazı tipinin görsel görünümünü tanımlamak için kullanılan ölçümler ve spesifikasyonlardır. Bu ölçümler, karakter yüksekliği, karakter genişliği, karakterler arasındaki boşluk ve baseline konumu gibi bilgileri içerebilir. Tasarımcılara ve yazılım geliştiricilere dijital belgelerde ve kullanıcı arayüzlerinde metnin düzenini doğru bir şekilde tahmin etme imkanı sağlar.
Bu sayfa, glif sayısı, harf yüksekliği, ‘A’ glifinin genişliği gibi çeşitli yazı tipi ölçümlerini nasıl alacağınızı açıklar. Ancak gliflerle çalışma konusundaki tam işlevsellik, Glif Nesnelerini Kullanma makalesinde ayrıntılı olarak açıklanmıştır. Kod örneği, yazı tipi adı dahil olmak üzere yazı tipi metadatasını almayı gösteren bir bölümü içerir. Bu tür bir işlevsellik, Aspose ekosisteminde bulunan Font Metadata uygulaması gibi web uygulamalarına entegre edilebilir. Tam örnekler ve veri dosyaları için lütfen Aspose Github Projesi adresine gidin.
Yazı tipi ölçümlerini alabilmek için şunlara ihtiyacımız var:
Aspose.Font for C++ API, özellik bakımından zengin, güçlü ve kullanımı kolay bir belge işleme ve dönüşüm API'sidir.
NuGet paket yöneticisini açın, Aspose.Font'u arayın ve kurun. Ayrıca Paket Yöneticisi Konsolundan aşağıdaki komutu da kullanabilirsiniz.
Package Manager Console Command
PM> Install-Package Aspose.Font
C++ kullanarak yazı tipi ölçümlerini elde etme adımları:
- Bir TtfFont sınıfının bir örneğini oluşturarak bir yazı tipi hakkında bilgi çıkarın.
- Yazı tipinin adını FontName özelliğini kullanarak yazdırın.
- Yazı tipindeki glif sayısını NumGlyphs özelliğini kullanarak yazdırın. Ascender, descender, typo ascender, typo descender ve UnitsPerEm gibi yazı tipi ölçümleri de yazdırılır.
- Kod daha sonra yazı tipinden
cmapunicode kodlama tablosunu alır; bu tablo karakter kodlarını glif indekslerine eşlemek için kullanılır. Yazı tipinincmaptablosu veglyftablosu olup olmadığı kontrol edilir;glyftablosu gliflere erişim sağlar. Her iki tablo da mevcutsa, karakterAiçinglyfindeksi alınır ve ardındanAsembolünün glifi elde edilir. Aglifinin sınırlama kutusunu ve genişliğini yazdırın.
Yazı tipinin glifleri hakkında bilgi almak için C++ Kodu
using Aspose::Font;
using Aspose::Font::Glyphs;
using Aspose::Font::Ttf; //Font file name with the full path
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);
//Get cmap unicode encoding table from the font as object TtfCMapFormatBaseTable to access the information about the font glyph for symbol 'A'.
//Also check that font has object TtfGlyfTable (table 'glyf') to access glyph.
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());
//Code for 'A' symbol
char16_t unicode = (char16_t)65;
//Glyph index for 'A'
uint32_t glIndex = cmapTable->GetGlyphIndex(unicode);
if (glIndex != static_cast<uint32_t>(0))
{
//Glyph for 'A'
System::SharedPtr<Glyph> glyph = font->GetGlyphById(glIndex);
if (glyph != nullptr)
{
//Print glyph metrics
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)));
}
}
}