From: Simon Wright <simon@pushface.org>
Subject: Re: XMLAda & unicode symbols
Date: Sat, 19 Jun 2021 22:24:45 +0100 [thread overview]
Message-ID: <lyk0mph7j6.fsf@pushface.org> (raw)
In-Reply-To: f9f32d7f-2265-4dd5-8bcb-c477ca449cf3n@googlegroups.com
"196...@googlemail.com" <1963bib@googlemail.com> writes:
> I'm creating SVG files with XMLAda and I need to have a degree symbol
> within some text.
>
> I have:
> procedure Add_Min_Max (Min_Max_Str : String; X_Pos : String; Y_Pos : String) is
> Text_Node : DOM.Core.Element;
> Text : DOM.Core.Text;
> begin
> Text_Node := DOM.Core.Documents.Create_Element (LDocument, "text");
> DOM.Core.Elements.Set_Attribute (Text_Node, "x", X_Pos);
> DOM.Core.Elements.Set_Attribute (Text_Node, "y", Y_Pos);
> DOM.Core.Elements.Set_Attribute (Text_Node, "class", "def-maroon");
> DOM.Core.Elements.Set_Attribute (Text_Node, "text-anchor", "left");
> Text_Node := DOM.Core.Nodes.Append_Child (Root_Node, Text_Node);
> Text := DOM.Core.Documents.Create_Text_Node (LDocument, Min_Max_Str);
> Text := DOM.Core.Nodes.Append_Child (Text_Node, Text);
> end Add_Min_Max;
>
> and I just pass a string in. The degree symbol is unicode 00B0 and you
> would then normally have it as �B0, except if I do, then XMLAda
> changes that initial '&' to '&' and so what is then coded is
> '&#00B0' and it fails to display properly.
>
> Nor can I apply Unicode.Names.Latin_1_Supplement.Degree_Sign to the
> string, since, well, strict typing...
>
> To me it seems like XMLAda is being far too eager and is not willing
> to just publish what I enter.
>
> I raised a call on the github repository, but it was closed saying
> basically use the unicode name, which fails.
Set_Attribute takes a Dom_String, which is a subtype of
Unicode.CES.Byte_Sequence, which is a subtype of String. The question
is, what encoding? I suspect it's utf-8, so we need to encode
Ada.Characters.Latin_1.Degree_Sign in utf-8, & this code using XML/Ada
support seems to do the trick:
with Ada.Characters.Latin_1;
with Ada.Text_IO;
with Unicode.CES;
with Unicode.Encodings;
procedure Conversion is
Fifty_Degrees_Latin1 : constant String
:= "50" & Ada.Characters.Latin_1.Degree_Sign;
Fifty_Degrees_UTF8 : constant Unicode.CES.Byte_Sequence
:= "50"
& Unicode.Encodings.Convert
((1 => Ada.Characters.Latin_1.Degree_Sign),
From => Unicode.Encodings.Get_By_Name ("iso-8859-15"),
To => Unicode.Encodings.Get_By_Name ("utf-8"));
begin
Ada.Text_IO.Put_Line (Fifty_Degrees_Latin1);
Ada.Text_IO.Put_Line (Fifty_Degrees_UTF8);
end Conversion;
(note that Convert's From and To parameters are the default). On this
Mac (Terminal displays utf-8 text) the first line is garbage, the second
fine.
I'm So Wildly Impressed (maybe "cast down" would be more accurate) by
all that subtyping in our wondrously safe language.
I also agree with you that suggesting you use a Unicode_Char
(Wide_Wide_Character) without saying *how* is less helpful than it could
be.
next prev parent reply other threads:[~2021-06-19 21:24 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-19 18:28 XMLAda & unicode symbols 196...@googlemail.com
2021-06-19 19:53 ` Jeffrey R. Carter
2021-06-20 17:02 ` 196...@googlemail.com
2021-06-20 17:23 ` Dmitry A. Kazakov
2021-06-20 17:58 ` 196...@googlemail.com
2021-06-20 18:16 ` Dmitry A. Kazakov
2021-06-21 19:40 ` 196...@googlemail.com
2021-06-21 20:18 ` Dmitry A. Kazakov
2021-06-21 15:37 ` Simon Wright
2021-06-21 19:49 ` 196...@googlemail.com
2021-06-21 20:23 ` Dmitry A. Kazakov
2021-06-21 20:47 ` Simon Wright
2021-06-22 0:30 ` Spiros Bousbouras
2021-06-20 18:21 ` Jeffrey R. Carter
2021-06-20 18:47 ` Dmitry A. Kazakov
2021-06-20 22:50 ` Jeffrey R. Carter
2021-06-21 4:16 ` Marius Amado-Alves
2021-06-21 9:39 ` Jeffrey R. Carter
2021-06-21 6:14 ` Dmitry A. Kazakov
2021-06-19 21:24 ` Simon Wright [this message]
2021-06-20 17:10 ` 196...@googlemail.com
2021-06-21 15:26 ` Simon Wright
2021-06-21 18:33 ` Emmanuel Briot
2021-06-21 20:06 ` 196...@googlemail.com
2021-06-21 21:26 ` Simon Wright
2021-06-22 6:52 ` Emmanuel Briot
2021-06-21 21:22 ` Simon Wright
2021-06-21 6:07 ` Vadim Godunko
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox