Tradução de código Morse com Aspose.Font | .NET

Tradução de código Morse com Aspose.Font for.NET

O que é tradução em Código Morse?

Esta é uma funcionalidade que permite:

ObjectivoComo funciona
Codificar texto simples em glifos de código Morse de uma fonte (ou de uma imagem bitmap)IFontMorseEncoder converte os caracteres numa sequência de símbolos de ponto (.) e traço (-) e mapeia-os para identificadores de glifos da IFont fornecida.
Decodificar uma sequência Morse em texto legívelIMorseDecoder retorna texto simples; IFontMorseDecoder retorna identificadores de glifos ou um fluxo PNG usando uma fonte fornecida.
Renderizar texto como código Morse no formato PNGAs sobrecargas de renderização aceitam uma fonte, seu tamanho, o espaçamento entre linhas e a largura máxima e retornam um fluxo PNG.

O recurso foi introduzido em Aspose.Fontfor.NET23.10 (FONTNET‑602 – Suporte para codificação de código Morse).

Por que usá-lo?

Primeiros passos

1 Instale o pacote NuGet

1dotnet add package Aspose.Font

2 Adicionar namespaces (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;

Visão geral da API

1 Fábrica – ponto de entrada

Crie uma instância de TextUtilsFactory com new TextUtilsFactory() e chame seus métodos de instância:

MétodoRetornaDescrição
GetFontMorseEncoder()IFontMorseEncoderCodifica texto como identificadores de glifos ou um fluxo PNG usando uma fonte fornecida
GetMorseEncoder()IMorseEncoderCodifica texto como uma sequência Morse sem fonte
GetFontMorseDecoder()IFontMorseDecoderDecodifica Morse como identificadores de glifos ou um fluxo PNG usando uma fonte fornecida
GetMorseDecoder()IMorseDecoderDecodifica uma sequência Morse em texto simples sem fonte

A fábrica reside em Aspose.Font.Factories.TextUtilsFactory (adicionado em 23.10).

2 interfaces principais

IFontMorseEncoder

As sobrecargas de glifos retornam GlyphId[]. As sobrecargas de renderização retornam um Stream PNG que deve ser liberado após ser copiado ou consumido.

ResultadoParâmetros
GlyphId[]Texto e uma instância de IFont, com detecção automática do alfabeto ou um valor explícito de MorseAlphabets
PNG StreamTexto, uma instância de IFont, fontSize, RenderingUtils.LineSpacingType, lineSpacingValue e maxWidth; outra sobrecarga permite especificar o alfabeto

LineSpacingType aceita Pixels e PercentOfFontHeight. O renderizador calcula a altura da imagem; não há parâmetro de altura fixa.

Os caracteres opcionais inputSeparator e outputSeparator delimitam palavras. Na codificação, seus valores padrão são um espaço e /, respectivamente. Eles não substituem os símbolos de ponto e traço do Morse.

IFontMorseDecoder

IFontMorseDecoder aceita uma sequência Morse, uma fonte e um valor explícito de MorseAlphabets. Retorna GlyphId[] para o texto decodificado ou um Stream PNG quando são fornecidos parâmetros de renderização. Não retorna texto simples.

Use IMorseDecoder para obter uma string decodificada sem carregar uma fonte. Na decodificação, inputSeparator é / por padrão e outputSeparator é um espaço.

IMorseEncoder/IMorseDecoder

Eles funcionam apenas com strings brutas (sem fonte envolvida). Use-os quando precisar apenas de sequências de “ponto e traço”.

3 Enum de suporte – MorseAlphabets

ValorGuião
LatimInglês e a maioria das línguas ocidentais
GregoLetras gregas
CirílicoRusso, búlgaro, etc.
HebraicoLetras hebraicas
ÁrabeAlfabeto árabe
PortuguêsSímbolos específicos do português
CurdoLetras curdas
PersaLetras persas/farsi

Se você omitir a enumeração, o codificador tentará a detecção automática.

Exemplos práticos

Os exemplos que usam fontes utilizam TTF/LatoWeb-Regular.ttf. Defina DataDir como o diretório que contém a pasta TTF e OutputDir como um diretório de saída existente. A decodificação em texto simples não requer uma fonte.

  1.  Codificar para IDs de glifo
 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: um array de objetos GlyphId que representam os símbolos Morse, adequado para pipelines de desenho personalizados.

  1.  Codificar e renderizar um PNG

Este fragmento reutiliza font e encoder do exemplo anterior. Ele salva morse.png em 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}

O PNG representa o código Morse usando os glifos de ponto (.) e traço (-) da fonte. Os parâmetros de caracteres controlam os separadores de palavras, não símbolos alternativos de ponto e traço.

  1.  Decodifique de volta para texto simples
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

Quando um alfabeto personalizado foi usado durante a codificação, passe o mesmo valor MorseAlphabets para o decodificador.

  1. Exemplo 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}");

O exemplo combinado salva callme.png em OutputDir, imprime os identificadores dos glifos codificados e decodifica ... --- ... como SOS. Use os espaços de nomes e a configuração de diretórios indicados acima.

Demonstração on-line

Aspose fornece uma demonstração gratuita na web para testar o tradutor sem instalar nada:

Recursos da demonstração:

Notas de lançamento

Aspose.Font para .NET 23.10 APIs adicionadas: TextUtilsFactory, IFontMorseEncoder, IFontMorseDecoder, IMorseEncoder, IMorseDecoder, enumeração MorseAlphabets. Nova funcionalidade: “Suporte para codificação em código Morse”.

Quando usar qual sobrecarga

SituaçãoSobrecarga recomendada
Necessita apenas de identificadores de glifos para posterior processamentoEncode(string text, IFont font) (ou com alfabeto explícito)
Obter um fluxo PNG sem gerenciar o código de renderizaçãoUse a sobrecarga com fontSize, lineSpacingType, lineSpacingValue e maxWidth
Separadores de palavras personalizadosDefina inputSeparator e outputSeparator; esses parâmetros não alteram os símbolos de ponto e traço
O idioma de origem utiliza um alfabeto não latino e a deteção automática falhaPasse o valor MorseAlphabets apropriado explicitamente

Resumo

Aspose.Font agora inclui um mecanismo completo de tradução de código Morse que opera tanto no nível de glifo quanto no nível de bitmap. Usando os métodos simples de fábrica, você pode começar instantaneamente a codificar, decodificar e renderizar texto nos alfabetos suportados, sem escrever suas próprias tabelas de mapeamento ou lidar com renderização de baixo nível.

Esteja você construindo:

a API oferece controle total enquanto mantém o código limpo, multiplataforma e totalmente compatível.