Чтение информации о шрифте

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

 

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

Глиф — это уникальный дизайн символа или символа шрифта. Чтобы лучше понять этот шрифт, прочитайте статью Introduction to Glyph . описать внешний вид шрифта. Эти показатели могут включать в себя, среди прочего, такую ​​информацию, как высота символов, ширина символов, расстояние между символами и положение базовой линии. Они позволяют дизайнерам и разработчикам программного обеспечения точно прогнозировать расположение текста в цифровых документах и ​​пользовательских интерфейсах.

На этой странице объясняется, как получить различные метрики шрифта, такие как количество глифов, высота букв, ширина глифа «A» и т. д. Однако полная функциональность работы с глифами подробно описана в статье «Использование объектов глифов». Пример кода включает раздел по получению метаданных шрифта, включая имя шрифта. Этот тип функций может быть интегрирован в веб-приложения, такие как приложение Font Metadata , доступное в экосистеме Aspose. Если вы хотите изучить полные примеры и файлы данных, перейдите на Aspose Github Project .

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

  • Aspose.Font for C++ API — многофункциональный, мощный и простой в использовании API для обработки и преобразования документов.

  • Откройте диспетчер пакетов NuGet, найдите Aspose.Font и установите его. Вы также можете использовать следующую команду из консоли диспетчера пакетов.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Шаги для получения метрик шрифта с помощью C++:

  1. Извлеките информации о шрифте, создающем экземпляр класса TtfFont .
  2. Напечатайте имя шрифта, используя свойство FontName.
  3. Распечатайте количество глифов в шрифте, используя свойство NumGlyphs. Метрики шрифта, такие как надстрочный элемент, нижний элемент, верхний элемент опечатки, нижний элемент опечатки и UnitsPerEm, также печатаются.
  4. Затем код извлекает из шрифта таблицу кодировки Unicode cmap, которая используется для сопоставления кодов символов с индексами глифов. Он проверяет, есть ли у шрифта как таблица cmap, так и таблица glyf, которая используется для доступа к глифам. Если присутствуют обе таблицы, он извлекает индекс глифа для символа A, а затем получает глиф для символа A.
  5. Распечатайте ограничивающую рамку глифа «A» и его ширину.

Код С++ для получения информации о глифах шрифта

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



Часто задаваемые вопросы

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

Это свойство определяет способ отображения шрифта на экране. Некоторые метрики, такие как восхождение, спуск, ширина и кернинг, аналогичны метрикам глифов .

2. Как получить метрики шрифта?

Укажите шрифт, с которым вы хотите работать. Используя свойства интерфейса класса Aspose.Font.IFontMetrics, извлеките необходимую информацию о метриках шрифта.

3. Что такое метаданные шрифта?

Метаданные шрифта — это в основном информация о нем. Он включает в себя множество данных, таких как имя шрифта, имя семейства шрифтов, имя постскриптума, лицензирование, информацию об авторе и дизайнере и многое другое.

4. Как изменить метаданные шрифта?

Чтобы просмотреть или изменить информацию о шрифте онлайн, используйте наше приложение Метаданные шрифта .