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:
| Objectivo | Como 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ível | IMorseDecoder retorna texto simples; IFontMorseDecoder retorna identificadores de glifos ou um fluxo PNG usando uma fonte fornecida. |
| Renderizar texto como código Morse no formato PNG | As 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?
- Solução Pure-C# – sem bibliotecas externas, sem dependências no nível do sistema operacional.
- Funciona com qualquer fonte que contenha os glifos necessários (TrueType, OpenType, CFF…).
- A heurística integrada escolhe automaticamente o alfabeto correto (latim, grego, cirílico etc.) quando você o omite.
- Estão disponíveis tanto texto → identificadores de glifos (para pipelines de renderização personalizados) quanto texto → PNG Morse.
- Totalmente coberto pelo suporte do Aspose (fóruns, documentos, demonstração ao vivo).
Primeiros passos
1 Instale o pacote NuGet
1dotnet add package Aspose.Font2 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étodo | Retorna | Descrição |
|---|---|---|
GetFontMorseEncoder() | IFontMorseEncoder | Codifica texto como identificadores de glifos ou um fluxo PNG usando uma fonte fornecida |
GetMorseEncoder() | IMorseEncoder | Codifica texto como uma sequência Morse sem fonte |
GetFontMorseDecoder() | IFontMorseDecoder | Decodifica Morse como identificadores de glifos ou um fluxo PNG usando uma fonte fornecida |
GetMorseDecoder() | IMorseDecoder | Decodifica 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.
| Resultado | Parâmetros |
|---|---|
GlyphId[] | Texto e uma instância de IFont, com detecção automática do alfabeto ou um valor explícito de MorseAlphabets |
PNG Stream | Texto, 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
| Valor | Guião |
|---|---|
Latim | Inglês e a maioria das línguas ocidentais |
Grego | Letras gregas |
Cirílico | Russo, búlgaro, etc. |
Hebraico | Letras hebraicas |
Árabe | Alfabeto árabe |
Português | Símbolos específicos do português |
Curdo | Letras curdas |
Persa | Letras 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.
- 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.
- 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.
- 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); // SOSQuando um alfabeto personalizado foi usado durante a codificação, passe o mesmo valor MorseAlphabets para o decodificador.
- 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:
- Texto ↔︎ Morse ↔︎ Renderização de glifo
- Escolha caracteres de ponto/traço personalizados
- Baixe o PNG gerado ou visualize os IDs dos glifos
Notas de lançamento
Aspose.Font para .NET 23.10 APIs adicionadas:
TextUtilsFactory,IFontMorseEncoder,IFontMorseDecoder,IMorseEncoder,IMorseDecoder, enumeraçãoMorseAlphabets. Nova funcionalidade: “Suporte para codificação em código Morse”.
Quando usar qual sobrecarga
| Situação | Sobrecarga recomendada |
|---|---|
| Necessita apenas de identificadores de glifos para posterior processamento | Encode(string text, IFont font) (ou com alfabeto explícito) |
| Obter um fluxo PNG sem gerenciar o código de renderização | Use a sobrecarga com fontSize, lineSpacingType, lineSpacingValue e maxWidth |
| Separadores de palavras personalizados | Defina 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 falha | Passe 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:
- Um componente personalizado de visualização de sinal
- Uma ferramenta educacional para ensinar comunicação Morse
- Uma etapa de ofuscação de dados que armazena informações como fontes estilizadas
a API oferece controle total enquanto mantém o código limpo, multiplataforma e totalmente compatível.