Page 1 of 1

How to display Greek symbols on axis labels?

Posted: Wed Mar 11, 2020 5:00 pm
by 16487009
I am creating scatter plots in code and want to display the following label on the x-axis:
Rotation <THETA> (degrees)
where <THETA> is the Greek capital symbol theta, whose Unicode value is 0x4a.

Is there a way of doing this IN CODE?

Re: How to display Greek symbols on axis labels?

Posted: Thu Mar 12, 2020 8:01 am
by yeray
Hello,

I'm not sure if you want to draw it in the axis title or in all the axis labels.
Anyway, the base of the code would be this:

Code: Select all

procedure TForm1.Chart1AfterDraw(Sender: TObject);
{$IFNDEF CLX}
var UnicodeString : WideString;
{$ENDIF}
begin
  inherited;

{$IFNDEF CLX}

  SetLength(UnicodeString, 1);
  UnicodeString[1] := WideChar($0398);

  with Chart1.Canvas.Font do
  begin
    Size:=15;
    Name:='Arial Unicode MS';
  end;

  SetBkMode(Chart1.Canvas.Handle, TRANSPARENT);

  TextOutW(Chart1.Canvas.Handle, 10, 10, PWideChar(UnicodeString),
                                         Length(UnicodeString));

{$ENDIF}
end;

Re: How to display Greek symbols on axis labels?

Posted: Thu Mar 12, 2020 9:34 pm
by 16487009
Thanks, that work just fine.

It was even simpler - by setting the axis->Title->FontName to ""Arial Unicode MS" I get the required symbol.

Presumably, if I want to display symbols with subscripts, I would need to draw the title myself, including the subsripts?

Re: How to display Greek symbols on axis labels?

Posted: Fri Mar 13, 2020 8:08 am
by yeray
Hello,

You could use ttfHtml font format as follows:

Code: Select all

procedure TForm1.FormCreate(Sender: TObject);
begin
  Chart1.Title.Font.Size:=18;
  Chart1.Title.Font.Name:='Arial Unicode MS';
  Chart1.Title.TextFormat:=ttfHtml;
  Chart1.Title.Text.Text:='Theta: ' + WideChar($0398) + '<sub>subscript</sub>' + '<sup>superscript</sup>';
end;
Project1_2020-03-13_09-07-42.png
Project1_2020-03-13_09-07-42.png (3.54 KiB) Viewed 25022 times

Re: How to display Greek symbols on axis labels?

Posted: Fri Mar 13, 2020 10:49 am
by 16487009
Yeray

Thanks for the further suggestions. That is (almost) what I want...

Both the subscript and the superscript appear to be too low relative to the regular text. Is there any way to control that?

Re: How to display Greek symbols on axis labels?

Posted: Fri Mar 13, 2020 10:54 am
by 16487009
What I'm really looking for is this...

Image

Re: How to display Greek symbols on axis labels?

Posted: Mon Mar 16, 2020 11:01 am
by yeray
Hello,

This is an issue already in the public tracker (#1907) I'm currently revising.

Re: How to display Greek symbols on axis labels?

Posted: Mon Mar 16, 2020 12:43 pm
by 16487009
Yeray

Thanks for the additional info.

Looking at the proposed fix in the database, I would like to make the following commets:
  • The upwards and downwards offsets are MUCH better
  • However, there should be lest space between the end of the regular text and the beginning of the sub/superscript
Will the fix make it in the next release?

Andrew

Re: How to display Greek symbols on axis labels?

Posted: Mon Mar 16, 2020 6:11 pm
by yeray
Hello,

I'm not sure because I've just seen this is breaking other html tags such as <big> and <small>
So we should revise it.

Re: How to display Greek symbols on axis labels?

Posted: Fri Mar 20, 2020 9:50 am
by yeray
Andrew,
Geocentrix wrote:
Mon Mar 16, 2020 12:43 pm
  • However, there should be lest space between the end of the regular text and the beginning of the sub/superscript
In general we need to calculate the text size with a margin.
This is related to this old issue.