Kiểm tra Hỗ trợ Ký hiệu Latinh cho Phông chữ TrueType hoặc Type1 trong C#

Ký hiệu ký tự Latinh là một ký tự ở dạng dấu, ký hiệu hoặc từ. Phông chữ xác định cách các ký tự / ký hiệu được hiển thị dưới dạng kỹ thuật số hoặc ở dạng có thể in được bằng cách sử dụng một tập hợp các thuộc tính. Tệp phông chữ chứa thiết kế và các thông tin khác liên quan đến phông chữ. Trong một số trường hợp nhất định, chúng tôi có thể cần kiểm tra xem có bất kỳ phông chữ cụ thể nào hỗ trợ các ký hiệu Latinh hay không. Trong bài viết này, chúng ta sẽ tìm hiểu cách kiểm tra sự hỗ trợ của các ký hiệu Latinh đối với phông chữ TrueType hoặc Type1 trong C#.

Các chủ đề sau sẽ được đề cập trong bài viết này:

  1. API C# để phát hiện hỗ trợ ký hiệu Latinh trong phông chữ
  2. Phát hiện các ký hiệu Latinh trong Phông chữ TrueType bằng C#
  3. Phát hiện các ký hiệu Latinh trong Phông chữ Loại 1 bằng C#

API C# để phát hiện Hỗ trợ ký hiệu Latinh trong Phông chữ

Để phát hiện hỗ trợ các ký hiệu Latinh trong phông chữ, chúng tôi sẽ sử dụng API Aspose.Font for .NET. Nó cho phép tải, lưu và trích xuất thông tin từ các loại phông chữ được hỗ trợ. Vui lòng tải xuống DLL của API hoặc cài đặt nó bằng NuGet.

PM> Install-Package Aspose.Font

Phát hiện các ký hiệu Latinh trong Phông chữ TrueType bằng C#

Chúng tôi có thể phát hiện các ký hiệu Latinh trong phông chữ TrueType bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tải tệp phông chữ bằng cách sử dụng lớp FontFileDefinition.
  2. Tiếp theo, khởi tạo đối tượng lớp FontDefinition với FontType(TTF) và đối tượng FontFileDefinition làm đối số.
  3. Sau đó, gọi phương thức Font.Open() với đối tượng FontDefinition làm đối số và khởi tạo đối tượng lớp TtfFont.
  4. Sau đó, lặp qua các mã khác nhau và giải mã chúng thành các ID Glyph.
  5. Cuối cùng, hãy kiểm tra các ID glyph để biết sự hỗ trợ của các ký hiệu Latinh.

Mẫu mã sau đây cho biết cách phát hiện xem một phông chữ TrueType cụ thể có hỗ trợ các ký hiệu Latinh hay không trong C#.

// Ví dụ mã này trình bày cách phát hiện xem một phông chữ TrueType cụ thể có hỗ trợ các ký hiệu Latinh hay không.
// Đường dẫn tệp TTF
string fontPath = @"D:\Files\font\Montserrat-Regular.ttf";

// Tải tệp phông chữ
FontFileDefinition fontFileDefinition = new FontFileDefinition("ttf", new FileSystemStreamSource(fontPath));

// Đối tượng định nghĩa phông chữ
FontDefinition fd = new FontDefinition(FontType.TTF, fontFileDefinition);

// Mở phông chữ
TtfFont font = (TtfFont)Font.Open(fd);

var latinText = true;

// Kiểm tra sự hỗ trợ của các ký hiệu latin
for (uint code = 65; code < 123; code++)
{
    GlyphId gid = font.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine("Font {0} supports latin symbols.", font.FontName);
}
else
{
    Console.WriteLine("Latin symbols are not supported by font {0}.", font.FontName);
}

Phát hiện các ký hiệu Latinh trong Phông chữ Type1 bằng C#

Chúng tôi cũng có thể phát hiện các ký hiệu Latinh trong phông chữ Type1 bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tải tệp phông chữ bằng cách sử dụng lớp FontFileDefinition.
  2. Tiếp theo, khởi tạo đối tượng lớp FontDefinition với FontType(Type1) và đối tượng FontFileDefinition làm đối số.
  3. Sau đó, gọi phương thức Font.Open() với đối tượng FontDefinition làm đối số và khởi tạo đối tượng lớp Type1Font.
  4. Sau đó, lặp qua các mã khác nhau và giải mã chúng thành các ID Glyph.
  5. Cuối cùng, hãy kiểm tra các ID glyph để biết sự hỗ trợ của các ký hiệu Latinh.

Mẫu mã sau đây cho biết cách phát hiện xem một phông chữ Type1 cụ thể có hỗ trợ các ký hiệu Latinh hay không trong C#.

// Ví dụ mã này trình bày cách phát hiện xem một phông chữ Type1 cụ thể có hỗ trợ các ký hiệu Latinh hay không.
// Đường dẫn tệp phông chữ Type1
string fontPath = @"D:\Files\font\courier.pfb";

// Tải tệp phông chữ
FontFileDefinition fontFileDefinition = new FontFileDefinition("pfb", new FileSystemStreamSource(fontPath));

// Đối tượng định nghĩa phông chữ
FontDefinition fd = new FontDefinition(FontType.Type1, fontFileDefinition);

// Mở phông chữ
Type1Font font = (Type1Font)Font.Open(fd);

var latinText = true;

// Kiểm tra sự hỗ trợ của các ký hiệu latin
for (uint code = 65; code < 123; code++)
{
    GlyphId gid = font.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine("Font {0} supports latin symbols.", font.FontName);
}
else
{
    Console.WriteLine("Latin symbols are not supported by font {0}.", font.FontName);
}

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử thư viện mà không có giới hạn đánh giá.

Sự kết luận

Trong bài viết này, chúng ta đã học cách xác định xem có bất kỳ phông chữ TrueType hoặc Type1 cụ thể nào hỗ trợ các ký hiệu Latinh hay không trong C#. Bên cạnh đó, bạn có thể tìm hiểu thêm về Aspose.Font cho .NET API bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm