Morsecode-Übersetzung mit Aspose.Font | .NET

Morsecode-Übersetzung mit Aspose.Font für.NET

Was ist Morsecode-Übersetzung?

Mit dieser Funktionalität können Sie:

ZielFunktionsweise
Kodieren von Klartext in Morsecode-Glyphen einer Schriftart (oder eines Bitmap-Bildes)IFontMorseEncoder wandelt Zeichen in eine Folge von Punkt (.) und Strich (-) um und ordnet sie den Glyphen-IDs der angegebenen IFont zu.
Dekodieren einer Morsezeichenfolge in lesbaren TextIMorseDecoder liefert Klartext; IFontMorseDecoder liefert mit einer angegebenen Schriftart Glyphen-IDs oder einen PNG-Stream.
Rendern von Text als Morsecode im PNG-FormatRendering-Überladungen akzeptieren Schriftart, Schriftgröße, Zeilenabstand und maximale Breite und liefern einen PNG-Stream.

Die Funktion wurde in Aspose.Fontfor.NET23.10 (FONTNET‑602 – Unterstützung für Morsecode-Kodierung) eingeführt.

Warum es verwenden?

Erste Schritte

1 Installieren Sie das NuGet-Paket

1dotnet add package Aspose.Font

2 Namespaces hinzufügen (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;

API-Übersicht

1 Fabrik – Einstiegspunkt

Erstellen Sie mit new TextUtilsFactory() eine TextUtilsFactory-Instanz und rufen Sie deren Instanzmethoden auf:

MethodeRückgabewertBeschreibung
GetFontMorseEncoder()IFontMorseEncoderKodiert Text mit einer angegebenen Schriftart als Glyphen-IDs oder PNG-Stream
GetMorseEncoder()IMorseEncoderKodiert Text ohne Schriftart als einfache Morsezeichenfolge
GetFontMorseDecoder()IFontMorseDecoderDekodiert Morsecode mit einer angegebenen Schriftart in Glyphen-IDs oder einen PNG-Stream
GetMorseDecoder()IMorseDecoderDekodiert eine Morsezeichenfolge ohne Schriftart in Klartext

Die Fabrik befindet sich in Aspose.Font.Factories.TextUtilsFactory (hinzugefügt in 23.10).

2 Core-Schnittstellen

IFontMorseEncoder.

Die Glyphenüberladungen liefern GlyphId[]. Die Rendering-Überladungen liefern einen PNG-Stream, den der Aufrufer nach dem Kopieren oder Verarbeiten freigeben sollte.

ErgebnisParameter
GlyphId[]Text und eine IFont-Instanz, mit automatischer Alphabeterkennung oder einem expliziten MorseAlphabets-Wert
PNG StreamText, eine IFont-Instanz, fontSize, RenderingUtils.LineSpacingType, lineSpacingValue und maxWidth; eine weitere Überladung nimmt ein explizites Alphabet entgegen

LineSpacingType unterstützt Pixels und PercentOfFontHeight. Der Renderer berechnet die Bildhöhe; es gibt keinen Parameter für eine feste Höhe.

Die optionalen Zeichen inputSeparator und outputSeparator trennen Wörter. Beim Kodieren sind die Standardwerte ein Leerzeichen bzw. /. Sie ersetzen nicht die Morsezeichen für Punkt und Strich.

IFontMorseDecoder.

IFontMorseDecoder akzeptiert eine Morsezeichenfolge, eine Schriftart und einen expliziten MorseAlphabets-Wert. Das Ergebnis ist entweder GlyphId[] für den dekodierten Text oder ein PNG-Stream, wenn Rendering-Parameter angegeben werden. Klartext wird nicht zurückgegeben.

Verwenden Sie IMorseDecoder, um ohne Laden einer Schriftart einen dekodierten string zu erhalten. Beim Dekodieren ist inputSeparator standardmäßig / und outputSeparator ein Leerzeichen.

IMorseEncoder / IMorseDecoder.

Diese funktionieren nur mit Rohzeichenfolgen (keine Schriftart beteiligt). Verwenden Sie sie, wenn Sie nur „Punkt-Strich“-Sequenzen benötigen.

3 Unterstützende Enumeration – MorseAlphabets.

WertSchrift
LatinEnglisch und die meisten westlichen Sprachen
GreekGriechische Buchstaben
CyrillicRussisch, Bulgarisch usw.
HebrewHebräische Buchstaben
ArabicArabische Schrift
PortuguesePortugiesische Schriftzeichen
KurdishKurdische Buchstaben
PersianPersische/Farsi-Buchstaben

Wenn Sie die Enumeration weglassen, versucht der Encoder eine automatische Erkennung.

Praxisbeispiele

Die schriftbasierten Beispiele verwenden TTF/LatoWeb-Regular.ttf. Setzen Sie DataDir auf das Verzeichnis mit dem Ordner TTF und OutputDir auf ein vorhandenes Ausgabeverzeichnis. Die Dekodierung in Klartext benötigt keine Schriftart.

  1.  In Glyphen-IDs kodieren
 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())));

Ergebnis: Ein Array von GlyphId-Objekten, die die Morsezeichen darstellen und für eigene Zeichnungspipelines geeignet sind.

  1.  Kodieren und rendern Sie ein PNG

Dieses Fragment verwendet font und encoder aus dem vorherigen Beispiel. Es speichert 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}

Das PNG stellt Morsecode mit Punkt- (.) und Strichglyphen (-) der Schriftart dar. Die Zeichenparameter steuern Worttrenner, keine alternativen Punkt-/Strichzeichen.

  1.  Zurück in Klartext dekodieren
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

Wenn beim Codieren ein benutzerdefiniertes Alphabet verwendet wurde, übergeben Sie denselben „MorseAlphabets“-Wert an den Decoder.

  1. Kombiniertes Beispiel (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}");

Das kombinierte Beispiel speichert callme.png in OutputDir, gibt die kodierten Glyphen-IDs aus und dekodiert ... --- ... zu SOS. Verwenden Sie die oben angegebenen Namespaces und Verzeichnisse.

Online-Demo

Aspose bietet eine kostenlose Web-Demo an, mit der Sie den Übersetzer testen können, ohne etwas zu installieren:

Funktionen der Demo:

Versionshinweise

Aspose.Font für .NET 23.10 Hinzugefügte APIs: TextUtilsFactory, IFontMorseEncoder, IFontMorseDecoder, IMorseEncoder, IMorseDecoder, Enumeration MorseAlphabets. Neue Funktion: „Unterstützung für Morsecode-Codierung“.

Wann welche Überlastung verwendet werden soll

SituationEmpfohlene Überladung
Nur Glyphenbezeichner für die Weiterverarbeitung erforderlichEncode(string text, IFont font) (oder mit explizitem Alphabet)
PNG-Stream ohne eigenen Rendering-Code benötigtVerwenden Sie die Überladung mit fontSize, lineSpacingType, lineSpacingValue und maxWidth
Benutzerdefinierte WorttrennerLegen Sie inputSeparator und outputSeparator fest; diese Parameter ändern die Punkt-/Strichzeichen nicht
Quellsprache verwendet nicht-lateinische Schrift und automatische Erkennung schlägt fehlDen entsprechenden Wert für MorseAlphabets explizit angeben

Zusammenfassung

Aspose.Font enthält jetzt eine vollständige Morsecode-Übersetzungs-Engine, die sowohl auf der Glyphenebene als auch auf der Bitmapebene arbeitet. Mit den einfachen Factory-Methoden können Sie sofort mit dem Kodieren, Dekodieren und Rendern von Texten in den unterstützten Alphabeten beginnen, ohne eigene Zuordnungstabellen schreiben oder sich mit Low-Level-Rendering befassen zu müssen.

Ob Sie bauen:

Die API gibt Ihnen die volle Kontrolle und sorgt gleichzeitig dafür, dass der Code sauber, plattformübergreifend und vollständig unterstützt bleibt.