Đọc thông tin phông chữ

Khám phá số liệu phông chữ với Giải pháp API Aspose.Font cho C++. Tìm hiểu thông tin chi tiết về từng nét, đường cong và sắc thái. Giải pháp của chúng tôi cho phép bạn làm việc dễ dàng với glyph, cho phép bạn trích xuất thông tin về các đặc điểm độc đáo của bất kỳ phông chữ nào.

 

Đi sâu vào thế giới khả năng phông chữ với Giải pháp API Aspose.Font dành cho C++, cung cấp cho bạn một bộ tính năng mạnh mẽ, bao gồm chuyển đổi phông chữ, thao tác glyph, phát hiện ký hiệu Latinh, v.v. API của chúng tôi cũng cho phép bạn làm việc với các glyph và thu thập thông tin về các glyph có trong phông chữ. Nâng cao thiết kế của bạn, tăng cường các dự án của bạn và mở khóa toàn bộ tiềm năng của glyphs với Aspose.Font for C++. Đừng chờ đợi và hãy dùng thử miễn phí!

Một glyph là một thiết kế độc đáo cho một ký tự hoặc biểu tượng trong một kiểu chữ. Để hiểu rõ hơn về đơn vị phông chữ này, hãy đọc bài viết Giới thiệu về Glyph .Chỉ số phông chữ là phép đo và thông số kỹ thuật được sử dụng để mô tả sự xuất hiện trực quan của một kiểu chữ. Các số liệu này có thể bao gồm thông tin như chiều cao của ký tự, chiều rộng của ký tự, khoảng cách giữa các ký tự và vị trí của đường cơ sở, trong số những thông tin khác. Chúng cho phép các nhà thiết kế và nhà phát triển phần mềm dự đoán chính xác bố cục của văn bản trong tài liệu kỹ thuật số và giao diện người dùng.

Trang này giải thích cách truy xuất các chỉ số phông chữ khác nhau, chẳng hạn như số lượng nét, chiều cao chữ cái, chiều rộng của nét ‘A’, v.v. Tuy nhiên, toàn bộ chức năng làm việc với các nét được mô tả chi tiết trong bài viết Sử dụng các đối tượng Glyph. Ví dụ mã bao gồm một phần truy xuất siêu dữ liệu phông chữ, bao gồm tên phông chữ. Loại chức năng này có thể được tích hợp vào các ứng dụng web, chẳng hạn như ứng dụng Siêu dữ liệu phông chữ có sẵn trong hệ sinh thái Aspose. Nếu bạn muốn tìm hiểu các ví dụ hoàn chỉnh và tệp dữ liệu, vui lòng truy cập Aspose Dự án Github .

Để nhận số liệu phông chữ, chúng tôi cần:

  • API Aspose.Font cho C++ là API chuyển đổi và thao tác tài liệu giàu tính năng, mạnh mẽ và dễ sử dụng.

  • Mở trình quản lý gói NuGet và tìm kiếm Aspose.Font và cài đặt. Bạn cũng có thể sử dụng lệnh sau từ Bảng điều khiển quản lý gói.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Các bước để lấy số liệu phông chữ bằng C++:

  1. Trích xuất thông tin về phông chữ tạo phiên bản của Lớp TtfFont .
  2. In tên của phông chữ bằng thuộc tính FontName.
  3. In số lượng nét chữ trong phông chữ bằng thuộc tính NumGlyphs. Các số liệu về phông chữ, chẳng hạn như phần tăng dần, phần giảm dần, phần tăng lỗi chính tả, phần giảm dần lỗi chính tả và UnitsPerEm cũng được in.
  4. Sau đó, mã sẽ truy xuất bảng mã hóa unicode cmap từ phông chữ, được sử dụng để ánh xạ mã ký tự sang chỉ số glyph. Nó kiểm tra xem phông chữ có cả bảng cmap và bảng glyf, được sử dụng để truy cập các hình tượng. Nếu có cả hai bảng, nó sẽ truy xuất chỉ mục glyf cho ký tự A và sau đó nhận được glyph cho ký hiệu A.
  5. In hộp giới hạn của nét chữ A và chiều rộng của nó.

Mã C++ để lấy thông tin về glyphs của phông chữ

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



Câu hỏi thường gặp

1. Chỉ số phông chữ là gì?

Đó là thuộc tính xác định cách hiển thị phông chữ trên màn hình. Một số chỉ số như tăng dần, giảm dần, chiều rộng và khoảng cách hạt nhân tương tự như Chỉ số hình tượng .

2. Làm cách nào để nhận số liệu về phông chữ?

Chỉ định phông chữ bạn muốn làm việc. Sử dụng các thuộc tính của giao diện Lớp Aspose.Font.IFontMetrics, trích xuất thông tin về số liệu phông chữ mà bạn cần.

3. Siêu dữ liệu phông chữ là gì?

Font Metadata về cơ bản là thông tin về nó. Nó bao gồm nhiều dữ liệu như Tên phông chữ, Tên họ phông chữ, Tên bản mô tả, giấy phép, thông tin của tác giả và nhà thiết kế, v.v.

4. Làm cách nào để thay đổi siêu dữ liệu phông chữ?

Để xem hoặc thay đổi thông tin phông chữ trực tuyến, hãy sử dụng ứng dụng Siêu dữ liệu phông chữ của chúng tôi.