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:
| Ziel | Funktionsweise |
|---|---|
| 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 Text | IMorseDecoder liefert Klartext; IFontMorseDecoder liefert mit einer angegebenen Schriftart Glyphen-IDs oder einen PNG-Stream. |
| Rendern von Text als Morsecode im PNG-Format | Rendering-Ü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?
- Reine C#-Lösung – keine externen Bibliotheken, keine Abhängigkeiten auf Betriebssystemebene.
- Funktioniert mit jeder Schriftart, die die erforderlichen Glyphen enthält (TrueType, OpenType, CFF …).
- Integrierte Heuristiken wählen automatisch das richtige Alphabet (Latein, Griechisch, Kyrillisch usw.) aus, wenn Sie es weglassen.
- Sowohl Text → Glyphen-IDs (für eigene Rendering-Pipelines) als auch Text → Morse-PNG sind verfügbar.
- Vollständig abgedeckt durch Asposes Support (Foren, Dokumente, Live-Demo).
Erste Schritte
1 Installieren Sie das NuGet-Paket
1dotnet add package Aspose.Font2 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:
| Methode | Rückgabewert | Beschreibung |
|---|---|---|
GetFontMorseEncoder() | IFontMorseEncoder | Kodiert Text mit einer angegebenen Schriftart als Glyphen-IDs oder PNG-Stream |
GetMorseEncoder() | IMorseEncoder | Kodiert Text ohne Schriftart als einfache Morsezeichenfolge |
GetFontMorseDecoder() | IFontMorseDecoder | Dekodiert Morsecode mit einer angegebenen Schriftart in Glyphen-IDs oder einen PNG-Stream |
GetMorseDecoder() | IMorseDecoder | Dekodiert 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.
| Ergebnis | Parameter |
|---|---|
GlyphId[] | Text und eine IFont-Instanz, mit automatischer Alphabeterkennung oder einem expliziten MorseAlphabets-Wert |
PNG Stream | Text, 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.
| Wert | Schrift |
|---|---|
Latin | Englisch und die meisten westlichen Sprachen |
Greek | Griechische Buchstaben |
Cyrillic | Russisch, Bulgarisch usw. |
Hebrew | Hebräische Buchstaben |
Arabic | Arabische Schrift |
Portuguese | Portugiesische Schriftzeichen |
Kurdish | Kurdische Buchstaben |
Persian | Persische/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.
- 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.
- 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.
- 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); // SOSWenn beim Codieren ein benutzerdefiniertes Alphabet verwendet wurde, übergeben Sie denselben „MorseAlphabets“-Wert an den Decoder.
- 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:
- Text ↔︎ Morse ↔︎ Glyphendarstellung
- Wählen Sie benutzerdefinierte Punkt-/Strichzeichen
- Laden Sie generiertes PNG herunter oder zeigen Sie Glyphen-IDs an
Versionshinweise
Aspose.Font für .NET 23.10 Hinzugefügte APIs:
TextUtilsFactory,IFontMorseEncoder,IFontMorseDecoder,IMorseEncoder,IMorseDecoder, EnumerationMorseAlphabets. Neue Funktion: „Unterstützung für Morsecode-Codierung“.
Wann welche Überlastung verwendet werden soll
| Situation | Empfohlene Überladung |
|---|---|
| Nur Glyphenbezeichner für die Weiterverarbeitung erforderlich | Encode(string text, IFont font) (oder mit explizitem Alphabet) |
| PNG-Stream ohne eigenen Rendering-Code benötigt | Verwenden Sie die Überladung mit fontSize, lineSpacingType, lineSpacingValue und maxWidth |
| Benutzerdefinierte Worttrenner | Legen Sie inputSeparator und outputSeparator fest; diese Parameter ändern die Punkt-/Strichzeichen nicht |
| Quellsprache verwendet nicht-lateinische Schrift und automatische Erkennung schlägt fehl | Den 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:
- Eine benutzerdefinierte Signalvisualisierungskomponente
- Ein Lehrmittel zum Erlernen der Morsekommunikation
- Ein Datenverschleierungsschritt, der Informationen als stilisierte Schriftarten speichert
Die API gibt Ihnen die volle Kontrolle und sorgt gleichzeitig dafür, dass der Code sauber, plattformübergreifend und vollständig unterstützt bleibt.