Traducción de código Morse con Aspose.Font | .NET

Traducción de código Morse con Aspose.Font para.NET

¿Qué es la traducción al código Morse?

Esta es una funcionalidad que le permite:

ObjetivoCómo funciona
Codificar texto plano en glifos de código Morse de una fuente (o una imagen de mapa de bits)IFontMorseEncoder convierte caracteres en una secuencia de símbolos de punto (.) y guión (-) y los asigna a los identificadores de glifo del IFont proporcionado.
Decodificar una cadena Morse para obtener texto legibleIMorseDecoder devuelve texto sin formato; IFontMorseDecoder devuelve identificadores de glifos o un flujo PNG con una fuente proporcionada.
Renderizar texto como código Morse en formato PNGLas sobrecargas de renderizado aceptan una fuente, su tamaño, el interlineado y el ancho máximo, y devuelven un flujo PNG.

La característica se introdujo en Aspose.Fontfor.NET23.10 (FONTNET‑602 – Compatibilidad con codificación de código Morse).

¿Por qué usarlo?

Empezando

1 Instale el paquete NuGet

1dotnet add package Aspose.Font

2 Agregar espacios de nombres (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;

Descripción general de la API

1 Fábrica – punto de entrada

Cree una instancia de TextUtilsFactory con new TextUtilsFactory() y llame a sus métodos de instancia:

MétodoDevuelveDescripción
GetFontMorseEncoder()IFontMorseEncoderCodifica texto como identificadores de glifos o un flujo PNG con una fuente proporcionada
GetMorseEncoder()IMorseEncoderCodifica texto como una cadena Morse sin utilizar una fuente
GetFontMorseDecoder()IFontMorseDecoderDecodifica Morse como identificadores de glifos o un flujo PNG con una fuente proporcionada
GetMorseDecoder()IMorseDecoderDecodifica una cadena Morse a texto sin formato sin utilizar una fuente

La fábrica vive en Aspose.Font.Factories.TextUtilsFactory (agregado en 23.10).

2 interfaces principales

IFontMorseEncoder

Las sobrecargas de glifos devuelven GlyphId[]. Las sobrecargas de renderizado devuelven un Stream PNG que debe liberarse después de copiarlo o consumirlo.

ResultadoParámetros
GlyphId[]Texto y una instancia de IFont, con detección automática del alfabeto o un valor explícito de MorseAlphabets
PNG StreamTexto, una instancia de IFont, fontSize, RenderingUtils.LineSpacingType, lineSpacingValue y maxWidth; otra sobrecarga permite indicar el alfabeto explícitamente

LineSpacingType admite Pixels y PercentOfFontHeight. El renderizador calcula la altura de la imagen; no hay un parámetro de altura fija.

Los caracteres opcionales inputSeparator y outputSeparator delimitan palabras. Al codificar, sus valores predeterminados son un espacio y /, respectivamente. No sustituyen los símbolos de punto y raya de Morse.

IFontMorseDecodificador

IFontMorseDecoder acepta una cadena Morse, una fuente y un valor explícito de MorseAlphabets. Devuelve GlyphId[] para el texto decodificado o un Stream PNG si se proporcionan parámetros de renderizado. No devuelve texto sin formato.

Utilice IMorseDecoder para obtener un string decodificado sin cargar una fuente. Al decodificar, inputSeparator es / de forma predeterminada y outputSeparator es un espacio.

IMorseEncoder/IMorseDecoder

Estos funcionan solo con cadenas sin formato (sin fuentes involucradas). Úsalos cuando solo necesites secuencias de “puntos y rayas”.

3 Enumera de soporte: MorseAlphabets

ValorEscritura
LatínInglés y la mayoría de los idiomas occidentales
GriegoLetras griegas
CirílicoRuso, búlgaro, etc.
HebreoLetras hebreas
ÁrabeEscritura árabe
PortuguésSímbolos específicos del portugués
KurdoLetras kurdas
PersaLetras persas/farsi

Si omite la enumeración, el codificador intenta la detección automática.

Ejemplos prácticos

Los ejemplos que utilizan fuentes emplean TTF/LatoWeb-Regular.ttf. Establezca DataDir en el directorio que contiene la carpeta TTF y OutputDir en un directorio de salida existente. La decodificación a texto sin formato no requiere una fuente.

  1.  Codificar en ID de glifos
 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())));

Resultado: Una matriz de objetos GlyphId que representan los símbolos Morse y pueden utilizarse en procesos de dibujo personalizados.

  1.  Codificar y renderizar un PNG

Este fragmento reutiliza font y encoder del ejemplo anterior. Guarda morse.png en 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}

El PNG representa el código Morse con los glifos de punto (.) y raya (-) de la fuente. Los parámetros de caracteres controlan los separadores de palabras, no símbolos alternativos de punto y raya.

  1.  Decodificar de nuevo a texto sin formato
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

Cuando se utilizó un alfabeto personalizado durante la codificación, pase el mismo valor “MorseAlphabets” al decodificador.

  1. Ejemplo combinado (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}");

El ejemplo combinado guarda callme.png en OutputDir, muestra los identificadores de glifos codificados y decodifica ... --- ... como SOS. Utilice los espacios de nombres y la configuración de directorios indicados anteriormente.

Demostración en línea

Aspose proporciona una demostración web gratuita para probar el traductor sin instalar nada:

Características de la demostración:

Notas de la versión

Aspose.Font para .NET 23.10 API añadidas: TextUtilsFactory, IFontMorseEncoder, IFontMorseDecoder, IMorseEncoder, IMorseDecoder, enumeración MorseAlphabets. Nueva función: “Compatibilidad con codificación de código Morse”.

Cuándo usar qué sobrecarga

SituaciónSobrecarga recomendada
Solo se necesitan identificadores de glifo para el procesamiento posteriorEncode(string text, IFont font) (o con alfabeto explícito)
Obtener un flujo PNG sin gestionar el código de renderizadoUtilice la sobrecarga con fontSize, lineSpacingType, lineSpacingValue y maxWidth
Separadores de palabras personalizadosEstablezca inputSeparator y outputSeparator; estos parámetros no cambian los símbolos de punto y raya
El idioma de origen usa una escritura no latina y la detección automática fallaPasar el valor MorseAlphabets apropiado explícitamente

Resumen

Aspose.Font ahora incluye un motor completo de traducción de código Morse que opera tanto en el nivel de glifo como en el nivel de mapa de bits. Utilizando los métodos simples de fábrica, puede comenzar instantáneamente a codificar, decodificar y renderizar texto en los alfabetos compatibles sin escribir sus propias tablas de mapeo ni lidiar con renderizado de bajo nivel.

Ya sea que esté construyendo:

la API le brinda control total mientras mantiene el código limpio, multiplataforma y totalmente compatible.