Kết xuất văn bản bằng glyphs

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 các khả năng phong phú để làm việc với phông chữ, bao gồm chuyển đổi, thao tác với glyphs, phát hiện các ký hiệu Latinh, v.v. Một số tính năng có liên quan đến thao tác glyph, chẳng hạn như hiển thị văn bản.

Hình tượng là một thiết kế độc đáo của một ký tự trong kiểu chữ hoặc biểu diễn đồ họa của 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 Giới thiệu về Glyph .

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

Để gõ văn bản có glyphs, chúng ta 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

Kết xuất văn bản với glyphs bằng C++

Các bước tiếp theo thường được yêu cầu để hiển thị văn bản có glyphs:

  1. Tải tệp phông chữ vào bộ nhớ. Tại đâ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à chuyển nó vào đường dẫn tệp phông chữ.
  2. Giải mã văn bản thành ID glyph tương ứng của nó. Đối với điều này, hãy chuyển từng ký tự của văn bản thông 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. Nhận phác thảo của mỗi glyph. Đường viền là đường xác định hình dạng của ký tự. Điều này có thể đạt được bằng cách sử dụng Phương thức GetGlyphOutline() của đối tượng Font .
  4. Vẽ đường viền của mỗi nét bằng cách sử dụng đối tượng đồ họa, chẳng hạn như đối tượng GraphicsPath. Chỉ cần tạo một đối tượng triển khai giao diện IGlyphOutlinePainter, giao diện chịu trách nhiệm vẽ đường viền của các hình tượng.
  5. Hiển thị văn bản bằng cách sử dụng một đối tượng đồ họa để vẽ đường viền của mỗi nét. Điều này có thể được thực hiện bằng cách sử dụ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.