
Aspose.Font for C++
API Phông chữ C++ để Đọc, Lưu & Chuyển đổi Phông chữ
Thư viện C++ cho phép Tải, Đọc, Lưu và Chuyển đổi các định dạng phông chữ khác nhau như TrueType, WOFF, EOT, OpenType, CFF và Type1 trong các ứng dụng dựa trên C++.
Aspose.Font cho C++ là một công cụ rất mạnh mẽ giúp đơn giản hoá việc xử lý phông chữ và cung cấp một bộ tính năng phong phú cho các nhà phát triển phần mềm và lập trình viên. Nó cho phép các nhà phát triển C++ làm việc với nhiều định dạng phông chữ khác nhau và thực hiện một loạt các nhiệm vụ liên quan đến phông chữ. Nó cho phép các nhà phát triển phần mềm tải, tạo, chỉnh sửa và chuyển đổi các tệp phông chữ ở nhiều định dạng, chẳng hạn như TrueType (TTF), OpenType (OTF), PostScript Type 1 (PFB/PFA), WOFF, EOT và nhiều định dạng khác. API có thể nâng cao các nhiệm vụ liên quan đến phông chữ của bạn lên một cấp độ mới mà không cần bất kỳ phụ thuộc bên ngoài nào.
Aspose.Font cho C++ là một thư viện giàu tính năng cung cấp khả năng thao tác phông chữ toàn diện cho các nhà phát triển C++. Thư viện hỗ trợ một loạt các thao tác với phông chữ, bao gồm trích xuất siêu dữ liệu phông chữ, tải tệp phông chữ từ đĩa hoặc luồng, truy cập thông tin glyph, chuyển đổi phông chữ sang các định dạng khác nhau, đọc thông tin phông chữ, cập nhật tệp phông chữ và lưu nó vào đĩa, đọc thông tin đo lường từ các tệp phông chữ, hiển thị văn bản bằng glyph của phông chữ, hợp nhất các phông TrueType và nhiều hơn nữa. Nó hỗ trợ hệ điều hành 32-bit cũng như 64-bit.
Aspose.Font cho C++ cung cấp các khả năng typographic nâng cao, bao gồm xử lý các ligature, thay thế glyph ngữ cảnh và tùy chọn, và các tùy chọn bố cục văn bản tiên tiến. Những tính năng này đặc biệt hữu ích khi làm việc với các script phức tạp hoặc ngôn ngữ đòi hỏi việc tạo hình và hiển thị văn bản tinh vi. API này đa nền tảng và cho phép người dùng sử dụng nó một cách liền mạch trên các hệ điều hành khác nhau, bao gồm Windows, Linux và macOS. Nếu bạn muốn nâng cao khả năng thao tác phông chữ trong các ứng dụng C++ của mình, Aspose.Font chắc chắn đáng cân nhắc.
Bắt đầu với Aspose.Font cho C++
Cách khuyến nghị để cài đặt Aspose.Font cho C++ là sử dụng NuGet. Vui lòng sử dụng lệnh sau để cài đặt suôn sẻ.
Cài đặt Aspose.Font cho C++ qua lệnh NuGet
NuGet\Install-Package Aspose.Font.Cpp -Version 23.4.0Bạn có thể tải thư viện trực tiếp từ trang sản phẩm Aspose.Font cho C++
Chuyển đổi phông chữ sang các định dạng tệp được hỗ trợ qua API C++
Một trong những tính năng đáng chú ý của Aspose.Font cho C++ là khả năng chuyển đổi phông chữ giữa các định dạng tệp được hỗ trợ khác nhau. Điều này rất tiện lợi khi các nhà phát triển phần mềm cần chuyển đổi phông chữ sang một định dạng cụ thể tương thích với môi trường hoặc nền tảng mục tiêu của bạn. Thư viện hỗ trợ chuyển đổi liền mạch giữa các phông chữ TrueType, OpenType, CFF, PostScript Type 1 và hơn nữa, cho phép các nhà phát triển đáp ứng một loạt các kịch bản. Ví dụ sau đây cho thấy cách tải phông chữ từ bất kỳ định dạng nào được hỗ trợ như TTF và chuyển đổi nó sang WOFF2 bằng các lệnh C++.
Chuyển đổi TTF sang WOFF2 bằng API C++
using namespace System;
using namespace Aspose::Font::Sources;
using namespace Aspose::Font::Ttf;
using namespace Aspose::Font;
// Open TTF font
SharedPtr fontFileDefinition = MakeObject(MakeObject(u"Montserrat-Regular.ttf"));
SharedPtr fontDefinition = MakeObject(FontType::TTF, fontFileDefinition);
SharedPtr font = Font::Open(fontDefinition);
// WOFF2 output settings
SharedPtr outStream = IO::File::Create(u"Montserrat-Regular.woff2");
// Convert TTF to WOFF2
font->SaveToFormat(outStream, FontSavingFormats::WOFF2);
Tải và Trích xuất phông chữ Type1 qua API C++
Aspose.Font cho C++ cho phép các nhà phát triển phần mềm tải định dạng font Type1 cũng như các định dạng font được hỗ trợ khác từ các nguồn khác nhau, chẳng hạn như tệp cục bộ, luồng dữ liệu hoặc URL. Các nhà phát triển phần mềm có thể tải font riêng lẻ hoặc hàng loạt, giúp dễ dàng xử lý nhiều font đồng thời. Khi đã tải, các nhà phát triển có thể cập nhật các thuộc tính của font và lưu chúng lại dưới định dạng mong muốn hoặc xuất chúng sang các định dạng khác một cách dễ dàng. Ví dụ dưới đây cho thấy cách tải và trích xuất dữ liệu từ font type1 trong các ứng dụng C++.
Cách tải và trích xuất dữ liệu từ phông chữ Type1 bằng API C++?
System::String fileName = dataDir + u"courier.pfb";
//Font file name with full path
System::SharedPtr fd = System::MakeObject(Aspose::Font::FontType::Type1, System::MakeObject(u"pfb", System::MakeObject(fileName)));
System::SharedPtr font = System::DynamicCast_noexcept(Aspose::Font::Font::Open(fd));
Hỗ trợ các chỉ số phông chữ và glyph
Aspose.Font cho C++ là một thư viện rất phong phú tính năng, cung cấp quyền truy cập vào một loạt các chỉ số font, bao gồm độ lên, độ xuống, khoảng cách dòng và nhiều đo lường thiết yếu khác. Các nhà phát triển phần mềm có thể lấy thông tin glyph như giá trị Unicode, hộp bao, chiều rộng tiến và hơn thế nữa. Những tính năng này cho phép người dùng định vị và hiển thị văn bản một cách chính xác trong các ứng dụng của bạn. Ví dụ dưới đây cho thấy cách các nhà phát triển phần mềm có thể hiển thị văn bản với các glyph bằng các lệnh C++.
Cách hiển thị văn bản với các glyph trong các ứng dụng C++?
using Aspose::Font::Glyphs;
using Aspose::Font::Rendering;
using Aspose::Font::RenderingPath;
class GlyphOutlinePainter: IGlyphOutlinePainter
RenderingText::GlyphOutlinePainter::GlyphOutlinePainter(System::SharedPtr path)
{
_path = path;
}
void RenderingText::GlyphOutlinePainter::MoveTo(System::SharedPtr moveTo)
{
_path->CloseFigure();
_currentPoint.set_X((float)moveTo->get_X());
_currentPoint.set_Y((float)moveTo->get_Y());
}
void RenderingText::GlyphOutlinePainter::LineTo(System::SharedPtr 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 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;
}
Thao tác và chỉnh sửa phông chữ qua API C++
Aspose.Font cho C++ cho phép các nhà phát triển phần mềm tải Type1 cũng như các định dạng phông chữ được hỗ trợ khác từ các nguồn khác nhau, chẳng hạn như tệp cục bộ, luồng hoặc URL. Các nhà phát triển phần mềm có thể tải phông chữ riêng lẻ hoặc hàng loạt, giúp dễ dàng xử lý nhiều phông chữ đồng thời. Khi đã tải, các nhà phát triển có thể cập nhật các thuộc tính của phông chữ và lưu chúng lại dưới định dạng mong muốn hoặc xuất chúng sang các định dạng khác một cách dễ dàng. Ví dụ sau đây cho thấy cách tải và trích xuất dữ liệu từ phông chữ type1 trong các ứng dụng C++.
Đọc thông tin số liệu phông chữ từ Font Type1 trong các ứng dụng C++
System::String fileName = dataDir + u"courier.pfb";
//Font file name with full path
System::SharedPtr fd = System::MakeObject(Aspose::Font::FontType::Type1, System::MakeObject(u"pfb", System::MakeObject(fileName)));
System::SharedPtr font = System::DynamicCast_noexcept(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);
