Проверьте поддержку латинских символов для шрифтов TrueType или Type1 в C#

Символ латинского символа — это символ в виде метки, знака или слова. Шрифт определяет, как знаки/символы должны отображаться в цифровом виде или в печатной форме с использованием набора свойств. Файл шрифта содержит дизайн и другую информацию о шрифте. В некоторых случаях нам может потребоваться проверить, поддерживает ли какой-либо конкретный шрифт латинские символы или нет. В этой статье мы узнаем, как проверить поддержку латинских символов для шрифтов TrueType или Type1 в C#.

В этой статье должны быть раскрыты следующие темы:

  1. API C# для обнаружения поддержки латинских символов в шрифтах
  2. Обнаружение латинских символов в шрифтах TrueType с помощью C#
  3. Обнаружение латинских символов в шрифтах Type1 с помощью C#

C# API для обнаружения поддержки латинских символов в шрифтах

Для обнаружения поддержки латинских символов в шрифтах мы будем использовать API Aspose.Font for .NET. Он позволяет загружать, сохранять и извлекать информацию из поддерживаемых типов шрифтов. Пожалуйста, загрузите DLL API или установите его с помощью NuGet.

PM> Install-Package Aspose.Font

Обнаружение латинских символов в шрифтах TrueType с помощью C#

Мы можем обнаружить латинские символы в шрифтах TrueType, выполнив следующие действия:

  1. Во-первых, загрузите файл шрифта с помощью класса FontFileDefinition.
  2. Затем инициализируйте объект класса FontDefinition с FontType (TTF) и объектом FontFileDefinition в качестве аргументов.
  3. Затем вызовите метод Font.Open() с объектом FontDefinition в качестве аргумента и инициализируйте объект класса TtfFont.
  4. После этого прокрутите различные коды и декодируйте их в идентификаторы Glyph.
  5. Наконец, проверьте идентификаторы глифов на предмет поддержки латинских символов.

В следующем примере кода показано, как определить, поддерживает ли конкретный шрифт TrueType латинские символы или нет в C#.

// В этом примере кода показано, как определить, поддерживает ли определенный шрифт TrueType латинские символы или нет.
// Путь к TTF-файлу
string fontPath = @"D:\Files\font\Montserrat-Regular.ttf";

// Загрузите файл шрифта
FontFileDefinition fontFileDefinition = new FontFileDefinition("ttf", new FileSystemStreamSource(fontPath));

// Объект определения шрифта
FontDefinition fd = new FontDefinition(FontType.TTF, fontFileDefinition);

// Откройте шрифт
TtfFont font = (TtfFont)Font.Open(fd);

var latinText = true;

// Проверить наличие поддержки латинских символов
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);
}

Обнаружение латинских символов в шрифтах Type1 с помощью C#

Мы также можем обнаружить латинские символы в шрифтах Type1, выполнив следующие шаги:

  1. Во-первых, загрузите файл шрифта с помощью класса FontFileDefinition.
  2. Затем инициализируйте объект класса FontDefinition с FontType (Type1) и объектом FontFileDefinition в качестве аргументов.
  3. Затем вызовите метод Font.Open() с объектом FontDefinition в качестве аргумента и инициализируйте объект класса Type1Font.
  4. После этого прокрутите различные коды и декодируйте их в идентификаторы Glyph.
  5. Наконец, проверьте идентификаторы глифов на предмет поддержки латинских символов.

В следующем примере кода показано, как определить, поддерживает ли конкретный шрифт Type1 латинские символы или нет в C#.

// В этом примере кода показано, как определить, поддерживает ли конкретный шрифт Type1 латинские символы или нет.
// Путь к файлу шрифта Type1
string fontPath = @"D:\Files\font\courier.pfb";

// Загрузите файл шрифта
FontFileDefinition fontFileDefinition = new FontFileDefinition("pfb", new FileSystemStreamSource(fontPath));

// Объект определения шрифта
FontDefinition fd = new FontDefinition(FontType.Type1, fontFileDefinition);

// Откройте шрифт
Type1Font font = (Type1Font)Font.Open(fd);

var latinText = true;

// Проверить наличие поддержки латинских символов
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);
}

Получить бесплатную лицензию

Вы можете получить бесплатную временную лицензию, чтобы попробовать библиотеку без ограничений пробной версии.

Вывод

В этой статье мы узнали, как определить, поддерживает ли какой-либо конкретный шрифт TrueType или Type1 латинские символы или нет в C#. Кроме того, вы можете узнать больше об Aspose.Font for .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

Смотрите также