Прочитати інформацію про шрифт

Визначайте метрики шрифтів за допомогою Aspose.Font API Зішення для C++. Дізнайтеся детальну інформацію про кожен штрих, вигин і деталь. Наше рішення дозволяє без зусиль працювати з гліфами, отримуючи інформацію про унікальні характеристики будь-якого шрифту.

 

Пориньте у світ можливостей шрифтів із рішенням Aspose.Font API для C++, яке пропонує вам набір потужних інструментів, включаючи перетворення шрифтів, маніпуляції з гліфами, виявлення латинських символів тощо. Наш API також дає вам змогу працювати з гліфами та отримувати інформацію про такі, що, включені до шрифту. Удосконалюйте свої дизайни, вдосконалюйте свої проєкти та розкрийте весь потенціал текстів за допомогою Aspose.Font для C++. Не чекайте та отримайте безкоштовну пробну версію!

Гліф — це унікальний дизайн символу або символу в гарнітурі. Щоб краще зрозуміти цю одиницю шрифту, прочитайте статтю Вступ до гліфа . Метрики шрифту — це вимірювання та специфікації, які використовуються для опису візуального вигляду гарнітури. Ці показники можуть містити таку інформацію, як висота символів, ширина символів, відстань між символами та положення базової лінії тощо і дозволяють дизайнерам і розробникам програмного забезпечення точно прогнозувати макет тексту в цифрових документах і інтерфейсі користувача.

На цій сторінці пояснюється, як отримати різні показники шрифту, такі як кількість гліфів, висота літери, ширина гліфа “A” тощо. Проте повна функціональність роботи з гліфами детально описана в статті Використання об’єктів гліфів. Приклад коду містить розділ про отримання метаданих шрифту, включаючи назву шрифту. Цей тип функцій можна інтегрувати у веб-програми, такі як програма *Метадата шрифтів * , доступна в екосистемі Aspose. Якщо ви хочете ознайомитись із повними прикладами та файлами даних, перейдіть до Aspose Github Project .

Для отримання метрики шрифту нам потрібно:

  • API Aspose.Font для C++, який є багатофункціональним, потужним і простим у використанні API для обробки та перетворення документів.

  • Відкрити менеджер пакунків NuGet і знайти і встановити Aspose.Font. Ви також можете використати наступну команду з консолі менеджера пакетів.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Покрокова інструкція для отримання показників шрифту за допомогою C++:

  1. Отримайте інформацію про шрифт, створивши екземпляр класу TtfFont .
  2. Виведіть назву шрифту за допомогою властивості FontName.
  3. Виведіть кількість гліфів у шрифті за допомогою властивості NumGlyphs. Також виведіть метрики шрифту, такі як висота підйому, висота спуску, типографічний підйом, типографічний спуск та одиниці на ем.
  4. Далі код отримує таблицю кодування Юнікод cmap зі шрифту, яка використовується для відображення кодових значень символів на індекси гліфів. Він перевіряє, чи шрифт містить як таблицю cmap, так і таблицю glyf, яка використовується для доступу до гліфів. Якщо обидві таблиці присутні, він отримує індекс glyf для символу A і потім отримує сам гліф для символу A.
  5. Надрукуйте обмежувальну рамку гліфа A ​​та її ширину.

Код C++ для отримання інформації про гліфи шрифту

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



FAQ

1. Що таке метрика шрифту?

Це властивість, яка визначає спосіб відображення шрифту на екрані. Деякі показники, як-от підйом, спуск, ширина та кернінг, схожі на метрики гліфа .

2. Як вилучити метрики шрифту?

Вкажіть шрифт, з яким ви хочете працювати. Використовуючи властивості інтерфейсу класу Aspose.Font.IFontMetrics, витягніть потрібну інформацію про метрику шрифту.

3. Що таке метадані шрифту?

Метадані шрифту — це в основному інформація про нього. Це можуть бути дані, як-от назва шрифту, назва сімейства шрифту, назва Postscript, інформація про ліцензування, автора та дизайнера та багато іншого.

4. Як змінити метадані шрифту?

Щоб переглянути або змінити інформацію про шрифт онлайн, скористайтеся нашою програмою Метадані шрифту .