I see the following in /etc/fonts/conf.d:
-a---- 12/03/2024 4:33 PM 0 10-hinting-slight.conf
-a---- 12/03/2024 4:33 PM 0 10-scale-bitmap-fonts.conf
-a---- 12/03/2024 4:33 PM 0 20-unhint-small-vera.conf
-a---- 12/03/2024 4:33 PM 0 30-metric-aliases.conf
-a---- 12/03/2024 4:33 PM 0 30-urw-aliases.conf
-a---- 12/03/2024 4:33 PM 0 40-nonlatin.conf
-a---- 12/03/2024 4:33 PM 0 45-latin.conf
-a---- 12/03/2024 4:33 PM 0 49-sansserif.conf
-a---- 12/03/2024 4:33 PM 0 50-user.conf
-a---- 12/03/2024 4:33 PM 0 51-local.conf
-a---- 12/03/2024 4:33 PM 0 60-latin.conf
-a---- 12/03/2024 4:33 PM 0 65-fonts-persian.conf
-a---- 12/03/2024 4:33 PM 0 65-nonlatin.conf
-a---- 12/03/2024 4:33 PM 0 69-unifont.conf
-a---- 12/03/2024 4:33 PM 0 80-delicious.conf
-a---- 12/03/2024 4:33 PM 0 90-synthetic.conf
These all look like standard fonts, I don't see custom ones here.
So I went to SousaMain, there are functions that look relevant:
basicUIRefresh ->
dispChanHandler ->
dispChannelData ->
dispDataNum(int param_1,int param_2,int param_3,int param_4,undefined4 param_5) ->
lv_label_set_text(local_24,&local_38);
I assume that is drawing the voltages and currents to the screen.
Search for font gives the following: lv_font_montserrat, lv_font_msyahei, lv_font_msyh, lv_font_numkey, lv_font_rigol, lv_font_simsun. I assume 'lv_font_rigol' is the garbage one.
So it could be possible to: replace the Rigol font directly in memory, change the font being pointed to.
Trying the second approach:
There is a function in dispChanInit, "lv_label_create" which initializes using two of the rigol fonts: lv_font_rigol_36 + lv_font_rigol_55:
0016afc0 31 df 01 eb bl lv_label_create undefined lv_label_create()
0016afc4 00 20 a0 e1 cpy r2,r0
0016afc8 c4 35 0e e3 movw r3,#0xe5c4
0016afcc 83 3e 40 e3 movt r3,#0xe83
0016afd0 30 20 83 e5 str r2,[r3,#0x30]=>stCHxView[48]
0016afd4 c4 35 0e e3 movw r3,#0xe5c4
0016afd8 83 3e 40 e3 movt r3,#0xe83
0016afdc 30 00 93 e5 ldr r0,[r3,#0x30]=>stCHxView[48]
0016afe0 90 3c 0a e3 movw r3,#0x7460 //Set small font
0016afe4 6b 31 40 e3 movt r3=>lv_font_rigol_36,#0x16b
0016afe8 00 20 a0 e3 mov r2,#0x0
0016afec 00 10 a0 e3 mov r1,#0x0
...
0016aee4 b0 35 07 e3 movw r3,#0x75b0 //Set large font
0016aee8 6b 31 40 e3 movt r3=>lv_font_rigol_55,#0x16b
Replacing 0x16b7460 with 0x0168ac90 (montserrat_36) should be ok, but there is no other 55 size font for the large digits.
edit: it did change the font but only when the channel was opened, so obviously I'm editing in the wrong area. Also the font was much wider, but we do have horizontal space so it could be shifted to the left a bit.