Переклад азбуки Морзе за допомогою 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. |
| Декодування рядка Морзе в читабельний текст | IMorseDecoder повертає звичайний текст; IFontMorseDecoder повертає ідентифікатори гліфів або потік PNG, використовуючи заданий шрифт. |
| Візуалізація тексту як коду Морзе у форматі PNG | Перевантаження візуалізації приймають шрифт, його розмір, міжрядковий інтервал і максимальну ширину та повертають потік PNG. |
Цю функцію було представлено в Aspose.Fontfor.NET23.10 (FONTNET‑602 – підтримка кодування азбукою Морзе).
Навіщо це використовувати?
- Рішення Pure-C# – без зовнішніх бібліотек і залежностей на рівні ОС.
- Працює з будь-яким шрифтом, який містить необхідні гліфи (TrueType, OpenType, CFF …).
- Вбудована евристика автоматично вибирає правильний алфавіт (латиниця, грецька, кирилиця тощо), якщо ви його пропускаєте.
- Доступні перетворення текст → ідентифікатори гліфів (для власних конвеєрів візуалізації) і текст → PNG із кодом Морзе.
- Повністю охоплено підтримкою Aspose (форуми, документи, живі демонстрації).
Початок роботи
1 Встановіть пакет NuGet
1dotnet add package Aspose.Font2 Додайте простори імен (C#)
1using System;
2using System.IO;
3using System.Linq;
4using Aspose.Font;
5using Aspose.Font.Factories;
6using Aspose.Font.Glyphs;
7using Aspose.Font.Renderers;
8using Aspose.Font.Sources;
9using Aspose.Font.TextUtils;Огляд API
1 Завод – точка входу
Створіть екземпляр TextUtilsFactory за допомогою new TextUtilsFactory(), а потім викликайте його методи:
| Метод | Повертає | Опис |
|---|---|---|
GetFontMorseEncoder() | IFontMorseEncoder | Кодує текст в ідентифікатори гліфів або потік PNG, використовуючи заданий шрифт |
GetMorseEncoder() | IMorseEncoder | Кодує текст у рядок Морзе без шрифту |
GetFontMorseDecoder() | IFontMorseDecoder | Декодує код Морзе в ідентифікатори гліфів або потік PNG, використовуючи заданий шрифт |
GetMorseDecoder() | IMorseDecoder | Декодує рядок Морзе у звичайний текст без шрифту |
Фабрика живе в Aspose.Font.Factories.TextUtilsFactory (додано в 23.10).
2 основні інтерфейси
IFontMorseEncoder
Перевантаження для гліфів повертають GlyphId[]. Перевантаження візуалізації повертають потік PNG типу Stream, який код виклику має звільнити після копіювання або обробки.
| Результат | Параметри |
|---|---|
GlyphId[] | Текст та IFont з автоматичним визначенням алфавіту або явним значенням MorseAlphabets |
PNG Stream | Текст, IFont, fontSize, RenderingUtils.LineSpacingType, lineSpacingValue і maxWidth; окреме перевантаження дає змогу явно задати алфавіт |
LineSpacingType підтримує Pixels і PercentOfFontHeight. Засіб візуалізації обчислює висоту зображення; параметра фіксованої висоти немає.
Необов’язкові символи inputSeparator і outputSeparator розділяють слова. Під час кодування їхні типові значення — пробіл і / відповідно. Вони не замінюють крапки й тире в коді Морзе.
IFontMorseDecoder
IFontMorseDecoder приймає рядок Морзе, шрифт і явне значення MorseAlphabets. Він повертає GlyphId[] для декодованого тексту або потік PNG типу Stream, якщо задано параметри візуалізації. Звичайний текст він не повертає.
Використовуйте IMorseDecoder, щоб отримати декодований рядок string без завантаження шрифту. Під час декодування inputSeparator типово дорівнює /, а outputSeparator — пробілу.
IMorseEncoder / IMorseDecoder
Вони працюють лише з необробленими рядками (без використання шрифтів). Використовуйте їх, коли вам потрібні лише послідовності «крапка-тире».
3 Підтримка переліку – Алфавіти Морзе
| Значення | Скрипт |
|---|---|
Latin | Англійська та більшість західних мов |
Greek | Грецькі літери |
Cyrillic | Російська, болгарська тощо |
Hebrew | Літери єврейської мови |
Arabic | Арабська абетка |
Portuguese | Специфічні символи португальської мови |
Kurdish | Курдські літери |
Persian | Літери перської/фарсі |
Якщо ви опустите перелік, кодер намагатиметься автоматично виявити.
Практичні приклади
Приклади зі шрифтом використовують TTF/LatoWeb-Regular.ttf. Укажіть у DataDir каталог із папкою TTF, а в OutputDir — наявний вихідний каталог. Для декодування у звичайний текст шрифт не потрібен.
- Кодувати в ідентифікатори гліфів
1// Encode text as Morse-code glyph identifiers
2
3// Load a font containing the Morse-code symbols.
4string fontPath = Path.Combine(DataDir, "TTF", "LatoWeb-Regular.ttf");
5Font font = Font.Open(new FontDefinition(
6 FontType.TTF, "ttf", new FileSystemStreamSource(fontPath)));
7
8// Create the factory and get the font encoder.
9var factory = new TextUtilsFactory();
10IFontMorseEncoder encoder = factory.GetFontMorseEncoder();
11
12// Encode HELLO WORLD using automatic alphabet detection.
13GlyphId[] glyphIds = encoder.Encode("HELLO WORLD", font);
14Console.WriteLine(string.Join(", ", glyphIds.Select(id => id.ToString())));Результат: масив об’єктів GlyphId, що представляють символи Морзе та придатні для власних конвеєрів малювання.
- Кодуйте та візуалізуйте PNG
Цей фрагмент використовує font і encoder із попереднього прикладу. Він зберігає morse.png у OutputDir.
1// Encode text as Morse code and save a PNG
2
3double fontSize = 48;
4var spacing = RenderingUtils.LineSpacingType.Pixels;
5int lineSpacing = 10;
6int maxWidth = 800;
7
8// The renderer returns a stream and determines the image height.
9using (Stream pngStream = encoder.Encode(
10 "SOS HELP", font, fontSize, spacing, lineSpacing, maxWidth))
11{
12 if (pngStream.CanSeek)
13 pngStream.Position = 0;
14
15 using (FileStream output = File.Create(Path.Combine(OutputDir, "morse.png")))
16 {
17 pngStream.CopyTo(output);
18 }
19}PNG відображає код Морзе за допомогою гліфів крапки (.) і тире (-) зі шрифту. Символьні параметри керують роздільниками слів, а не альтернативними символами крапки й тире.
- Розкодуйте назад до звичайного тексту
1// Decode a Morse-code string to plain text
2
3// Plain-text decoding does not require a font.
4IMorseDecoder decoder = new TextUtilsFactory().GetMorseDecoder();
5string morse = "... --- ...";
6string result = decoder.Decode(morse, MorseAlphabets.Latin);
7Console.WriteLine(result); // SOSЯкщо під час кодування використовувався спеціальний алфавіт, передайте те саме значення MorseAlphabets у декодер.
- Об’єднаний приклад (C#)
1// Render Morse code, obtain glyph identifiers and decode a message
2
3// Load a font.
4string fontPath = Path.Combine(DataDir, "TTF", "LatoWeb-Regular.ttf");
5Font font = Font.Open(new FontDefinition(
6 FontType.TTF, "ttf", new FileSystemStreamSource(fontPath)));
7
8var factory = new TextUtilsFactory();
9IFontMorseEncoder encoder = factory.GetFontMorseEncoder();
10IMorseDecoder decoder = factory.GetMorseDecoder();
11const string message = "CALL ME AT 5PM";
12
13// Encode to PNG. Height is calculated by the renderer.
14using (Stream pngStream = encoder.Encode(
15 message, font,
16 fontSize: 36,
17 lineSpacingType: RenderingUtils.LineSpacingType.Pixels,
18 lineSpacingValue: 10,
19 maxWidth: 900))
20{
21 if (pngStream.CanSeek)
22 pngStream.Position = 0;
23
24 using (FileStream output = File.Create(Path.Combine(OutputDir, "callme.png")))
25 {
26 pngStream.CopyTo(output);
27 }
28}
29Console.WriteLine("PNG created.");
30
31// Encode to glyph identifiers.
32GlyphId[] ids = encoder.Encode(message, font);
33Console.WriteLine("Glyph IDs: " + string.Join(", ", ids.Select(id => id.ToString())));
34
35// Decode a plain Morse string.
36string morse = "... --- ...";
37string decoded = decoder.Decode(morse, MorseAlphabets.Latin);
38Console.WriteLine($"Decoded '{morse}' -> {decoded}");Об’єднаний приклад зберігає callme.png у OutputDir, виводить ідентифікатори закодованих гліфів і декодує ... --- ... у SOS. Використовуйте простори імен і налаштування каталогів, указані вище.
Онлайн демо
Aspose надає безкоштовну веб-демоверсію, щоб спробувати перекладач, не встановлюючи нічого:
Особливості демо:
- Текст ↔︎ Морзе ↔︎ Візуалізація гліфів
- Виберіть власні символи з крапкою та тире
- Завантажте згенерований PNG або перегляньте ідентифікатори гліфів
Примітки до випуску
Aspose.Font для .NET23.10 Додано API:
TextUtilsFactory,IFontMorseEncoder,IFontMorseDecoder,IMorseEncoder,IMorseDecoder, перерахуванняMorseAlphabets. Нова функція: «Підтримка кодування азбуки Морзе».
Коли використовувати яке перевантаження
| Ситуація | Рекомендоване перевантаження |
|---|---|
| Потрібні лише ідентифікатори гліфів для подальшої обробки | Encode(string text, IFont font) (або з явним алфавітом) |
| Отримати потік PNG без власного коду візуалізації | Використовуйте перевантаження з fontSize, lineSpacingType, lineSpacingValue і maxWidth |
| Власні роздільники слів | Задайте inputSeparator і outputSeparator; ці параметри не змінюють символи крапки й тире |
| Мова оригіналу використовує нелатинську абетку, і автоматичне виявлення не вдається | Явно передайте відповідне значення MorseAlphabets |
Резюме
Aspose.Font тепер містить повний механізм перекладу коду Морзе, який працює як на рівні гліфів, так і на рівні растрового зображення. Використовуючи прості фабричні методи, ви можете миттєво розпочати кодування, декодування та візуалізацію тексту підтримуваними алфавітами, не створюючи власних таблиць відображення чи не маючи справу з низькорівневим рендерингом.
Незалежно від того, чи будуєте ви:
- Спеціальний компонент візуалізації сигналу
- Навчальний інструмент для навчання комунікації Морзе
- Етап обфускації даних, який зберігає інформацію у вигляді стилізованих шрифтів
API дає вам повний контроль, зберігаючи код чистим, кросплатформним і повністю підтримуваним.