Traduzione in codice Morse con Aspose.Font | .NET

Traduzione in codice Morse con Aspose.Font per.NET

Cos’è la traduzione in codice Morse?

Questa è una funzionalità che ti consente di:

ObiettivoCome funziona
Codifica il testo normale in glifi in codice Morse di un font (o di un’immagine bitmap)IFontMorseEncoder converte i caratteri in una sequenza di simboli punto (.) e trattino (-) e li mappa agli identificatori di glifo dell’IFont fornito.
Decodificare una stringa Morse in testo leggibileIMorseDecoder restituisce testo normale; IFontMorseDecoder restituisce identificatori di glifi o un flusso PNG con un font fornito.
Renderizzare il testo come codice Morse in formato PNGGli overload di rendering accettano un font, la dimensione, l’interlinea e la larghezza massima e restituiscono un flusso PNG.

La funzionalità è stata introdotta in Aspose.Fontfor.NET23.10 (FONTNET‑602 – Supporto per la codifica del codice Morse).

Perché usarlo?

Iniziare

1 Installare il pacchetto NuGet

1dotnet add package Aspose.Font

2 Aggiungere spazi dei nomi (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;

Panoramica dell’API

1 Fabbrica – punto di ingresso

Creare un’istanza di TextUtilsFactory con new TextUtilsFactory(), quindi chiamare i relativi metodi di istanza:

MetodoRestituisceDescrizione
GetFontMorseEncoder()IFontMorseEncoderCodifica il testo in identificatori di glifi o in un flusso PNG utilizzando un font fornito
GetMorseEncoder()IMorseEncoderCodifica il testo in una stringa Morse senza font
GetFontMorseDecoder()IFontMorseDecoderDecodifica il Morse in identificatori di glifi o in un flusso PNG utilizzando un font fornito
GetMorseDecoder()IMorseDecoderDecodifica una stringa Morse in testo normale senza font

La fabbrica si trova in Aspose.Font.Factories.TextUtilsFactory (aggiunto nel 23.10).

2 interfacce principali

“IFontMorseEncoder”.

Gli overload per i glifi restituiscono GlyphId[]. Gli overload di rendering restituiscono uno Stream PNG che il chiamante deve rilasciare dopo averlo copiato o utilizzato.

RisultatoParametri
GlyphId[]Testo e un’istanza IFont, con rilevamento automatico dell’alfabeto o un valore MorseAlphabets esplicito
PNG StreamTesto, un’istanza IFont, fontSize, RenderingUtils.LineSpacingType, lineSpacingValue e maxWidth; un altro overload consente di specificare l’alfabeto

LineSpacingType supporta Pixels e PercentOfFontHeight. Il renderer calcola l’altezza dell’immagine; non esiste un parametro per un’altezza fissa.

I caratteri facoltativi inputSeparator e outputSeparator delimitano le parole. Durante la codifica, i valori predefiniti sono rispettivamente uno spazio e /. Non sostituiscono i simboli di punto e linea del codice Morse.

“IFontMorseDecoder”.

IFontMorseDecoder accetta una stringa Morse, un font e un valore MorseAlphabets esplicito. Restituisce GlyphId[] per il testo decodificato oppure uno Stream PNG se vengono forniti parametri di rendering. Non restituisce testo normale.

Utilizzare IMorseDecoder per ottenere una string decodificata senza caricare un font. Durante la decodifica, inputSeparator è / per impostazione predefinita e outputSeparator è uno spazio.

IMorseEncoder / IMorseDecoder.

Funzionano solo con stringhe grezze (nessun carattere coinvolto). Usali quando hai solo bisogno di sequenze “punto-linea”.

3 Enumerazione di supporto – “Alfabeti Morse”.

ValoreScript
LatinoInglese e la maggior parte delle lingue occidentali
GrecoLettere greche
CirillicoRusso, bulgaro, ecc.
EbraicoLettere ebraiche
AraboScrittura araba
PortogheseSimboli specifici del portoghese
CurdoLettere curde
PersianoLettere persiane/farsi

Se ometti l’enumerazione, il codificatore tenta il rilevamento automatico.

Esempi pratici

Gli esempi basati su font utilizzano TTF/LatoWeb-Regular.ttf. Impostare DataDir sulla directory che contiene la cartella TTF e OutputDir su una directory di output esistente. La decodifica in testo normale non richiede un font.

  1.  Codifica in ID glifi
 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())));

Risultato: un array di oggetti GlyphId che rappresentano i simboli Morse, adatto a pipeline di disegno personalizzate.

  1.  Codifica e renderizza un PNG

Questo frammento riutilizza font ed encoder dell’esempio precedente. Salva morse.png in 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}

Il PNG rappresenta il codice Morse utilizzando i glifi di punto (.) e linea (-) del font. I parametri dei caratteri controllano i separatori di parole, non simboli alternativi di punto e linea.

  1.  Decodifica in testo normale
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 durante la codifica è stato utilizzato un alfabeto personalizzato, passa lo stesso valore “MorseAlphabets” al decodificatore.

  1. Esempio combinato (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}");

L’esempio combinato salva callme.png in OutputDir, stampa gli identificatori dei glifi codificati e decodifica ... --- ... in SOS. Utilizzare gli spazi dei nomi e la configurazione delle directory indicati sopra.

Dimostrazione in linea

Aspose fornisce una demo web gratuita per provare il traduttore senza installare nulla:

Caratteristiche della demo:

Note sulla versione

Aspose.Font for .NET 23.10
Added APIs: TextUtilsFactory, IFontMorseEncoder, IFontMorseDecoder, IMorseEncoder, IMorseDecoder, enumeration MorseAlphabets.
New Feature: “Support for Morse code encoding”.

Quando utilizzare quale sovraccarico

SituazioneSovraccarico consigliato
Sono necessari solo identificatori di glifi per l’ulteriore elaborazioneEncode(string text, IFont font) (o con alfabeto esplicito)
Ottenere un flusso PNG senza gestire il codice di renderingUtilizzare l’overload con fontSize, lineSpacingType, lineSpacingValue e maxWidth
Separatori di parole personalizzatiImpostare inputSeparator e outputSeparator; questi parametri non modificano i simboli di punto e linea
La lingua di origine utilizza un alfabeto non latino e il rilevamento automatico falliscePassa esplicitamente il valore MorseAlphabets appropriato

Aspose.Font ora include un motore completo di traduzione del codice Morse che opera sia a livello di glifi che a livello di bitmap. Utilizzando i semplici metodi di fabbrica puoi iniziare immediatamente a codificare, decodificare e rendere testo negli alfabeti supportati senza scrivere le tue tabelle di mappatura o occuparti del rendering di basso livello.

Sia che tu stia costruendo:

l’API ti offre il pieno controllo mantenendo il codice pulito, multipiattaforma e completamente supportato.