Hiển thị văn bản bằng glyph

Giải pháp API C++ để hiển thị văn bản với phông chữ mong muốn.

 

Giải pháp API Aspose.Font cung cấp khả năng phong phú để làm việc với phông chữ, bao gồm chuyển đổi, thao tác glyph, phát hiện ký tự Latin và hơn nữa. Một số tính năng liên quan đến thao tác glyph, chẳng hạn như hiển thị văn bản.

Glyph là một thiết kế duy nhất của một ký tự trong một phông chữ hoặc một biểu diễn đồ họa của một ký hiệu hoặc ký tự. Để hiểu sâu hơn về đơn vị phông chữ này, hãy đọc bài viết Introduction to Glyph .

Trang này giải thích cách hiển thị văn bản bằng glyph, nhưng một giải thích toàn diện về chức năng được cung cấp trong bài viết Using Glyph objects . Ở đó, bạn sẽ tìm thấy nhiều ví dụ mã C++ hơn và tìm hiểu về khả năng của Aspose.Font trong việc làm việc với glyph và các đối tượng Glyph. Bạn cũng có thể tìm các ví dụ hoàn chỉnh và tệp dữ liệu tại dự án Github Project của Aspose.

Để gõ văn bản bằng glyph, chúng ta cần:

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

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

Package Manager Console Command


    PM> Install-Package Aspose.Font

Hiển thị văn bản bằng glyph sử dụng C++

Các bước tiếp theo thường cần thiết để hiển thị văn bản bằng glyph:

  1. Tải tệp phông chữ vào bộ nhớ. Ở đây bạn cần tạo một đối tượng phông chữ, chẳng hạn như đối tượng Type1Font, và cung cấp đường dẫn tới tệp phông chữ.
  2. Giải mã văn bản thành các ID glyph tương ứng. Đối với việc này, truyền mỗi ký tự của văn bản qua đối tượng mã hóa của phông chữ và giải mã nó thành ID glyph tương ứng.
  3. Lấy đường viền của mỗi glyph. Đường viền là một đường dẫn xác định hình dạng của ký tự. Điều này có thể thực hiện bằng phương thức GetGlyphOutline() của đối tượng Font .
  4. Vẽ đường viền của mỗi glyph bằng một đối tượng đồ họa, chẳng hạn như đối tượng GraphicsPath. Chỉ cần tạo một đối tượng thực hiện giao diện IGlyphOutlinePainter, chịu trách nhiệm vẽ đường viền của các glyph.
  5. Hiển thị văn bản bằng cách sử dụng đối tượng đồ họa để vẽ đường viền của mỗi glyph. Điều này có thể thực hiện bằng phương thức DrawPath() của đối tượng đồ họa.

Mã C++ để hiển thị văn bản

    using Aspose::Font::Glyphs;
    using Aspose::Font::Rendering;
    using Aspose::Font::RenderingPath;
    class GlyphOutlinePainter: IGlyphOutlinePainter
    RenderingText::GlyphOutlinePainter::GlyphOutlinePainter(System::SharedPtr<System::Drawing::Drawing2D::GraphicsPath> path)
    {
        _path = path;
    }

    void RenderingText::GlyphOutlinePainter::MoveTo(System::SharedPtr<Aspose::Font::RenderingPath::MoveTo> moveTo)
    {
        _path->CloseFigure();
        _currentPoint.set_X((float)moveTo->get_X());
        _currentPoint.set_Y((float)moveTo->get_Y());
    }

    void RenderingText::GlyphOutlinePainter::LineTo(System::SharedPtr<Aspose::Font::RenderingPath::LineTo> lineTo)
    {
        float x = (float)lineTo->get_X();
        float y = (float)lineTo->get_Y();
        _path->AddLine(_currentPoint.get_X(), _currentPoint.get_Y(), x, y);
        _currentPoint.set_X(x);
        _currentPoint.set_Y(y);
    }

    void RenderingText::GlyphOutlinePainter::CurveTo(System::SharedPtr<Aspose::Font::RenderingPath::CurveTo> curveTo)
    {
        float x3 = (float)curveTo->get_X3();
        float y3 = (float)curveTo->get_Y3();
    
        _path->AddBezier(_currentPoint.get_X(), _currentPoint.get_Y(), (float)curveTo->get_X1(), (float)curveTo->get_Y1(), (float)curveTo->get_X2(), (float)curveTo->get_Y2(), x3, y3);
    
        _currentPoint.set_X(x3);
        _currentPoint.set_Y(y3);
    }

    void RenderingText::GlyphOutlinePainter::ClosePath()
    {
        _path->CloseFigure();
    }

    System::Object::shared_members_type Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::GetSharedMembers()
    {
        auto result = System::Object::GetSharedMembers();
    
        result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_path", this->_path);
        result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_currentPoint", this->_currentPoint);
    
        return result;
    }



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

1. Phông chữ được hiển thị qua Aspose.Font như thế nào?

Để kết xuất phông chữ bằng giải pháp API này, bạn sẽ cần các thực thể Aspose.Font.Rendering và Không gian tên Aspose.Font.Renderers . Trước tiên, hãy triển khai các phương thức IGlyphOutlinePainter. Sau đó, tạo Phương thức DrawText(). Tạo phương thức tiện ích để tính toán độ rộng phông chữ và gọi chức năng hiển thị văn bản.

2. Bạn nên chú ý đến yếu tố nào khi hiển thị văn bản bằng hình tượng?

Khi hiển thị văn bản bằng hình tượng, có một số yếu tố quan trọng cần xem xét để đảm bảo kết quả chính xác và hấp dẫn về mặt hình ảnh như lựa chọn phông chữ, gợi ý, k sâu và theo dõi, số liệu hình tượng, màu sắc và độ tương phản, v.v.

3. Gợi ý phông chữ là gì?

Gợi ý có thể giúp duy trì độ rõ ràng và dễ đọc của văn bản, đặc biệt ở kích thước nhỏ hơn hoặc trên màn hình có độ phân giải thấp.