Char not working properly ?

11 views (last 30 days)
Matteo Bonhomme
Matteo Bonhomme on 6 Jan 2023
Answered: VBBV on 9 Jan 2023
Hello
Acccording to internet the unicode for subscript e ( _{e} in Latex) is U2091 or 8337 in decimal.
char(8337)
ans = 'ₑ'
but on my machine it doesn't work.
Other unicode work but not this one. Does anybody know what I should check ?
I'm on window 11 and my laptop is in french if that helps.
  7 Comments
Matteo Bonhomme
Matteo Bonhomme on 9 Jan 2023
I tried, it still doesn't work.
After doing some additionnal research, it looks like that's the best that unicode can do. The unicode character of the voyel are just not the same size. (found this cool website btw : https://www.unicodeit.net/ )
I read somewhere else on the forum that uitextarea does't accept interpreter so I don't think there's a way to fix that.
After doing some try I found a workaround where I put axes then put a textbox on the axes then hide the axes:
hFig=uifigure;
ax=uiaxes(hFig);
text(ax,0.5,0.5,"T_{antenna}",'FontSize', 40)
ax.Visible='off';
That's not answering my initial question but that's a satisfying work around
Adam Danz
Adam Danz on 9 Jan 2023
I was able to reproduce these difference between results shown here and on my local machine. Clearly the encoding is not consistent between the Run feature and my local installation and there are differences between recent releases. There were changes to system encoding in 22a (release notes) but that does not explain these differences and I haven't had time to look deeper.
Subscripts codes references on wiki.
unidec = hex2dec({'2090','2099','209c','2091','2099','2099','2090'})
unidec = 7×1
8336 8345 8348 8337 8345 8345 8336
str = ['T', char(unidec')]
str = 'Tₐₙₜₑₙₙₐ'
text(0.5,0.5,str,'FontSize',24)

Sign in to comment.

Accepted Answer

VBBV
VBBV on 9 Jan 2023
To display text on figure window, you should rather use uilabel function in place of uitextarea which produces same output as desired, This function also supports both latex and tex interpreters in contrast to former uitextarea function.
hFig=uifigure;
txa = uilabel(hFig);
txa.Text ='T_{antenna}'
txa.Interpreter = 'tex'
txa.FontName= 'Arial';
txa.FontSize=40;
txa.FontWeight='normal'
txa.Position = [100 274 170 45]

More Answers (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 6 Jan 2023
To display in a figure is straightforward, e.g.:
figure; title(char(8337))
text(0.5, 0.5, ['This is the character: ' char(8337)])
  3 Comments
Rik
Rik on 9 Jan 2023
The whole point of Unicode is not to have these things happen, so this behavior should be considered a bug. Please report it.
Matteo Bonhomme
Matteo Bonhomme on 9 Jan 2023
I just did it
I found a workaround so I'll stop looking into this issue but if someone understand what's happening I'm interested

Sign in to comment.

Tags

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!