Переклад азбуки Морзе за допомогою Aspose.Font | .NET

Переклад азбуки Морзе за допомогою Aspose.Font для .NET

Що таке переклад азбуки Морзе?

Це функція, яка дозволяє:

GoalHow it works
Encode plain‑text into Morse‑code glyphs of a font (or a bitmap image)IFontMorseEncoder converts characters to a sequence of dot (.) and dash (-) symbols and maps them to glyph identifiers of the supplied IFont.
Decode a string that already contains Morse symbols back into readable textIFontMorseDecoder performs the reverse operation.
Render the encoded glyphs directly to PNG (or any raster format supported by Aspose.Font)Overloads that accept rendering parameters (LineSpacingType, image size, etc.) create the image for you.

Цю функцію було представлено в 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.Factory.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 Підтримка переліку – Алфавіти Морзе

ЗначенняСкрипт
LatinАнглійська та більшість західних мов
GreekГрецькі літери
CyrillicРосійська, болгарська тощо
HebrewЛітери єврейської мови
ArabicАрабська абетка
PortugueseСпецифічні символи португальської мови
KurdishКурдські літери
PersianЛітери перської/фарсі

Якщо ви опустите перелік, кодер намагатиметься автоматично виявити.

Практичні приклади

  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 для .NET23.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.