basic/qa/vba_tests/format.vb                     |    3 -
 sc/qa/unit/data/contentCSV/numberFormat.csv      |    2 
 sc/qa/unit/data/contentCSV/testNumberFormats.csv |   56 +++++++++++------------
 sc/qa/unit/data/ods/formats.ods                  |binary
 svl/qa/unit/svl.cxx                              |   18 ++++---
 svl/source/numbers/zformat.cxx                   |    8 ++-
 6 files changed, 46 insertions(+), 41 deletions(-)

New commits:
commit 5378ce372ae29fcb06c5134c18f935c1c7ea3c51
Author:     Laurent Balland <laurent.ball...@mailo.fr>
AuthorDate: Sun Jan 7 10:48:14 2024 +0100
Commit:     Laurent Balland <laurent.ball...@mailo.fr>
CommitDate: Sat Feb 17 08:59:22 2024 +0100

    tdf#158890 Replace '?' with figure blank
    
    ...instead of regular blank
    Do not modify other blanks (thousand separator, fraction separator)
    
    Change-Id: I82f8023a4e55d8091545191dee55a88aba25dbdd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161737
    Tested-by: Jenkins
    Reviewed-by: Laurent Balland <laurent.ball...@mailo.fr>

diff --git a/basic/qa/vba_tests/format.vb b/basic/qa/vba_tests/format.vb
index 4e62e87e498e..67abc5ffe24a 100644
--- a/basic/qa/vba_tests/format.vb
+++ b/basic/qa/vba_tests/format.vb
@@ -148,7 +148,8 @@ Sub Custom_Number_Format_Sample()
     TestUtil.AssertEqual(Format(123456, "####E0"),           "12E4",         
"Format(123456, ""####E0"")")
     TestUtil.AssertEqual(Format(2345.25, "$#,###.##"),       "$2,345.25",    
"Format(2345.25, ""$#,###.##"")")
     TestUtil.AssertEqual(Format(0.25, "##.###\%"),           ".25%",         
"Format(0.25, ""##.###\%"")")
-    TestUtil.AssertEqual(Format(12.25, "0.???"),             "12.25 ",       
"Format(12.25, ""0.???"")")
+    ' tdf#158890 blank replaced by figure blank
+    TestUtil.AssertEqual(Format(12.25, "0.???"),             "12.25 ",       
"Format(12.25, ""0.???"")")
 
     Exit Sub
 errorHandler:
diff --git a/sc/qa/unit/data/contentCSV/numberFormat.csv 
b/sc/qa/unit/data/contentCSV/numberFormat.csv
index c6aaf5a149b6..6f19b3693c31 100644
--- a/sc/qa/unit/data/contentCSV/numberFormat.csv
+++ b/sc/qa/unit/data/contentCSV/numberFormat.csv
@@ -6,4 +6,4 @@
 FALSE,TRUE
 />
 258.9E3,-953E-06
-0.5  ,"/ 123.46"
+0.5  ,"/ 123.46"
diff --git a/sc/qa/unit/data/contentCSV/testNumberFormats.csv 
b/sc/qa/unit/data/contentCSV/testNumberFormats.csv
index 266f4baa8a46..476a3eaad49e 100644
--- a/sc/qa/unit/data/contentCSV/testNumberFormats.csv
+++ b/sc/qa/unit/data/contentCSV/testNumberFormats.csv
@@ -1,32 +1,32 @@
 ;Integer;;;Thousand separator;;;Fraction;;;Fraction + Thousand 
separator;;;Scientific;;;Engineering;;
 
Format;"""format=""000000";"""format=""??????";"""format=""??0000";"""format=""000,000";"""format=""???,???";"""format=""??0,000";"""format=""000
 ?/?";"""format=""??? ?/?";"""format=""?00 ?/?";"""format=""0,000 
?/?";"""format=""?,??? ?/?";"""format=""?,?00 
?/?";"""format=""0.000E+00";"""format=""?.###E+00";"""format=""?.0##E+00";"""format=""000E+00";"""format=""???E+00";"""format=""?00E+00"
-0.123456;format=000000;format=      ;format=  0000;format=000,000;format=      
 ;format=  0,000;format=000 1/8;format=    1/8;format= 00 1/8;format=0,000 
1/8;format=      1/8;format=   00 
1/8;format=1.235E-01;format=1.235E-01;format=1.235E-01;format=123E-03;format=123E-03;format=123E-03
-1.23456;format=000001;format=     1;format=  0001;format=000,001;format=      
1;format=  0,001;format=001 2/9;format=  1 2/9;format= 01 2/9;format=0,001 
2/9;format=    1 2/9;format=   01 
2/9;format=1.235E+00;format=1.235E+00;format=1.235E+00;format=001E+00;format=  
1E+00;format= 01E+00
-12.3456;format=000012;format=    12;format=  0012;format=000,012;format=     
12;format=  0,012;format=012 1/3;format= 12 1/3;format= 12 1/3;format=0,012 
1/3;format=   12 1/3;format=   12 
1/3;format=1.235E+01;format=1.235E+01;format=1.235E+01;format=012E+00;format= 
12E+00;format= 12E+00
-123.456;format=000123;format=   123;format=  0123;format=000,123;format=    
123;format=  0,123;format=123 4/9;format=123 4/9;format=123 4/9;format=0,123 
4/9;format=  123 4/9;format=  123 
4/9;format=1.235E+02;format=1.235E+02;format=1.235E+02;format=123E+00;format=123E+00;format=123E+00
-1234.56;format=001235;format=  1235;format=  1235;format=001,235;format=  
1,235;format=  1,235;format=1234 5/9;format=1234 5/9;format=1234 
5/9;format=1,234 5/9;format=1,234 5/9;format=1,234 
5/9;format=1.235E+03;format=1.235E+03;format=1.235E+03;format=001E+03;format=  
1E+03;format= 01E+03
-12345.6;format=012346;format= 12346;format= 12346;format=012,346;format= 
12,346;format= 12,346;format=12345 3/5;format=12345 3/5;format=12345 
3/5;format=12,345 3/5;format=12,345 3/5;format=12,345 
3/5;format=1.235E+04;format=1.235E+04;format=1.235E+04;format=012E+03;format= 
12E+03;format= 12E+03
-123456;format=123456;format=123456;format=123456;format=123,456;format=123,456;format=123,456;format=123456
    ;format=123456    ;format=123456    ;format=123,456    ;format=123,456    
;format=123,456    
;format=1.235E+05;format=1.235E+05;format=1.235E+05;format=123E+03;format=123E+03;format=123E+03
-1234560;format=1234560;format=1234560;format=1234560;format=1,234,560;format=1,234,560;format=1,234,560;format=1234560
    ;format=1234560    ;format=1234560    ;format=1,234,560    
;format=1,234,560    ;format=1,234,560    
;format=1.235E+06;format=1.235E+06;format=1.235E+06;format=001E+06;format=  
1E+06;format= 01E+06
-12345600;format=12345600;format=12345600;format=12345600;format=12,345,600;format=12,345,600;format=12,345,600;format=12345600
    ;format=12345600    ;format=12345600    ;format=12,345,600    
;format=12,345,600    ;format=12,345,600    
;format=1.235E+07;format=1.235E+07;format=1.235E+07;format=012E+06;format= 
12E+06;format= 12E+06
--0.123456;format=000000;format=      ;format=  0000;format=000,000;format=     
  ;format=  0,000;-format=000 1/8;-format=    1/8;-format= 00 1/8;-format=0,000 
1/8;-format=      1/8;-format=   00 
1/8;-format=1.235E-01;-format=1.235E-01;-format=1.235E-01;-format=123E-03;-format=123E-03;-format=123E-03
--1.23456;-format=000001;-format=     1;-format=  0001;-format=000,001;-format= 
     1;-format=  0,001;-format=001 2/9;-format=  1 2/9;-format= 01 
2/9;-format=0,001 2/9;-format=    1 2/9;-format=   01 
2/9;-format=1.235E+00;-format=1.235E+00;-format=1.235E+00;-format=001E+00;-format=
  1E+00;-format= 01E+00
--12.3456;-format=000012;-format=    12;-format=  0012;-format=000,012;-format= 
    12;-format=  0,012;-format=012 1/3;-format= 12 1/3;-format= 12 
1/3;-format=0,012 1/3;-format=   12 1/3;-format=   12 
1/3;-format=1.235E+01;-format=1.235E+01;-format=1.235E+01;-format=012E+00;-format=
 12E+00;-format= 12E+00
--123.456;-format=000123;-format=   123;-format=  0123;-format=000,123;-format= 
   123;-format=  0,123;-format=123 4/9;-format=123 4/9;-format=123 
4/9;-format=0,123 4/9;-format=  123 4/9;-format=  123 
4/9;-format=1.235E+02;-format=1.235E+02;-format=1.235E+02;-format=123E+00;-format=123E+00;-format=123E+00
--1234.56;-format=001235;-format=  1235;-format=  1235;-format=001,235;-format= 
 1,235;-format=  1,235;-format=1234 5/9;-format=1234 5/9;-format=1234 
5/9;-format=1,234 5/9;-format=1,234 5/9;-format=1,234 
5/9;-format=1.235E+03;-format=1.235E+03;-format=1.235E+03;-format=001E+03;-format=
  1E+03;-format= 01E+03
--12345.6;-format=012346;-format= 12346;-format= 12346;-format=012,346;-format= 
12,346;-format= 12,346;-format=12345 3/5;-format=12345 3/5;-format=12345 
3/5;-format=12,345 3/5;-format=12,345 3/5;-format=12,345 
3/5;-format=1.235E+04;-format=1.235E+04;-format=1.235E+04;-format=012E+03;-format=
 12E+03;-format= 12E+03
--123456;-format=123456;-format=123456;-format=123456;-format=123,456;-format=123,456;-format=123,456;-format=123456
    ;-format=123456    ;-format=123456    ;-format=123,456    ;-format=123,456  
  ;-format=123,456    
;-format=1.235E+05;-format=1.235E+05;-format=1.235E+05;-format=123E+03;-format=123E+03;-format=123E+03
--1234560;-format=1234560;-format=1234560;-format=1234560;-format=1,234,560;-format=1,234,560;-format=1,234,560;-format=1234560
    ;-format=1234560    ;-format=1234560    ;-format=1,234,560    
;-format=1,234,560    ;-format=1,234,560    
;-format=1.235E+06;-format=1.235E+06;-format=1.235E+06;-format=001E+06;-format= 
 1E+06;-format= 01E+06
--12345600;-format=12345600;-format=12345600;-format=12345600;-format=12,345,600;-format=12,345,600;-format=12,345,600;-format=12345600
    ;-format=12345600    ;-format=12345600    ;-format=12,345,600    
;-format=12,345,600    ;-format=12,345,600    
;-format=1.235E+07;-format=1.235E+07;-format=1.235E+07;-format=012E+06;-format= 
12E+06;-format= 12E+06
-0.2;format=000000;format=      ;format=  0000;format=000,000;format=       
;format=  0,000;format=000 1/5;format=    1/5;format= 00 1/5;format=0,000 
1/5;format=      1/5;format=   00 
1/5;format=2.000E-01;format=2E-01;format=2.0E-01;format=200E-03;format=200E-03;format=200E-03
-2;format=000002;format=     2;format=  0002;format=000,002;format=      
2;format=  0,002;format=002    ;format=  2    ;format= 02    ;format=0,002    
;format=    2    ;format=   02    
;format=2.000E+00;format=2E+00;format=2.0E+00;format=002E+00;format=  
2E+00;format= 02E+00
-20;format=000020;format=    20;format=  0020;format=000,020;format=     
20;format=  0,020;format=020    ;format= 20    ;format= 20    ;format=0,020    
;format=   20    ;format=   20    
;format=2.000E+01;format=2E+01;format=2.0E+01;format=020E+00;format= 
20E+00;format= 20E+00
-200;format=000200;format=   200;format=  0200;format=000,200;format=    
200;format=  0,200;format=200    ;format=200    ;format=200    ;format=0,200    
;format=  200    ;format=  200    
;format=2.000E+02;format=2E+02;format=2.0E+02;format=200E+00;format=200E+00;format=200E+00
-2000;format=002000;format=  2000;format=  2000;format=002,000;format=  
2,000;format=  2,000;format=2000    ;format=2000    ;format=2000    
;format=2,000    ;format=2,000    ;format=2,000    
;format=2.000E+03;format=2E+03;format=2.0E+03;format=002E+03;format=  
2E+03;format= 02E+03
-20000;format=020000;format= 20000;format= 20000;format=020,000;format= 
20,000;format= 20,000;format=20000    ;format=20000    ;format=20000    
;format=20,000    ;format=20,000    ;format=20,000    
;format=2.000E+04;format=2E+04;format=2.0E+04;format=020E+03;format= 
20E+03;format= 20E+03
-200000;format=200000;format=200000;format=200000;format=200,000;format=200,000;format=200,000;format=200000
    ;format=200000    ;format=200000    ;format=200,000    ;format=200,000    
;format=200,000    
;format=2.000E+05;format=2E+05;format=2.0E+05;format=200E+03;format=200E+03;format=200E+03
-2000000;format=2000000;format=2000000;format=2000000;format=2,000,000;format=2,000,000;format=2,000,000;format=2000000
    ;format=2000000    ;format=2000000    ;format=2,000,000    
;format=2,000,000    ;format=2,000,000    
;format=2.000E+06;format=2E+06;format=2.0E+06;format=002E+06;format=  
2E+06;format= 02E+06
-20000000;format=20000000;format=20000000;format=20000000;format=20,000,000;format=20,000,000;format=20,000,000;format=20000000
    ;format=20000000    ;format=20000000    ;format=20,000,000    
;format=20,000,000    ;format=20,000,000    
;format=2.000E+07;format=2E+07;format=2.0E+07;format=020E+06;format= 
20E+06;format= 20E+06
-200000000;format=200000000;format=200000000;format=200000000;format=200,000,000;format=200,000,000;format=200,000,000;format=200000000
    ;format=200000000    ;format=200000000    ;format=200,000,000    
;format=200,000,000    ;format=200,000,000    
;format=2.000E+08;format=2E+08;format=2.0E+08;format=200E+06;format=200E+06;format=200E+06
+0.123456;format=000000;format=      ;format=  0000;format=000,000;format=      
 ;format=  0,000;format=000 1/8;format=    1/8;format= 00 1/8;format=0,000 
1/8;format=      1/8;format=   00 
1/8;format=1.235E-01;format=1.235E-01;format=1.235E-01;format=123E-03;format=123E-03;format=123E-03
+1.23456;format=000001;format=     1;format=  0001;format=000,001;format=      
1;format=  0,001;format=001 2/9;format=  1 2/9;format= 01 2/9;format=0,001 
2/9;format=    1 2/9;format=   01 
2/9;format=1.235E+00;format=1.235E+00;format=1.235E+00;format=001E+00;format=  
1E+00;format= 01E+00
+12.3456;format=000012;format=    12;format=  0012;format=000,012;format=     
12;format=  0,012;format=012 1/3;format= 12 1/3;format= 12 1/3;format=0,012 
1/3;format=   12 1/3;format=   12 
1/3;format=1.235E+01;format=1.235E+01;format=1.235E+01;format=012E+00;format= 
12E+00;format= 12E+00
+123.456;format=000123;format=   123;format=  0123;format=000,123;format=    
123;format=  0,123;format=123 4/9;format=123 4/9;format=123 4/9;format=0,123 
4/9;format=  123 4/9;format=  123 
4/9;format=1.235E+02;format=1.235E+02;format=1.235E+02;format=123E+00;format=123E+00;format=123E+00
+1234.56;format=001235;format=  1235;format=  1235;format=001,235;format=  
1,235;format=  1,235;format=1234 5/9;format=1234 5/9;format=1234 
5/9;format=1,234 5/9;format=1,234 5/9;format=1,234 
5/9;format=1.235E+03;format=1.235E+03;format=1.235E+03;format=001E+03;format=  
1E+03;format= 01E+03
+12345.6;format=012346;format= 12346;format= 12346;format=012,346;format= 
12,346;format= 12,346;format=12345 3/5;format=12345 3/5;format=12345 
3/5;format=12,345 3/5;format=12,345 3/5;format=12,345 
3/5;format=1.235E+04;format=1.235E+04;format=1.235E+04;format=012E+03;format= 
12E+03;format= 12E+03
+123456;format=123456;format=123456;format=123456;format=123,456;format=123,456;format=123,456;format=123456
    ;format=123456    ;format=123456    ;format=123,456    ;format=123,456    
;format=123,456    
;format=1.235E+05;format=1.235E+05;format=1.235E+05;format=123E+03;format=123E+03;format=123E+03
+1234560;format=1234560;format=1234560;format=1234560;format=1,234,560;format=1,234,560;format=1,234,560;format=1234560
    ;format=1234560    ;format=1234560    ;format=1,234,560    
;format=1,234,560    ;format=1,234,560    
;format=1.235E+06;format=1.235E+06;format=1.235E+06;format=001E+06;format=  
1E+06;format= 01E+06
+12345600;format=12345600;format=12345600;format=12345600;format=12,345,600;format=12,345,600;format=12,345,600;format=12345600
    ;format=12345600    ;format=12345600    ;format=12,345,600    
;format=12,345,600    ;format=12,345,600    
;format=1.235E+07;format=1.235E+07;format=1.235E+07;format=012E+06;format= 
12E+06;format= 12E+06
+-0.123456;format=000000;format=      ;format=  0000;format=000,000;format=     
  ;format=  0,000;-format=000 1/8;-format=    1/8;-format= 00 1/8;-format=0,000 
1/8;-format=      1/8;-format=   00 
1/8;-format=1.235E-01;-format=1.235E-01;-format=1.235E-01;-format=123E-03;-format=123E-03;-format=123E-03
+-1.23456;-format=000001;-format=     1;-format=  0001;-format=000,001;-format= 
     1;-format=  0,001;-format=001 2/9;-format=  1 2/9;-format= 01 
2/9;-format=0,001 2/9;-format=    1 2/9;-format=   01 
2/9;-format=1.235E+00;-format=1.235E+00;-format=1.235E+00;-format=001E+00;-format=
  1E+00;-format= 01E+00
+-12.3456;-format=000012;-format=    12;-format=  0012;-format=000,012;-format= 
    12;-format=  0,012;-format=012 1/3;-format= 12 1/3;-format= 12 
1/3;-format=0,012 1/3;-format=   12 1/3;-format=   12 
1/3;-format=1.235E+01;-format=1.235E+01;-format=1.235E+01;-format=012E+00;-format=
 12E+00;-format= 12E+00
+-123.456;-format=000123;-format=   123;-format=  0123;-format=000,123;-format= 
   123;-format=  0,123;-format=123 4/9;-format=123 4/9;-format=123 
4/9;-format=0,123 4/9;-format=  123 4/9;-format=  123 
4/9;-format=1.235E+02;-format=1.235E+02;-format=1.235E+02;-format=123E+00;-format=123E+00;-format=123E+00
+-1234.56;-format=001235;-format=  1235;-format=  1235;-format=001,235;-format= 
 1,235;-format=  1,235;-format=1234 5/9;-format=1234 5/9;-format=1234 
5/9;-format=1,234 5/9;-format=1,234 5/9;-format=1,234 
5/9;-format=1.235E+03;-format=1.235E+03;-format=1.235E+03;-format=001E+03;-format=
  1E+03;-format= 01E+03
+-12345.6;-format=012346;-format= 12346;-format= 12346;-format=012,346;-format= 
12,346;-format= 12,346;-format=12345 3/5;-format=12345 3/5;-format=12345 
3/5;-format=12,345 3/5;-format=12,345 3/5;-format=12,345 
3/5;-format=1.235E+04;-format=1.235E+04;-format=1.235E+04;-format=012E+03;-format=
 12E+03;-format= 12E+03
+-123456;-format=123456;-format=123456;-format=123456;-format=123,456;-format=123,456;-format=123,456;-format=123456
    ;-format=123456    ;-format=123456    ;-format=123,456    ;-format=123,456  
  ;-format=123,456    
;-format=1.235E+05;-format=1.235E+05;-format=1.235E+05;-format=123E+03;-format=123E+03;-format=123E+03
+-1234560;-format=1234560;-format=1234560;-format=1234560;-format=1,234,560;-format=1,234,560;-format=1,234,560;-format=1234560
    ;-format=1234560    ;-format=1234560    ;-format=1,234,560    
;-format=1,234,560    ;-format=1,234,560    
;-format=1.235E+06;-format=1.235E+06;-format=1.235E+06;-format=001E+06;-format= 
 1E+06;-format= 01E+06
+-12345600;-format=12345600;-format=12345600;-format=12345600;-format=12,345,600;-format=12,345,600;-format=12,345,600;-format=12345600
    ;-format=12345600    ;-format=12345600    ;-format=12,345,600    
;-format=12,345,600    ;-format=12,345,600    
;-format=1.235E+07;-format=1.235E+07;-format=1.235E+07;-format=012E+06;-format= 
12E+06;-format= 12E+06
+0.2;format=000000;format=      ;format=  0000;format=000,000;format=       
;format=  0,000;format=000 1/5;format=    1/5;format= 00 1/5;format=0,000 
1/5;format=      1/5;format=   00 
1/5;format=2.000E-01;format=2E-01;format=2.0E-01;format=200E-03;format=200E-03;format=200E-03
+2;format=000002;format=     2;format=  0002;format=000,002;format=      
2;format=  0,002;format=002    ;format=  2    ;format= 02    ;format=0,002    
;format=    2    ;format=   02    
;format=2.000E+00;format=2E+00;format=2.0E+00;format=002E+00;format=  
2E+00;format= 02E+00
+20;format=000020;format=    20;format=  0020;format=000,020;format=     
20;format=  0,020;format=020    ;format= 20    ;format= 20    ;format=0,020    
;format=   20    ;format=   20    
;format=2.000E+01;format=2E+01;format=2.0E+01;format=020E+00;format= 
20E+00;format= 20E+00
+200;format=000200;format=   200;format=  0200;format=000,200;format=    
200;format=  0,200;format=200    ;format=200    ;format=200    ;format=0,200    
;format=  200    ;format=  200    
;format=2.000E+02;format=2E+02;format=2.0E+02;format=200E+00;format=200E+00;format=200E+00
+2000;format=002000;format=  2000;format=  2000;format=002,000;format=  
2,000;format=  2,000;format=2000    ;format=2000    ;format=2000    
;format=2,000    ;format=2,000    ;format=2,000    
;format=2.000E+03;format=2E+03;format=2.0E+03;format=002E+03;format=  
2E+03;format= 02E+03
+20000;format=020000;format= 20000;format= 20000;format=020,000;format= 
20,000;format= 20,000;format=20000    ;format=20000    ;format=20000    
;format=20,000    ;format=20,000    ;format=20,000    
;format=2.000E+04;format=2E+04;format=2.0E+04;format=020E+03;format= 
20E+03;format= 20E+03
+200000;format=200000;format=200000;format=200000;format=200,000;format=200,000;format=200,000;format=200000
    ;format=200000    ;format=200000    ;format=200,000    ;format=200,000    
;format=200,000    
;format=2.000E+05;format=2E+05;format=2.0E+05;format=200E+03;format=200E+03;format=200E+03
+2000000;format=2000000;format=2000000;format=2000000;format=2,000,000;format=2,000,000;format=2,000,000;format=2000000
    ;format=2000000    ;format=2000000    ;format=2,000,000    
;format=2,000,000    ;format=2,000,000    
;format=2.000E+06;format=2E+06;format=2.0E+06;format=002E+06;format=  
2E+06;format= 02E+06
+20000000;format=20000000;format=20000000;format=20000000;format=20,000,000;format=20,000,000;format=20,000,000;format=20000000
    ;format=20000000    ;format=20000000    ;format=20,000,000    
;format=20,000,000    ;format=20,000,000    
;format=2.000E+07;format=2E+07;format=2.0E+07;format=020E+06;format= 
20E+06;format= 20E+06
+200000000;format=200000000;format=200000000;format=200000000;format=200,000,000;format=200,000,000;format=200,000,000;format=200000000
    ;format=200000000    ;format=200000000    ;format=200,000,000    
;format=200,000,000    ;format=200,000,000    
;format=2.000E+08;format=2E+08;format=2.0E+08;format=200E+06;format=200E+06;format=200E+06
 ;;;;;;;;;;;;;;;;;;
 0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18
diff --git a/sc/qa/unit/data/ods/formats.ods b/sc/qa/unit/data/ods/formats.ods
index 27a0601f640e..7522ae980445 100644
Binary files a/sc/qa/unit/data/ods/formats.ods and 
b/sc/qa/unit/data/ods/formats.ods differ
diff --git a/svl/qa/unit/svl.cxx b/svl/qa/unit/svl.cxx
index 4fa56f4bccd4..d24729bc7f43 100644
--- a/svl/qa/unit/svl.cxx
+++ b/svl/qa/unit/svl.cxx
@@ -1368,6 +1368,8 @@ void Test::testUserDefinedNumberFormats()
     LanguageType eLang = LANGUAGE_ENGLISH_US;
     OUString sCode, sExpected;
     SvNumberFormatter aFormatter(m_xContext, eLang);
+    // tdf#158890 replace '?' with figure blank (0x2007)
+    constexpr OUString sBlankDigit = u" "_ustr;
     {  // tdf#97835: suppress decimal separator
         sCode = "0.##\" m\"";
         sExpected = "12 m";
@@ -1461,7 +1463,7 @@ void Test::testUserDefinedNumberFormats()
     }
     {  // tdf#102507: left alignment of denominator
         sCode = "# ?/???";
-        sExpected = "3 1/2  ";
+        sExpected = OUString::Concat( u"3 1/2"_ustr ) + sBlankDigit + 
sBlankDigit;
         checkPreviewString(aFormatter, sCode, 3.5, eLang, sExpected);
     }
     {  // tdf#100594: forced denominator
@@ -1505,15 +1507,15 @@ void Test::testUserDefinedNumberFormats()
         sExpected = "15/ 12";
         checkPreviewString(aFormatter, sCode, 1.2345667, eLang, sExpected);
         sCode = "# ?/ ???";
-        sExpected = "3 1/ 2  ";
+        sExpected = OUString::Concat( u"3 1/ 2"_ustr ) + sBlankDigit + 
sBlankDigit;
         checkPreviewString(aFormatter, sCode, 3.5, eLang, sExpected);
     }
     {  // Display 1.96 as 2 and not 1 1/1
         sCode = "# ?/?";
-        sExpected = "2    ";
+        sExpected = OUString::Concat( u"2 "_ustr ) + sBlankDigit + u" "_ustr + 
sBlankDigit;
         checkPreviewString(aFormatter, sCode, 1.96, eLang, sExpected);
         sCode = "# ?/ ?";
-        sExpected = "2     ";
+        sExpected = OUString::Concat( u"2 "_ustr ) + sBlankDigit + u"  "_ustr 
+ sBlankDigit;
         checkPreviewString(aFormatter, sCode, 1.96, eLang, sExpected);
         sCode = "# #/#";
         sExpected = "2";
@@ -1745,7 +1747,7 @@ void Test::testUserDefinedNumberFormats()
     }
     {   // tdf#156449 Use '?' in exponent of scientific number
         sCode =     "0.00E+?0";
-        sExpected = "3.14E+ 0"; // before change it was "3.14E+00"
+        sExpected = OUString::Concat( u"3.14E+"_ustr ) + sBlankDigit + 
u"0"_ustr; // before change it was "3.14E+00"
         checkPreviewString(aFormatter, sCode, M_PI, eLang, sExpected);
         // There should be at least one '0' in exponent
         sCode =     "0.00E+??";
@@ -1809,11 +1811,11 @@ void Test::testUserDefinedNumberFormats()
     }
     {   // tdf#117575 treat thousand separator with '?' in integer part
         sCode = "\"Value= \"?,??0.00";
-        sExpected = "Value=     3.14";
+        sExpected = OUString::Concat( u"Value= "_ustr ) + sBlankDigit + u" 
"_ustr + sBlankDigit + sBlankDigit + u"3.14"_ustr;
         checkPreviewString(aFormatter, sCode, M_PI, LANGUAGE_ENGLISH_US, 
sExpected);
-        sExpected = "Value=    12.00";
+        sExpected = OUString::Concat( u"Value= "_ustr ) + sBlankDigit + u" 
"_ustr + sBlankDigit + u"12.00"_ustr;
         checkPreviewString(aFormatter, sCode, 12, LANGUAGE_ENGLISH_US, 
sExpected);
-        sExpected = "Value=   123.00";
+        sExpected = OUString::Concat( u"Value= "_ustr ) + sBlankDigit + u" 
123.00"_ustr;
         checkPreviewString(aFormatter, sCode, 123, LANGUAGE_ENGLISH_US, 
sExpected);
         sExpected = "Value= 1,234.00";
         checkPreviewString(aFormatter, sCode, 1234, LANGUAGE_ENGLISH_US, 
sExpected);
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index b5c8757ef2e6..11071b5caa17 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -64,6 +64,8 @@ const double EXP_ABS_UPPER_BOUND = 1.0E15;  // use 
exponential notation above th
 
 constexpr sal_Int32 kTimeSignificantRound = 7;  // Round (date+)time at 7 
decimals
                                                 // (+5 of 86400 == 12 
significant digits).
+
+const sal_Unicode cBlankDigit = 0x2007;     // tdf#158890 use figure space for 
'?'
 } // namespace
 
 const double D_MAX_U_INT32 = double(0xffffffff);      // 4294967295.0
@@ -4549,7 +4551,7 @@ bool SvNumberformat::ImpDecimalFill( OUStringBuffer& 
sStr,  // number string
                         }
                         else if ( c == '?' )
                         {
-                            sStr[ k ] = ' ';
+                            sStr[ k ] = cBlankDigit;
                             bFilled = true;
                         }
                         else if ( !bFilled ) // #
@@ -4708,7 +4710,7 @@ bool SvNumberformat::ImpNumberFillWithThousands( 
OUStringBuffer& sBuff,  // numb
                         sBuff.insert(0, '0');
                         break;
                     case '?':
-                        sBuff.insert(0, ' ');
+                        sBuff.insert(0, cBlankDigit);
                         break;
                     }
                 }
@@ -4848,7 +4850,7 @@ bool SvNumberformat::ImpNumberFill( OUStringBuffer& 
sBuff, // number string
                         sBuff.insert(0, '0');
                         break;
                     case '?':
-                        sBuff.insert(nPosInsertBlank, ' ');
+                        sBuff.insert(nPosInsertBlank, cBlankDigit);
                         break;
                     }
                 }

Reply via email to