Fonts

Fonts

Hướng dẫn này cho thấy cách kiểm tra các phông chữ được tham chiếu trong tài liệu, trích xuất dữ liệu phông chữ nhúng, và kiểm soát TrueType việc nhúng phông chữ khi lưu bằng Aspose.Words FOSS cho .NET. Aspose.Words FOSS cho .NET theo dõi mọi phông chữ được tham chiếu bởi tài liệu đã tải thông qua FontInfoCollection, và cung cấp siêu dữ liệu cho từng phông chữ, trích xuất phông chữ nhúng, và các điều khiển nhúng khi lưu thông qua FontInfo. Document.FontSettings và LoadOptions.FontSettings cung cấp FontSettings điểm vào (cố ý tối giản, trong ấn bản này).


Kiểm tra các phông chữ được sử dụng trong tài liệu

DocumentBase.FontInfos (kế thừa bởi Document) trả về một FontInfoCollection mô tả mọi phông chữ được tham chiếu ở bất kỳ đâu trong tài liệu. Truy cập vào nó theo tên (ví dụ fontInfos["Arial"]), kiểm tra sự tồn tại bằng Contains(name), đếm chúng bằng Count, hoặc liệt kê toàn bộ bộ sưu tập qua GetEnumerator().


Thuộc tính và Phân loại Phông chữ

Mỗi FontInfo mô tả một phông chữ: Name và AltName xác định nó, Family phân loại nó qua enum FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch báo cáo FontPitch của nó (Default, Fixed, Variable), và IsTrueType, Charset, và Panose tiết lộ dữ liệu khớp phông chữ cấp thấp hơn.


Trích xuất Phông chữ Nhúng

Nếu một tài liệu có phông chữ được nhúng, FontInfo.GetEmbeddedFont(format, style) trả về các byte phông chữ nhúng thô cho một EmbeddedFontFormat cho trước (EmbeddedOpenType hoặc OpenType) và EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) trả về phông chữ đã được chuyển đổi sang định dạng OpenType trực tiếp, bất kể cách nó được nhúng ban đầu.


Quyền cấp phép nhúng phông chữ

Trước khi trích xuất hoặc nhúng lại một phông chữ, hãy kiểm tra FontInfo.EmbeddingLicensingRights, một đối tượng FontEmbeddingLicensingRights. EmbeddingUsagePermissions báo cáo mức cấp phép thông qua enum FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), trong khi NoSubsetting và BitmapEmbeddingOnly đánh dấu các hạn chế bổ sung do nhà cung cấp phông chữ đặt ra.


Kiểm soát việc nhúng phông chữ khi lưu

FontInfoCollection cũng chứa các công tắc nhúng ở mức tài liệu: đặt EmbedTrueTypeFonts thành true để nhúng mọi phông chữ TrueType được sử dụng trong tài liệu khi lưu, EmbedSystemFonts để bao gồm các phông chữ thường được cho là có sẵn trên bất kỳ hệ thống nào, và SaveSubsetFonts để chỉ nhúng các glyph thực tế được dùng thay vì toàn bộ phông chữ.


Phạm vi FontSettings trong phiên bản này

Document.FontSettings và LoadOptions.FontSettings đều trả về một đối tượng FontSettings, và FontSettings.DefaultInstance công khai một thể hiện mặc định chia sẻ. Trong phiên bản FOSS này, bề mặt FontSettings của API bị giới hạn chỉ ở thuộc tính thể hiện mặc định — việc phân giải nguồn phông chữ dựa trên thư mục và hệ thống, mà ở nơi khác trong Aspose.Words được dùng để thay thế hoặc giải quyết phông chữ cho bố cục và render trang, không có mặt, vì bố cục và render trang nằm ngoài phạm vi của phiên bản này. Xử lý phông chữ ở đây nghĩa là kiểm tra siêu dữ liệu và nhúng, không phải thay thế phông chữ để render.


Mẹo và Thực hành Tốt nhất

  • Luôn kiểm tra FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissions trước khi trích xuất hoặc phân phối lại một phông chữ được nhúng — một số phông chữ chỉ được cấp phép RestrictedLicense hoặc PrintAndPreview.
  • Sử dụng GetEmbeddedFontAsOpenType() khi bạn cần một định dạng đầu ra nhất quán bất kể tài liệu nguồn nhúng phông chữ như thế nào (EmbeddedOpenType so với OpenType).
  • Đặt FontInfoCollection.SaveSubsetFonts thành true để giảm kích thước tệp đầu ra khi nhúng các phông chữ chỉ sử dụng một vài glyph.
  • FontInfoCollection.Contains(name) rẻ hơn so với việc lập chỉ mục và xử lý một truy vấn không thành công (ví dụ fontInfos[name]) khi bạn chỉ cần kiểm tra sự tồn tại của một phông chữ.

Các vấn đề thường gặp

Vấn đềNguyên nhânKhắc phục
GetEmbeddedFont() trả về không có dữ liệu có thể sử dụngPhông chữ được tham chiếu thực tế không được nhúng trong tài liệuKiểm tra cài đặt nhúng của tài liệu trước khi cho rằng dữ liệu phông chữ có sẵn
Lập chỉ mục vào FontInfoCollection theo tên không tìm thấy gìTên phông chữ không khớp chính xác, bao gồm cả chữ hoa/thườngLiệt kê FontInfoCollection với GetEnumerator() để xác nhận chuỗi Name chính xác
Các API thay thế/phân giải phông chữ dự kiến đang thiếuViệc giải quyết nguồn phông chữ dựa trên thư mục và hệ thống chưa được triển khai trong phiên bản FOSS nàyChỉ sử dụng FontInfo/FontInfoCollection cho siêu dữ liệu và nhúng; việc thay thế phông chữ để hiển thị không nằm trong phạm vi của phiên bản này

FAQ

Làm thế nào để tôi liệt kê mọi phông chữ mà một tài liệu tham chiếu?

Liệt kê Document.FontInfos (một FontInfoCollection) thông qua GetEnumerator(), hoặc lập chỉ mục vào nó bằng tên để tra cứu một phông chữ cụ thể (ví dụ fontInfos["Arial"]).

Tôi có thể lấy các byte thô của một phông chữ được nhúng ra khỏi tài liệu không?

Có, nếu phông chữ được nhúng — gọi FontInfo.GetEmbeddedFont(format, style) để lấy định dạng nhúng gốc, hoặc GetEmbeddedFontAsOpenType(style) để chuẩn hoá kết quả thành OpenType.

Làm sao để tôi chắc chắn phông chữ được nhúng khi lưu tài liệu?

Đặt FontInfoCollection.EmbedTrueTypeFonts thành true trước khi lưu; thêm EmbedSystemFonts nếu bạn cũng cần phông chữ được cho là đã có trên mọi hệ thống, và SaveSubsetFonts để chỉ nhúng các glyph đang được sử dụng.

Phiên bản này có hỗ trợ việc giải quyết phông chữ từ thư mục tùy chỉnh để render không?

Không — việc giải quyết nguồn phông chữ dựa trên thư mục và hệ thống (FontSettings cấu hình nguồn) không được triển khai ở đây, vì nó nhằm phục vụ bố cục trang và việc render, những thứ nằm ngoài phạm vi của phiên bản FOSS này.

Ý nghĩa của FontEmbeddingLicensingRights.NoSubsetting là gì?

Đó là một cờ giấy phép được báo cáo bởi quyền nhúng của nhà cung cấp phông chữ: khi true, phông chữ có thể không được cắt giảm chỉ còn các glyph đang được sử dụng.


API Reference Tóm tắt

Lớp / Phương thứcMô tả
FontInfoCollectionPhông chữ được tham chiếu trong tài liệu; bộ chỉ mục theo tên (fontInfos[name]), Contains(), Count, GetEnumerator(), cộng thêm EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts
FontInfoSiêu dữ liệu của một phông chữ: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType()Trích xuất byte phông chữ được nhúng
EmbeddedFontFormat / EmbeddedFontStyleCác enum xác định định dạng và biến thể kiểu của phông chữ được nhúng
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissionsCác hạn chế giấy phép nhúng được báo cáo cho mỗi phông chữ
FontSettingsĐiểm vào thiết lập phông chữ tối thiểu (Document.FontSettings, LoadOptions.FontSettings); không có việc giải quyết nguồn phông chữ trong phiên bản này

Xem thêm

 Tiếng Việt