Перевод азбуки Морзе с помощью Aspose.Font | .NET

Перевод азбуки Морзе с помощью Aspose.Font for.NET

Что такое перевод азбуки Морзе?

Это функциональность, которая позволяет:

ЦельКак это работает
Кодирование обычного текста в глифы азбуки Морзе шрифта (или растрового изображения)IFontMorseEncoder преобразует символы в последовательность символов точки (.) и тире (-) и сопоставляет их с идентификаторами глифов предоставленного IFont.
Декодирование строки, уже содержащей символы Морзе, обратно в читаемый текстIFontMorseDecoder выполняет обратную операцию.
Рендеринг закодированных глифов непосредственно в PNG (или любой растровый формат, поддерживаемый Aspose.Font)Перегрузки, принимающие параметры рендеринга (LineSpacingType, размер изображения и т. д.), создают изображение за вас.

Эта функция была представлена в Aspose.Fontfor.NET23.10 (FONTNET‑602 — поддержка кодировки Морзе).

Зачем его использовать?

Начало работы

1 Установите пакет NuGet

1dotnet add package Aspose.Font

2. Добавьте пространства имен (C#)

1using Aspose.Font;
2using Aspose.Font.TextUtils;
3using Aspose.Font.Renderers;   // for PNG rendering
4using Aspose.Font.Rendering;   // for LineSpacingType

Обзор API

1 Фабрика – точка входа

МетодВозвращаетОписание
TextUtilsFactory.GetFontMorseEncoder()IFontMorseEncoderКодировщик, работающий с экземпляром IFont
TextUtilsFactory.GetMorseEncoder()IMorseEncoderКодировщик, создающий простые строки азбуки Морзе (без шрифта)
TextUtilsFactory.GetFontMorseDecoder()IFontMorseDecoderДекодер, считывающий глифы обратно в текст
TextUtilsFactory.GetMorseDecoder()IMorseDecoderДекодер для простых строк азбуки Морзе

Фабрика находится в Aspose.Font.Factories.TextUtilsFactory (добавлен в версии 23.10).

2 основных интерфейса

IFontMorseEncoder

 1public interface IFontMorseEncoder
 2{
 3    IEnumerable<int> Encode(string text, IFont font,
 4                            char dot = '.', char dash = '-');
 5
 6    IEnumerable<int> Encode(string text, IFont font,
 7                            MorseAlphabets alphabet,
 8                            char dot = '.', char dash = '-');
 9
10    byte[] Encode(string text, IFont font,
11                  double fontSize,
12                  LineSpacingType spacing,
13                  int width, int height,
14                  char dot = '.', char dash = '-');
15
16    byte[] Encode(string text, IFont font,
17                  double fontSize,
18                  LineSpacingType spacing,
19                  int width, int height,
20                  MorseAlphabets alphabet,
21                  char dot = '.', char dash = '-');
22}

IFontMorseDecoder

1public interface IFontMorseDecoder
2{
3    string Decode(string morseText, IFont font,
4                  char dot = '.', char dash = '-');
5
6    string Decode(string morseText, IFont font,
7                  MorseAlphabets alphabet,
8                  char dot = '.', char dash = '-');
9}

IMorseEncoder/IMorseDecoder

Они работают только с необработанными строками (без использования шрифта). Используйте их, когда вам нужны только последовательности «точка-тире».

3. Поддержка перечисления — «MorseAlphabets».

ЗначениеСкрипт
ЛатинскийАнглийский и большинство западных языков
ГреческийГреческие буквы
КириллицаРусский, болгарский и др.
ИвритБуквы иврита
АрабскийАрабская письменность
ПортугальскийСимволы, специфичные для португальского языка
КурдскийКурдские буквы
ПерсидскийПерсидские/фарси буквы

Если вы опустите перечисление, кодировщик попытается выполнить автоматическое обнаружение.

Практические примеры

  1.  Кодировать в идентификаторы глифов
 1// Load any TrueType/OpenType font.
 2IFont font = FontFactory.Open("arial.ttf");
 3
 4// Get the encoder.
 5var encoder = TextUtilsFactory.GetFontMorseEncoder();
 6
 7// Encode “HELLO WORLD”.
 8IEnumerable<int> glyphIds = encoder.Encode(
 9        "HELLO WORLD",
10        font);
11
12Console.WriteLine(string.Join(", ", glyphIds));

Результат: список целочисленных идентификаторов глифов, которые можно передать в пользовательские конвейеры рисования.

  1.  Кодирование и рендеринг PNG
 1double fontSize   = 48;                         // points
 2var spacing       = RenderingUtils.LineSpacingType.Auto;
 3int imgWidth      = 800;
 4int imgHeight     = 200;
 5
 6byte[] pngBytes = encoder.Encode(
 7        "SOS HELP",
 8        font,
 9        fontSize,
10        spacing,
11        imgWidth,
12        imgHeight);
13
14File.WriteAllBytes("morse.png", pngBytes);

PNG визуализирует код Морзе, используя точку (.) и тире (-) по умолчанию. Измените параметры точки/тире для альтернативных символов ('·', '—' и т. д.).

  1.  Декодировать обратно в обычный текст
1var decoder = TextUtilsFactory.GetFontMorseDecoder();
2
3string morse   = "... --- ...";   // classic SOS
4string result  = decoder.Decode(morse, font);
5
6Console.WriteLine(result);        // prints: SOS

Если во время кодирования использовался собственный алфавит, передайте в декодер то же значение MorseAlphabets.

  1.  Полный комплексный пример (консоль C#)
 1using System;
 2using System.IO;
 3using Aspose.Font;
 4using Aspose.Font.TextUtils;
 5using Aspose.Font.Rendering;
 6
 7class Program
 8{
 9    static void Main()
10    {
11        // Load a font.
12        IFont font = FontFactory.Open("CourierNew.ttf");
13
14        // Factories.
15        var factory   = TextUtilsFactory.Instance;
16        var encoder   = factory.GetFontMorseEncoder();
17        var decoder   = factory.GetFontMorseDecoder();
18
19        const string message = "CALL ME AT 5PM";
20
21        // Encode → PNG.
22        byte[] png = encoder.Encode(
23            message,
24            font,
25            fontSize: 36,
26            spacing: RenderingUtils.LineSpacingType.Auto,
27            width: 900,
28            height: 150);
29
30        File.WriteAllBytes("callme.png", png);
31        Console.WriteLine("PNG created.");
32
33        // Encode → glyph IDs.
34        var ids = encoder.Encode(message, font);
35        Console.WriteLine("Glyph IDs: " + string.Join(", ", ids));
36
37        // Decode a plain Morse string.
38        string morse   = "... --- ...";
39        string decoded = decoder.Decode(morse, font);
40        Console.WriteLine($"Decoded '{morse}' → {decoded}");
41    }
42}

Запустите его в любом проекте .NET Core/.NET Framework — единственной внешней зависимостью является Aspose.Font.

Онлайн демо

Aspose предоставляет бесплатную веб-демо, позволяющую опробовать переводчик, ничего не устанавливая:

Особенности демо-версии:

Примечания к выпуску

Aspose.Font для .NET 23.10 Добавлены API: TextUtilsFactory, IFontMorseEncoder, IFontMorseDecoder, IMorseEncoder, IMorseDecoder, перечисление MorseAlphabets. Новая функция: «Поддержка кодирования азбукой Морзе».

Когда использовать какую перегрузку

СитуацияРекомендуемая перегрузка
Для дальнейшей обработки нужны только идентификаторы глифовEncode(string text, IFont font) (или с явным указанием алфавита)
Хотите получить изображение без обработки кода рендерингаEncode(string text, IFont font, double size, LineSpacingType spacing, int w, int h)
Пользовательские символы точки/тире (например, символы Unicode «·» и «—»)Используйте перегрузки, принимающие char dot и char dash
В исходном языке используется нелатинский алфавит, и автоматическое определение завершается неудачейПередайте соответствующее значение MorseAlphabets явно

Резюме

Aspose.Font теперь включает в себя полный механизм перевода азбуки Морзе, который работает как на уровне, так и на растровом изображении. Используя простые фабричные методы, вы можете мгновенно начать кодирование, декодирование и рендеринг любого текста в десятках алфавитов, не создавая собственных таблиц сопоставления и не занимаясь низкоуровневым рендерингом.

Независимо от того, строите ли вы:

API дает вам полный контроль, сохраняя при этом чистоту кода, кроссплатформенность и полную поддержку.

Have any questions about Aspose.Font?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.