Перевод азбуки Морзе с помощью Aspose.Font | .NET
Перевод азбуки Морзе с помощью Aspose.Font for.NET
Что такое перевод азбуки Морзе?
Это функциональность, которая позволяет:
| Цель | Как это работает |
|---|---|
| Кодирование обычного текста в глифы азбуки Морзе шрифта (или растрового изображения) | IFontMorseEncoder преобразует символы в последовательность символов точки (.) и тире (-) и сопоставляет их с идентификаторами глифов предоставленного IFont. |
| Декодирование строки, уже содержащей символы Морзе, обратно в читаемый текст | IFontMorseDecoder выполняет обратную операцию. |
| Рендеринг закодированных глифов непосредственно в PNG (или любой растровый формат, поддерживаемый Aspose.Font) | Перегрузки, принимающие параметры рендеринга (LineSpacingType, размер изображения и т. д.), создают изображение за вас. |
Эта функция была представлена в Aspose.Fontfor.NET23.10 (FONTNET‑602 — поддержка кодировки Морзе).
Зачем его использовать?
- Решение на чистом 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.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// 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 для .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 дает вам полный контроль, сохраняя при этом чистоту кода, кроссплатформенность и полную поддержку.