From 23ef1e02e7566358109e960ee83d9df9b5d84720 Mon Sep 17 00:00:00 2001 From: Ratnabali Dutta Date: Mon, 14 Aug 2023 14:37:13 +0530 Subject: [PATCH 1/2] Fix glyphs for angle brackets --- lib/matplotlib/_mathtext.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/_mathtext.py b/lib/matplotlib/_mathtext.py index 5b4e8ed20db3..f3e1b5ba915d 100644 --- a/lib/matplotlib/_mathtext.py +++ b/lib/matplotlib/_mathtext.py @@ -419,9 +419,9 @@ def _get_glyph(self, fontname, font_class, sym): r'\rceil': [('ex', '\xa8'), ('ex', '\x6d'), ('ex', '\xbc'), ('ex', '\x27')], r'\langle': [('ex', '\xad'), ('ex', '\x44'), - ('ex', '\xbf'), ('ex', '\x2a')], + ('ex', '\xbf')], r'\rangle': [('ex', '\xae'), ('ex', '\x45'), - ('ex', '\xc0'), ('ex', '\x2b')], + ('ex', '\xc0')], r'\__sqrt__': [('ex', '\x70'), ('ex', '\x71'), ('ex', '\x72'), ('ex', '\x73')], r'\backslash': [('ex', '\xb2'), ('ex', '\x2f'), @@ -432,8 +432,6 @@ def _get_glyph(self, fontname, font_class, sym): ('ex', '\x64')], r'\widetilde': [('rm', '\x7e'), ('ex', '\x65'), ('ex', '\x66'), ('ex', '\x67')], - r'<': [('cal', 'h'), ('ex', 'D')], - r'>': [('cal', 'i'), ('ex', 'E')] } for alias, target in [(r'\leftparen', '('), @@ -442,6 +440,8 @@ def _get_glyph(self, fontname, font_class, sym): (r'\rightbrace', '}'), (r'\leftbracket', '['), (r'\rightbracket', ']'), + (r'<', r'\langle'), + (r'>', r'\rangle'), (r'\{', '{'), (r'\}', '}'), (r'\[', '['), From fc54666b528b435492652971a558ea0551001249 Mon Sep 17 00:00:00 2001 From: Ratnabali Dutta Date: Tue, 15 Aug 2023 16:41:45 +0530 Subject: [PATCH 2/2] Reorder glyph sizes for angular brackets --- lib/matplotlib/_mathtext.py | 12 ++++++------ .../test_mathtext/math_angle_brackets.png | Bin 0 -> 6603 bytes lib/matplotlib/tests/test_mathtext.py | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/math_angle_brackets.png diff --git a/lib/matplotlib/_mathtext.py b/lib/matplotlib/_mathtext.py index f3e1b5ba915d..510f66dffd27 100644 --- a/lib/matplotlib/_mathtext.py +++ b/lib/matplotlib/_mathtext.py @@ -418,10 +418,10 @@ def _get_glyph(self, fontname, font_class, sym): ('ex', '\xbb'), ('ex', '\x26')], r'\rceil': [('ex', '\xa8'), ('ex', '\x6d'), ('ex', '\xbc'), ('ex', '\x27')], - r'\langle': [('ex', '\xad'), ('ex', '\x44'), - ('ex', '\xbf')], - r'\rangle': [('ex', '\xae'), ('ex', '\x45'), - ('ex', '\xc0')], + r'\langle': [('ex', '\xad'), ('ex', '\x2a'), + ('ex', '\xbf'), ('ex', '\x44')], + r'\rangle': [('ex', '\xae'), ('ex', '\x2b'), + ('ex', '\xc0'), ('ex', '\x45')], r'\__sqrt__': [('ex', '\x70'), ('ex', '\x71'), ('ex', '\x72'), ('ex', '\x73')], r'\backslash': [('ex', '\xb2'), ('ex', '\x2f'), @@ -432,6 +432,8 @@ def _get_glyph(self, fontname, font_class, sym): ('ex', '\x64')], r'\widetilde': [('rm', '\x7e'), ('ex', '\x65'), ('ex', '\x66'), ('ex', '\x67')], + r'<': [('ex', '\x44')], + r'>': [('ex', '\x45')] } for alias, target in [(r'\leftparen', '('), @@ -440,8 +442,6 @@ def _get_glyph(self, fontname, font_class, sym): (r'\rightbrace', '}'), (r'\leftbracket', '['), (r'\rightbracket', ']'), - (r'<', r'\langle'), - (r'>', r'\rangle'), (r'\{', '{'), (r'\}', '}'), (r'\[', '['), diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/math_angle_brackets.png b/lib/matplotlib/tests/baseline_images/test_mathtext/math_angle_brackets.png new file mode 100644 index 0000000000000000000000000000000000000000..b77f26d0f40b8bda0709e76b50b345c6cebfd64c GIT binary patch literal 6603 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

-MqUPez^{KJjgC)D z%m@khg8Rs8i)Fr7IiDTqYU@ZC z9f*3lfB9kjiD;0~`-x-1MJ`+yQIgv0F1`)CK-+*8gb};NIQ2hU#JS3as;}0!C#?bMw3sU#gge-@rmXw6n8A7j?53~CQ1|Ca`!ZA3xxXNW)d`{NMU{-9`fwndJ2$p~P z^r^e9_Q0js9?&tJzkX@VHMsRI>b{&f2)KYEN$yTp=2kyX_?nj|1Nau5iHRv^%-Vcv zgGyw~t#e=i6HN0ds@b&k^vH$#^SU%%3ryehT?}L61>zUKj*pKQ7Z=;t!hXib#5{WN z;DN~8!s~&{8b)?@Y`66xDKH3=F=tl!7v{H{dIPK?0By?Uj@@iwF?HjM$+NPt9RWDJ z5MQ`WR2A<4yW@HD1D#%8PD0DjF!~XNASpu*A{5}W9BRKjS|M_pO^PNLz?_+x0r5l1 z-GKyf8%9P(71h;UMOwxB_PYQOV_;-#Z`&pTNeqQjtgWqW&Nn^Vhqqusq0pHlP!ViO zAw1w$fPWu9z{*(ui5=cokdDiv(a4^_5)mCu2$4}!i#Iy^PqHuw9!mJ|fev_#r$A<( zZ67RlgggjBjD+G=Ji}T!5RDZ8$p#1t$V#BO@j?I576-s!VxnSV2^kqt-@o$%ukWcV zUp%plI4G#&vzepo>+5A;q`NE4dJl_@@02`YLDh2+AYhxBoi*$Kz|i=5Y86a`E|4ym zSXhL~MiJ*UHa2#N0Aq;AxyEg4N?MOkPF!}UdFq>*fcKF1ENQ$yD^rw_Ipwq5Tow9{ z_eaOUNzu#)cB3>ib~+R24|G~QN=o}tMF;;?kl!)d{rPSqel9Q7!E-wdPU;6?Q>FVf^I;i!2k9f5BinGP1ix?&&E878N)j{h` znNj|7jTIoT`oO>9#2otOYP@Lw`oFtCC^~z1$m;2l?awuY07~4RP?3{E1!I)kewrJR zvK$MxP?1Rli1PCBAp)OhD(GbPzgHRrSOgK1G*CxhzI-`#wCW7SxIF!>iqPQ4$F8z( zpn>;@=a#m%Y@B(~5Rqix4-`~X1cv`!PqmGXkLP(oL3kzvI_6E&DcN@?Keo$0kZCHz z!9B#3x80N9TpYa5%F5ck&Vrqj0ihgub+Wr9D{hXB#q{XrP=qo?OfSsBh?DwobKO!NS;JUcdpAU4PXB^@0(QE{o+3sr1wSv?Qn zF{7huifdSyn2W2co(&*S!B7|TF_6-hpWlM!Tt(nJ%0|T3&r`zHy5Q_KV;Md9V zF&;U2B!@w*0;{o(&ij`cf*#&NFaDDvf-U?L##+AF`t`M`RUG7dAA2GGC2i>`m0wV|6&m|X>?r!gWURh(%9Hohx0%%+3On`I=Z`ophBtm z{#|oh_4$o46a>u53c&1uYr`WZp0t!M2Z0aG{UO?n15`-pd&UsbX37Y-Dc1BMq<@b6 z(Pt&*S$sl5PT#)0EAX4009oJ*q-VA8rpcPHe~Mee-`12O;`W*aTv~6O#C>>!+Xidq z|GtBI@x)~}SHRo!baHTK2&?^J=UaaM^W3ra*;xb6HaHwEMM5e*Ag?|^k zvZkgR5I3k?oWpFbVwu-!AO85{WG65Jz>`&75B2wVfCrAYi_6IwK0ZW5yyowK&;v^1 zZFo4k0!$6I*p39+{mopxi;(|iMag}7YEh|Ci@s-x1|pP5m~nA)>l*sVhhT=)RdYoT zkXD)4*Tyxwva9_D`jL?lkZa4l zeEEoylJe$', + r'$\left< ? \right>$', + r'$\left\langle \frac{1}{2}\right\rangle$', + r'$\left\langle \frac{\sum_{0}^{1}}{2}\right\rangle$', + r'$\left<\frac{\sum_{0}^{1}}{\sum_{0}^{1}}\right>$' + ] + for idx, text in enumerate(tests): + fig.text((idx + 0.3)/len(tests), 0.5, text, math_fontfamily='cm')