Переклад азбуки Морзе за допомогою Aspose.Font | .NET
Переклад азбуки Морзе за допомогою Aspose.Font для .NET
Що таке переклад азбуки Морзе?
Це функція, яка дозволяє:
| Goal | How 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 text | IFontMorseDecoder 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 – підтримка кодування азбукою Морзе).
Навіщо це використовувати?
- Рішення Pure-C# – без зовнішніх бібліотек і залежностей на рівні ОС.
- Працює з будь-яким шрифтом, який містить необхідні гліфи (TrueType, OpenType, CFF …).
- Вбудована евристика автоматично вибирає правильний алфавіт (латиниця, грецька, кирилиця тощо), якщо ви його пропускаєте.
- Текст → ідентифікатори гліфів (корисно для користувацьких конвеєрів візуалізації) та ідентифікатори гліфів → PNG доступні з коробки.
- Повністю охоплено підтримкою Aspose (форуми, документи, живі демонстрації).
Початок роботи
1 Встановіть пакет NuGet
1dotnet add package Aspose.Font2 Додайте простори імен (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// 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));Результат: список ідентифікаторів цілочисельних гліфів, які можна передати в спеціальні конвеєри малювання.
- Кодуйте та візуалізуйте 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 візуалізує азбуку Морзе за допомогою стандартної крапки (.) і тире (-). Змініть параметри крапка/тире для альтернативних символів ('·', '—' тощо).
- Розкодуйте назад до звичайного тексту
1var decoder = TextUtilsFactory.GetFontMorseDecoder();
2
3string morse = "... --- ..."; // classic SOS
4string result = decoder.Decode(morse, font);
5
6Console.WriteLine(result); // prints: SOSЯкщо під час кодування використовувався спеціальний алфавіт, передайте те саме значення MorseAlphabets у декодер.
- Повний наскрізний зразок (консоль 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 надає безкоштовну веб-демоверсію, щоб спробувати перекладач, не встановлюючи нічого:
Особливості демо:
- Текст ↔︎ Морзе ↔︎ Візуалізація гліфів
- Виберіть власні символи з крапкою та тире
- Завантажте згенерований PNG або перегляньте ідентифікатори гліфів
Примітки до випуску
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 дає вам повний контроль, зберігаючи код чистим, кросплатформним і повністю підтримуваним.