dk / Prima

prima.eu.org
Other
106 stars 27 forks source link

Fails in `Object/Shaping.t` #102

Closed Tux closed 8 months ago

Tux commented 8 months ago

How do I debug this?

ok 50 - ()  - found char U+1d400 in Iosevka Fixed Curly Slab as glyph 528b (glyphs)
ok 51 - ()  - found char U+1d400 in Iosevka Fixed Curly Slab as glyph 528b (indexes)
not ok 52 - ()  - glyphs plotting

#   Failed test '()  - glyphs plotting'
#   at t/Object/Shaping.t line 678.

#   Failed test 'glyphs plotting'
#   at t/Object/Shaping.t line 595.
#          got: '28474'
#     expected: '24716'
ok 117 - (--no-fribidi)  - found char U+1d400 in Iosevka Fixed Curly Slab as glyph 528b (glyphs)
ok 118 - (--no-fribidi)  - found char U+1d400 in Iosevka Fixed Curly Slab as glyph 528b (indexes)
not ok 119 - (--no-fribidi)  - glyphs plotting
ok 146 - (--no-fribidi)  - ZWNJ has zero advance

#   Failed test '(--no-fribidi)  - glyphs plotting'
#   at t/Object/Shaping.t line 678.

#   Failed test 'glyphs plotting'
#   at t/Object/Shaping.t line 595.
#          got: '28474'
#     expected: '24716'
# Looks like you failed 1 test of 67.
# Looks like you failed 2 tests of 432.
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/432 subtests
        (less 10 skipped subtests: 420 okay)

Test Summary Report
-------------------
t/Object/Shaping.t (Wstat: 512 (exited 2) Tests: 432 Failed: 2)
  Failed tests:  52, 119
  Non-zero exit status: 2
Files=1, Tests=432, 23 wallclock secs ( 0.05 usr  0.01 sys + 19.23 cusr  0.52 csys = 19.81 CPU)
Result: FAIL
Linux 5.14.21-150400.24.88-default [openSUSE Leap 15.4]
This is perl 5, version 36, subversion 1 (v5.36.1) built for x86_64-linux-thread-multi-quadmath

This is the list of resolved dependencies of Prima.so:

Lib                                  Real path                            Package                        Size      Date                Refs
------------------------------------ ------------------------------------ ------------------------------ --------- ------------------- ----
/usr/lib64/libXinerama.so.1          /usr/lib64/libXinerama.so.1.0.0      libXinerama1-1.1.3-1.22.x86_64     10464 2018-05-25 22:01:28    6
/usr/lib64/libXi.so.6                /usr/lib64/libXi.so.6.1.0            libXi6-1.7.9-3.2.1.x86_64          68056 2020-01-15 15:48:30    6
/usr/lib64/libXrandr.so.2            /usr/lib64/libXrandr.so.2.2.0        libXrandr2-1.5.1-2.17.x86_64       43376 2018-05-25 22:01:22    7
/usr/lib64/libXcursor.so.1           /usr/lib64/libXcursor.so.1.0.2       libXcursor1-1.1.15-1.18.x86_64     43736 2018-05-25 22:01:22    7
/usr/lib64/libXfixes.so.3            /usr/lib64/libXfixes.so.3.1.0        libXfixes3-6.0.0-150400.1.4.x8     22656 2022-05-07 23:23:55    5
/usr/lib64/libXcomposite.so.1        /usr/lib64/libXcomposite.so.1.0.0    libXcomposite1-0.4.4-1.23.x86_     10320 2018-05-25 22:01:23    5
/usr/lib64/libXdamage.so.1           /usr/lib64/libXdamage.so.1.1.0       libXdamage1-1.1.4-1.23.x86_64      10336 2018-05-25 22:01:32    5
/usr/lib64/libxkbcommon.so.0         /usr/lib64/libxkbcommon.so.0.0.0     libxkbcommon0-1.3.0-150400.3.2    277224 2023-09-19 19:10:36    1
/usr/lib64/libwayland-cursor.so.0    /usr/lib64/libwayland-cursor.so.0.21 libwayland-cursor0-1.21.0-1504     31184 2023-06-27 09:09:25    4
/usr/lib64/libwayland-client.so.0    /usr/lib64/libwayland-client.so.0.21 libwayland-client0-1.21.0-1504     64952 2023-06-27 09:09:25    3
/usr/lib64/libwayland-egl.so.1       /usr/lib64/libwayland-egl.so.1.21.0  libwayland-egl1-99~1.21.0-1504      6072 2023-06-27 09:09:25    1
/usr/lib64/libepoxy.so.0             /usr/lib64/libepoxy.so.0.0.0         libepoxy0-1.5.9-150400.1.11.x8   1259376 2022-05-08 06:39:07    2
/lib64/librt.so.1                    /lib64/librt-2.31.so                 glibc-2.31-150300.63.1.x86_64      44904 2023-10-05 13:25:31    2
/usr/lib64/libatk-1.0.so.0           /usr/lib64/libatk-1.0.so.0.23609.1   libatk-1_0-0-2.36.0-150400.2.9    161784 2022-05-08 06:50:33    6
/usr/lib64/libatk-bridge-2.0.so.0    /usr/lib64/libatk-bridge-2.0.so.0.0. libatk-bridge-2_0-0-2.38.0-150    210528 2022-05-08 06:55:12   23
/usr/lib64/libdbus-1.so.3            /usr/lib64/libdbus-1.so.3.19.4       libdbus-1-3-1.12.2-150400.18.8    333720 2023-06-20 12:26:53   11
/usr/lib64/libsystemd.so.0           /usr/lib64/libsystemd.so.0.32.0      libsystemd0-249.16-150400.8.35    926744 2023-10-16 10:01:55   10
/usr/lib64/liblzma.so.5              /usr/lib64/liblzma.so.5.4.4          liblzma5-5.4.4-lp154.3.29.x86_    288824 2023-10-23 16:57:10    2
/usr/lib64/libzstd.so.1              /usr/lib64/libzstd.so.1.5.2          libzstd1-1.5.2-archiving.73.2.    752880 2022-01-27 09:41:00    2
/usr/lib64/liblz4.so.1               /usr/lib64/liblz4.so.1.9.4           liblz4-1-1.9.4-archiving.51.4.    145904 2023-09-27 23:37:11    1
/usr/lib64/libcap.so.2               /usr/lib64/libcap.so.2.63            libcap2-2.63-150400.3.3.1.x86_     39664 2023-06-26 17:05:34    1
/usr/lib64/libgcrypt.so.20           /usr/lib64/libgcrypt.so.20.3.4       libgcrypt20-1.9.4-150400.6.8.1   1297280 2023-03-08 21:04:09    3
/usr/lib64/libgpg-error.so.0         /usr/lib64/libgpg-error.so.0.32.0    libgpg-error0-1.42-150400.1.10    146592 2022-05-07 23:18:28    1
/usr/lib64/libatspi.so.0             /usr/lib64/libatspi.so.0.0.1         libatspi0-2.42.0-150400.2.7.x8    238912 2022-05-08 06:50:07   21
/usr/lib64/libpng12.so.0             /usr/lib64/libpng12.so.0.57.0        libpng12-0-1.2.57-2.18.x86_64     186456 2018-05-25 20:13:30    3
/usr/lib64/libtiff.so.6              /usr/lib64/libtiff.so.6.0.2          libtiff6-4.6.0-lp154.203.1.x86    540384 2023-10-06 09:42:20    8
/usr/lib64/libjbig.so.2              /usr/lib64/libjbig.so.2.1            libjbig2-2.1-3.2.1.x86_64          50176 2021-12-14 18:02:29    1
/usr/lib64/libwebp.so.7              /usr/lib64/libwebp.so.7.1.8          libwebp7-1.3.2-lp154.20.1.x86_    445144 2023-10-06 09:43:27    4
/usr/lib64/libsharpyuv.so.0          /usr/lib64/libsharpyuv.so.0.0.1      libsharpyuv0-1.3.2-lp154.20.1.     18488 2023-10-06 09:43:27    3
/usr/lib64/libwebpdemux.so.2         /usr/lib64/libwebpdemux.so.2.0.14    libwebpdemux2-1.3.2-lp154.20.1     18616 2023-10-06 09:43:27    5
/usr/lib64/libwebpmux.so.3           /usr/lib64/libwebpmux.so.3.0.13      libwebpmux3-1.3.2-lp154.20.1.x     39232 2023-10-06 09:43:27    5
/usr/lib64/libXpm.so.4               /usr/lib64/libXpm.so.4.11.0          libXpm4-3.5.12-150000.3.10.1.x     76968 2023-10-02 10:19:27    5
/usr/lib64/libgomp.so.1              /usr/lib64/libgomp.so.1.0.0          libgomp1-13.2.1+git7813-150000    331576 2023-10-13 22:13:53    3
dk commented 8 months ago

If you $i->save('1.bmp') with results of text_out(text) and text_out(text_shape(text)) you would see that the first result has a huge gaps between glyphs an looks like "1 2" and the second is okay and looks like it should "12". So I'd assume that this is either a bad font or much less probable a bug in harfbuzz (the shaping library), because what font designer in a sane mind would do that.

You can run this f ex:

> hb-view ~/.fonts/misc/iosevka-curly-slab.ttc 12

        ▃▉▌           ▃▙▄▅▅▄▟▄      
    ▁▃▙▆ ▉          ▗          ▖    
   ▙▆    ▉          ▌▏              
         ▉                    ▉     
         ▉                          
         ▉                  ▂▙      
         ▉               ▁▖▄▇       
         ▉             ▃▙▆          
         ▉             ▇            
         ▉                     ▖    
         ▉          ▋▎        ▉     
    ▗▃▃▃▃▃ ▃▃▃▃▖    ▌▃▃▃▃▃▃▃▃▃▃▌    
dk commented 8 months ago

image

that's these gaps I'm talking about.

I'd ignore that error, if anything

Tux commented 8 months ago

hb-view /usr/share/fonts/truetype/IosevkaCurlySlab-Regular.ttc 12 20231031161957

rpm -qf /usr/share/fonts/truetype/IosevkaCurlySlab-Regular.ttc
iosevka-curly-slab-fonts-5.0.0-2.1.noarch

I don't need these fonts for anything.

$ rpm -qa | grep -i iosevka | xargs sudo zypper rm`
$ make test
:
:
All tests successful.
Files=42, Tests=10192, 44 wallclock secs ( 0.87 usr  0.09 sys + 57.45 cusr  1.87 csys = 60.28 CPU)
Result: PASS

Maybe filter this buggy font in your tests :) Thanks for the hints