Traduction du code Morse avec Aspose.Font | .NET

Traduction du code Morse avec Aspose.Font pour .NET

Qu’est-ce que la traduction en code Morse ?

Il s’agit d’une fonctionnalité qui vous permet :

ObjectifFonctionnement
Encoder du texte brut en glyphes de code Morse d’une police (ou d’une image bitmap)IFontMorseEncoder convertit les caractères en une séquence de symboles point (.) et tiret (-) et les associe aux identifiants de glyphes de l’IFont fournie.
Décoder une chaîne Morse en texte lisibleIMorseDecoder renvoie du texte brut ; IFontMorseDecoder renvoie des identifiants de glyphes ou un flux PNG avec une police fournie.
Rendre du texte en code Morse au format PNGLes surcharges de rendu acceptent une police, sa taille, l’interligne et la largeur maximale, et renvoient un flux PNG.

La fonctionnalité a été introduite dans Aspose.Fontfor.NET23.10 (FONTNET‑602 – Prise en charge de l’encodage du code Morse).

Pourquoi l’utiliser ?

Commencer

1 Installez le package NuGet

1dotnet add package Aspose.Font

2 Ajouter des espaces de noms (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;

Présentation de l’API

1 Usine – point d’entrée

Créez une instance de TextUtilsFactory avec new TextUtilsFactory(), puis appelez ses méthodes d’instance :

MéthodeValeur de retourDescription
GetFontMorseEncoder()IFontMorseEncoderEncode du texte en identifiants de glyphes ou en flux PNG avec une police fournie
GetMorseEncoder()IMorseEncoderEncode du texte en chaîne Morse sans police
GetFontMorseDecoder()IFontMorseDecoderDécode du Morse en identifiants de glyphes ou en flux PNG avec une police fournie
GetMorseDecoder()IMorseDecoderDécode une chaîne Morse en texte brut sans police

L’usine réside dans Aspose.Font.Factories.TextUtilsFactory (ajouté dans 23.10).

2 interfaces principales

IFontMorseEncoder

Les surcharges de glyphes renvoient GlyphId[]. Les surcharges de rendu renvoient un Stream PNG que l’appelant doit libérer après l’avoir copié ou utilisé.

RésultatParamètres
GlyphId[]Texte et instance IFont, avec détection automatique de l’alphabet ou valeur MorseAlphabets explicite
PNG StreamTexte, instance IFont, fontSize, RenderingUtils.LineSpacingType, lineSpacingValue et maxWidth ; une autre surcharge permet de préciser l’alphabet

LineSpacingType prend en charge Pixels et PercentOfFontHeight. Le moteur de rendu calcule la hauteur de l’image ; aucun paramètre ne définit une hauteur fixe.

Les caractères facultatifs inputSeparator et outputSeparator délimitent les mots. Pour l’encodage, ils valent par défaut un espace et /, respectivement. Ils ne remplacent pas les points et tirets du code Morse.

IFontMorseDecoder

IFontMorseDecoder accepte une chaîne Morse, une police et une valeur MorseAlphabets explicite. Il renvoie GlyphId[] pour le texte décodé, ou un Stream PNG lorsque des paramètres de rendu sont fournis. Il ne renvoie pas de texte brut.

Utilisez IMorseDecoder pour obtenir une string décodée sans charger de police. Pour le décodage, inputSeparator vaut par défaut / et outputSeparator vaut un espace.

IMorseEncoder / IMorseDecoder

Ceux-ci fonctionnent uniquement avec des chaînes brutes (aucune police impliquée). Utilisez-les lorsque vous n’avez besoin que de séquences « points-traits ».

3 Énumération de support – MorseAlphabets

ValeurScript
LatinAnglais et la plupart des langues occidentales
GreekLettres grecques
CyrillicRusse, Bulgare, etc.
HébreuLettres hébraïques
ArabeÉcriture arabe
PortugaisSymboles spécifiques au portugais
KurdeLettres kurdes
PersanLettres persanes/farsi

Si vous omettez l’énumération, l’encodeur tente une détection automatique.

Exemples pratiques

Les exemples utilisant une police emploient TTF/LatoWeb-Regular.ttf. Définissez DataDir sur le répertoire contenant le dossier TTF et OutputDir sur un répertoire de sortie existant. Le décodage en texte brut ne nécessite pas de police.

  1.  Encoder en identifiants de glyphes
 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())));

Résultat : un tableau d’objets GlyphId représentant les symboles Morse, utilisable dans des traitements de dessin personnalisés.

  1.  Encoder et restituer un PNG

Ce fragment réutilise font et encoder de l’exemple précédent. Il enregistre morse.png dans 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}

Le PNG représente le code Morse avec les glyphes de point (.) et de tiret (-) de la police. Les paramètres de caractères contrôlent les séparateurs de mots, pas des symboles de point ou de tiret alternatifs.

  1.  Décoder en texte brut
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

Lorsqu’un alphabet personnalisé a été utilisé lors de l’encodage, transmettez la même valeur « MorseAlphabets » au décodeur.

  1. Exemple combiné (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’exemple combiné enregistre callme.png dans OutputDir, affiche les identifiants de glyphes encodés et décode ... --- ... en SOS. Utilisez les espaces de noms et la configuration des répertoires indiqués ci-dessus.

Démo en ligne

Aspose propose une démo Web gratuite pour essayer le traducteur sans rien installer :

Caractéristiques de la démo :

Notes de version

Aspose.Font pour .NET 23.10 API ajoutées : TextUtilsFactory, IFontMorseEncoder, IFontMorseDecoder, IMorseEncoder, IMorseDecoder, énumération MorseAlphabets. Nouvelle fonctionnalité : « Prise en charge de l’encodage en code Morse ».

Quand utiliser quelle surcharge

SituationSurcharge recommandée
Identifiants des glyphes uniquement nécessaires pour la suite du traitementEncode(string text, IFont font) (ou avec un alphabet explicite)
Obtenir un flux PNG sans gérer le code de renduUtilisez la surcharge avec fontSize, lineSpacingType, lineSpacingValue et maxWidth
Séparateurs de mots personnalisésDéfinissez inputSeparator et outputSeparator ; ces paramètres ne modifient pas les points et tirets
La langue source utilise un alphabet non latin et la détection automatique échoueSpécifiez explicitement la valeur appropriée de MorseAlphabets

Résumé

Aspose.Font inclut désormais un moteur complet de traduction de code Morse qui fonctionne à la fois au niveau glyphe et au niveau bitmap. Grâce aux méthodes simples d’usine, vous pouvez instantanément commencer à encoder, décoder et restituer du texte dans les alphabets pris en charge sans écrire vos propres tables de mappage ni gérer le rendu de bas niveau.

Que vous construisiez :

l’API vous donne un contrôle total tout en gardant le code propre, multiplateforme et entièrement pris en charge.