Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test_gradient.py fails for i586 #913

Closed
pgajdos opened this issue Jul 29, 2019 · 14 comments
Closed

test_gradient.py fails for i586 #913

pgajdos opened this issue Jul 29, 2019 · 14 comments
Labels
Milestone

Comments

@pgajdos
Copy link

@pgajdos pgajdos commented Jul 29, 2019

[  114s] /home/abuild/rpmbuild/BUILD/WeasyPrint-48/weasyprint/tests/test_draw/__init__.py:60: in assert_pixels
[  114s]     name, expected_width, expected_height, pixels, expected_raw)
[  114s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  114s] 
[  114s] name = 'linear_gradient', width = 9, height = 5
[  114s] raw = b'\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f...7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff\x7f\x00\x7f\xff'
[  114s] expected_raw = b'\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80...80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff\x80\x00\x80\xff'
[  114s] tolerance = 0
[  114s] 
[  114s]     def assert_pixels_equal(name, width, height, raw, expected_raw, tolerance=0):
[  114s]         """Take 2 matrices of pixels and assert that they are the same."""
[  114s]         if raw != expected_raw:  # pragma: no cover
[  114s]             for i, (value, expected) in enumerate(zip(raw, expected_raw)):
[  114s]                 if abs(value - expected) > tolerance:
[  114s]                     write_png(name, raw, width, height)
[  114s]                     write_png(name + '.expected', expected_raw,
[  114s]                               width, height)
[  114s]                     pixel_n = i // 4
[  114s]                     x = pixel_n // width
[  114s]                     y = pixel_n % width
[  114s]                     i % 4
[  114s]                     pixel = tuple(list(raw[i:i + 4]))
[  114s]                     expected_pixel = tuple(list(
[  114s]                         expected_raw[i:i + 4]))
[  114s]                     assert 0, (
[  114s]                         'Pixel (%i, %i) in %s: expected rgba%s, got rgba%s'
[  114s] >                       % (x, y, name, expected_pixel, pixel))
[  114s] E                   AssertionError: Pixel (0, 0) in linear_gradient: expected rgba(128, 0, 128, 255), got rgba(127, 0, 127, 255)
[  114s] 
[  114s] /home/abuild/rpmbuild/BUILD/WeasyPrint-48/weasyprint/tests/test_draw/__init__.py:164: AssertionError
[  114s] ------------------------------ Captured log call -------------------------------
[  114s] INFO     weasyprint.progress:__init__.py:109 Step 1 - Fetching and parsing HTML - HTML string
[  114s] INFO     weasyprint.progress:__init__.py:317 Step 2 - Fetching and parsing CSS - CSS string
[  114s] INFO     weasyprint.progress:__init__.py:66 Step 3 - Applying CSS
[  114s] INFO     weasyprint.progress:document.py:369 Step 4 - Creating formatting structure
[  114s] INFO     weasyprint.progress:pages.py:791 Step 5 - Creating layout - Page 1
[  114s] INFO     weasyprint.progress:document.py:734 Step 6 - Drawing
[  114s] =============================== warnings summary ===============================

Tested with 46, 47 and 48.

Let me know if I can help somehow.

@pgajdos
Copy link
Author

@pgajdos pgajdos commented Jul 29, 2019

(it is test_linear_gradients_7)

Loading

@pgajdos
Copy link
Author

@pgajdos pgajdos commented Jul 29, 2019

This is with python 3.7.

Loading

@liZe
Copy link
Member

@liZe liZe commented Jul 29, 2019

Thank you for this issue.

What's your version of Cairo?

Loading

@pgajdos
Copy link
Author

@pgajdos pgajdos commented Jul 30, 2019

Cairo version is 1.16.0. Here is full build log.

Loading

@liZe
Copy link
Member

@liZe liZe commented Jul 30, 2019

It's a test that should return a square with one color: a mix of red and blue. The test on the platforms I use give #800080 (on Windows, MacOS and Linux, I suppose i686), while on your platform it gives #7F007F.

There's probably a difference in Cairo about optimizations depending on the platform, and the output is so close that it's tolerated. You can safely ignore this failing test.

If it's important for you to have this test passing (I don't know why you launch tests on i586 😄), we can try to find a solution.

Loading

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Jul 30, 2019

My platform, too, gives #7f007f
Windows 7 64bit, Cairo 1.16.0

Loading

@liZe
Copy link
Member

@liZe liZe commented Aug 14, 2019

If it's important for you to have this test passing (I don't know why you launch tests on i586), we can try to find a solution.

@pgajdos Is there a way for you to ignore that test?

Loading

@pgajdos
Copy link
Author

@pgajdos pgajdos commented Aug 21, 2019

Sure.

Loading

@liZe
Copy link
Member

@liZe liZe commented Aug 21, 2019

This test is useful, I'd like to keep it. We can try to find other values that work the same way everywhere.

@pgajdos @Tontyna Does this test pass for you?

@assert_no_logs
@requires('cairo', (1, 14, 0))
def test_linear_gradients_7():
    assert_pixels('linear_gradient', 9, 5, '''
        ggggggggg
        ggggggggg
        ggggggggg
        ggggggggg
        ggggggggg
    ''', '''<style>@page { size: 9px 5px; background: repeating-linear-gradient(
      to right, black 3px, black 3px, lime 3px, lime 3px
    )''')

Loading

@pgajdos
Copy link
Author

@pgajdos pgajdos commented Aug 21, 2019

With the above, I get for i586:

[   64s] =================================== FAILURES ===================================
[   64s] ___________________________ test_linear_gradients_7 ____________________________
[   64s] 
[   64s]     @assert_no_logs
[   64s]     @requires('cairo', (1, 14, 0))
[   64s]     def test_linear_gradients_7():
[   64s]         assert_pixels('linear_gradient', 9, 5, '''
[   64s]             ggggggggg
[   64s]             ggggggggg
[   64s]             ggggggggg
[   64s]             ggggggggg
[   64s]             ggggggggg
[   64s]         ''', '''<style>@page { size: 9px 5px; background: repeating-linear-gradient(
[   64s]           to right, black 3px, black 3px, lime 3px, lime 3px
[   64s] >       )''')
[   64s] 
[   64s] /home/abuild/rpmbuild/BUILD/WeasyPrint-48/weasyprint/tests/test_draw/test_gradient.py:119: 
[   64s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   64s] /home/abuild/rpmbuild/BUILD/WeasyPrint-48/weasyprint/tests/test_draw/__init__.py:60: in assert_pixels
[   64s]     name, expected_width, expected_height, pixels, expected_raw)
[   64s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[   64s] 
[   64s] name = 'linear_gradient', width = 9, height = 5
[   64s] raw = b'\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00...00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff\x00\x7f\x00\xff'
[   64s] expected_raw = b'\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00...00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff\x00\x80\x00\xff'
[   64s] tolerance = 0
[   64s] 
[   64s]     def assert_pixels_equal(name, width, height, raw, expected_raw, tolerance=0):
[   64s]         """Take 2 matrices of pixels and assert that they are the same."""
[   64s]         if raw != expected_raw:  # pragma: no cover
[   64s]             for i, (value, expected) in enumerate(zip(raw, expected_raw)):
[   64s]                 if abs(value - expected) > tolerance:
[   64s]                     write_png(name, raw, width, height)
[   64s]                     write_png(name + '.expected', expected_raw,
[   64s]                               width, height)
[   64s]                     pixel_n = i // 4
[   64s]                     x = pixel_n // width
[   64s]                     y = pixel_n % width
[   64s]                     i % 4
[   64s]                     pixel = tuple(list(raw[i:i + 4]))
[   64s]                     expected_pixel = tuple(list(
[   64s]                         expected_raw[i:i + 4]))
[   64s]                     assert 0, (
[   64s]                         'Pixel (%i, %i) in %s: expected rgba%s, got rgba%s'
[   64s] >                       % (x, y, name, expected_pixel, pixel))
[   64s] E                   AssertionError: Pixel (0, 0) in linear_gradient: expected rgba(128, 0, 255, 0), got rgba(127, 0, 255, 0)
[   64s] 
[   64s] /home/abuild/rpmbuild/BUILD/WeasyPrint-48/weasyprint/tests/test_draw/__init__.py:164: AssertionError
[   64s] ------------------------------ Captured log call -------------------------------
[   64s] INFO     weasyprint.progress:__init__.py:109 Step 1 - Fetching and parsing HTML - HTML string
[   64s] INFO     weasyprint.progress:__init__.py:317 Step 2 - Fetching and parsing CSS - CSS string
[   64s] INFO     weasyprint.progress:__init__.py:66 Step 3 - Applying CSS
[   64s] INFO     weasyprint.progress:document.py:369 Step 4 - Creating formatting structure
[   64s] INFO     weasyprint.progress:pages.py:791 Step 5 - Creating layout - Page 1
[   64s] INFO     weasyprint.progress:document.py:734 Step 6 - Drawing
[   64s] =============================== warnings summary ===============================
[   64s] /usr/lib/python3.7/site-packages/html5lib/_trie/_base.py:3
[   64s]   /usr/lib/python3.7/site-packages/html5lib/_trie/_base.py:3: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
[   64s]     from collections import Mapping
[   64s] 
[   64s] -- Docs: https://docs.pytest.org/en/latest/warnings.html
[   64s] ========= 1 failed, 949 passed, 7 xfailed, 1 warnings in 26.69 seconds =========

Loading

@pgajdos
Copy link
Author

@pgajdos pgajdos commented Aug 21, 2019

It succeedes for x86_64.

Loading

@liZe
Copy link
Member

@liZe liZe commented Aug 21, 2019

Then I'm afraid I can't do anything. If you can find a value that works with both i586 and x86_64, I'll be happy to use it, but otherwise you'll have to skip this test 😢.

Loading

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Aug 21, 2019

The truth (and the mystery) is:

  • when rendered as PDF my platform produces #7f007f
  • when rendered as PNG my platform produces #800080. That's why the gradient unit tests succeed

Yes, I know, these are different Cairo surfaces. Cannot detect a/the relationship between the processor architecture and the cairo_image_surface in the Cairo source.
Maybe this time it's not Cairo but ... the Cairo PNG functionality depends afaik on libpng

Loading

@liZe
Copy link
Member

@liZe liZe commented Sep 3, 2019

It's hard to decide if the color between #ff00ff and #000000 is #800080 or #7f007f. It's actually between, isn't it? The problem is not technical, it's just logical.

We can solve this by using a color whose hexadecimal components are even. For example, using #800080 and #000000 would give #400040.

Loading

@liZe liZe closed this in fb62571 Sep 3, 2019
@liZe liZe added this to the 49 milestone Sep 3, 2019
@liZe liZe added the bug label Sep 3, 2019
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Oct 9, 2019
Version 50
----------

Released on 2019-09-19.

New features:

* `#209 <https://github.com/Kozea/WeasyPrint/issues/209>`_:
  Make ``break-*`` properties work inside tables
* `#661 <https://github.com/Kozea/WeasyPrint/issues/661>`_:
  Make blocks with ``overflow: auto`` grow to include floating children

Bug fixes:

* `#945 <https://github.com/Kozea/WeasyPrint/issues/945>`_:
  Don't break pages between a list item and its marker
* `#727 <https://github.com/Kozea/WeasyPrint/issues/727>`_:
  Avoid tables lost between pages
* `#831 <https://github.com/Kozea/WeasyPrint/issues/831>`_:
  Ignore auto margins on flex containers
* `#923 <https://github.com/Kozea/WeasyPrint/issues/923>`_:
  Fix a couple of crashes when splitting a line twice
* `#896 <https://github.com/Kozea/WeasyPrint/issues/896>`_:
  Fix skip stack order when using a reverse flex direction

Contributors:

- grewn0uille
- Guillaume Ayoub

Version 49
----------

Released on 2019-09-11.

Performance:

* Speed and memory use have been largely improved.

New features:

* `#700 <https://github.com/Kozea/WeasyPrint/issues/700>`_:
  Handle ``::marker`` pseudo-selector
* `135dc06c <https://github.com/Kozea/WeasyPrint/commit/135dc06c>`_:
  Handle ``recto`` and ``verso`` parameters for page breaks
* `#907 <https://github.com/Kozea/WeasyPrint/pull/907>`_:
  Provide a clean way to build layout contexts

Bug fixes:

* `#937 <https://github.com/Kozea/WeasyPrint/issues/937>`_:
  Fix rendering of tables with empty lines and rowspans
* `#897 <https://github.com/Kozea/WeasyPrint/issues/897>`_:
  Don't crash when small columns are wrapped in absolute blocks
* `#913 <https://github.com/Kozea/WeasyPrint/issues/913>`_:
  Fix a test about gradient colors
* `#924 <https://github.com/Kozea/WeasyPrint/pull/924>`_:
  Fix title for document with attachments
* `#917 <https://github.com/Kozea/WeasyPrint/issues/917>`_:
  Fix tests with Pango 1.44
* `#919 <https://github.com/Kozea/WeasyPrint/issues/919>`_:
  Fix padding and margin management for column flex boxes
* `#901 <https://github.com/Kozea/WeasyPrint/issues/901>`_:
  Fix width of replaced boxes with no intrinsic width
* `#906 <https://github.com/Kozea/WeasyPrint/issues/906>`_:
  Don't respect table cell width when content doesn't fit
* `#927 <https://github.com/Kozea/WeasyPrint/pull/927>`_:
  Don't use deprecated ``logger.warn`` anymore
* `a8662794 <https://github.com/Kozea/WeasyPrint/commit/a8662794>`_:
  Fix margin collapsing between caption and table wrapper
* `87d9e84f <https://github.com/Kozea/WeasyPrint/commit/87d9e84f>`_:
  Avoid infinite loops when rendering columns
* `789b80e6 <https://github.com/Kozea/WeasyPrint/commit/789b80e6>`_:
  Only use in flow children to set columns height
* `615e298a <https://github.com/Kozea/WeasyPrint/commit/615e298a>`_:
  Don't include floating elements each time we try to render a column
* `48d8632e <https://github.com/Kozea/WeasyPrint/commit/48d8632e>`_:
  Avoid not in flow children to compute column height
* `e7c452ce <https://github.com/Kozea/WeasyPrint/commit/e7c452ce>`_:
  Fix collapsing margins for columns
* `fb0887cf <https://github.com/Kozea/WeasyPrint/commit/fb0887cf>`_:
  Fix crash when using currentColor in gradients
* `f66df067 <https://github.com/Kozea/WeasyPrint/commit/f66df067>`_:
  Don't crash when using ex units in word-spacing in letter-spacing
* `c790ff20 <https://github.com/Kozea/WeasyPrint/commit/c790ff20>`_:
  Don't crash when properties needing base URL use var functions
* `d63eac31 <https://github.com/Kozea/WeasyPrint/commit/d63eac31>`_:
  Don't crash with object-fit: non images with no intrinsic size

Documentation:

* `#900 <https://github.com/Kozea/WeasyPrint/issues/900>`_:
  Add documentation about semantic versioning
* `#692 <https://github.com/Kozea/WeasyPrint/issues/692>`_:
  Add a snippet about PDF magnification
* `#899 <https://github.com/Kozea/WeasyPrint/pull/899>`_:
  Add .NET wrapper link
* `#893 <https://github.com/Kozea/WeasyPrint/pull/893>`_:
  Fixed wrong nested list comprehension example
* `#902 <https://github.com/Kozea/WeasyPrint/pull/902>`_:
  Add ``state`` to the ``make_bookmark_tree`` documentation
* `#921 <https://github.com/Kozea/WeasyPrint/pull/921>`_:
  Fix typos in the documentation
* `#328 <https://github.com/Kozea/WeasyPrint/issues/328>`_:
  Add CSS sample for forms

Contributors:

- grewn0uille
- Guillaume Ayoub
- Raphael Gaschignard
- Stani
- Szmen
- Thomas Dexter
- Tontyna

Version 48
----------

Released on 2019-07-08.

Dependencies:

* CairoSVG 2.4.0+ is now needed

New features:

* `#891 <https://github.com/Kozea/WeasyPrint/pull/891>`_:
  Handle ``text-overflow``
* `#878 <https://github.com/Kozea/WeasyPrint/pull/878>`_:
  Handle ``column-span``
* `#855 <https://github.com/Kozea/WeasyPrint/pull/855>`_:
  Handle all the ``text-decoration`` features
* `#238 <https://github.com/Kozea/WeasyPrint/issues/238>`_:
  Don't repeat background images when it's not needed
* `#875 <https://github.com/Kozea/WeasyPrint/issues/875>`_:
  Handle ``object-fit`` and ``object-position``
* `#870 <https://github.com/Kozea/WeasyPrint/issues/870>`_:
  Handle ``bookmark-state``

Bug fixes:

* `#686 <https://github.com/Kozea/WeasyPrint/issues/686>`_:
  Fix column balance when children are not inline
* `#885 <https://github.com/Kozea/WeasyPrint/issues/885>`_:
  Actually use the content box to resolve flex items percentages
* `#867 <https://github.com/Kozea/WeasyPrint/issues/867>`_:
  Fix rendering of KaTeX output, including (1) set row baseline of tables when
  no cells are baseline-aligned, (2) set baseline for inline tables, (3) don't
  align lines larger than their parents, (4) force CairoSVG to respect image
  size defined by CSS.
* `#873 <https://github.com/Kozea/WeasyPrint/issues/873>`_:
  Set a minimum height for empty list elements with outside marker
* `#811 <https://github.com/Kozea/WeasyPrint/issues/811>`_:
  Don't use translations to align flex items
* `#851 <https://github.com/Kozea/WeasyPrint/issues/851>`_,
  `#860 <https://github.com/Kozea/WeasyPrint/issues/860>`_:
  Don't cut pages when content overflows a very little bit
* `#862 <https://github.com/Kozea/WeasyPrint/issues/862>`_:
  Don't crash when using UTC dates in metadata

Documentation:

* `#854 <https://github.com/Kozea/WeasyPrint/issues/854>`_:
  Add a "Tips & Tricks" section

Contributors:

- Gabriel Corona
- Guillaume Ayoub
- Manuel Barkhau
- Nathan de Maestri
- grewn0uille
- theopeek

Version 47
----------

Released on 2019-04-12.

New features:

* `#843 <https://github.com/Kozea/WeasyPrint/pull/843>`_:
  Handle CSS variables
* `#846 <https://github.com/Kozea/WeasyPrint/pull/846>`_:
  Handle ``:nth()`` page selector
* `#847 <https://github.com/Kozea/WeasyPrint/pull/847>`_:
  Allow users to use a custom SSL context for HTTP requests

Bug fixes:

* `#797 <https://github.com/Kozea/WeasyPrint/issues/797>`_:
  Fix underlined justified text
* `#836 <https://github.com/Kozea/WeasyPrint/issues/836>`_:
  Fix crash when flex items are replaced boxes
* `#835 <https://github.com/Kozea/WeasyPrint/issues/835>`_:
  Fix ``margin-break: auto``

Version 46
----------

Released on 2019-03-20.

New features:

* `#771 <https://github.com/Kozea/WeasyPrint/issues/771>`_:
  Handle ``box-decoration-break``
* `#115 <https://github.com/Kozea/WeasyPrint/issues/115>`_:
  Handle ``margin-break``
* `#821 <https://github.com/Kozea/WeasyPrint/issues/821>`_:
  Continuous integration includes tests on Windows

Bug fixes:

* `#765 <https://github.com/Kozea/WeasyPrint/issues/765>`_,
  `#754 <https://github.com/Kozea/WeasyPrint/issues/754>`_,
  `#800 <https://github.com/Kozea/WeasyPrint/issues/800>`_:
  Fix many crashes related to the flex layout
* `#783 <https://github.com/Kozea/WeasyPrint/issues/783>`_:
  Fix a couple of crashes with strange texts
* `#827 <https://github.com/Kozea/WeasyPrint/pull/827>`_:
  Named strings and counters are case-sensitive
* `#823 <https://github.com/Kozea/WeasyPrint/pull/823>`_:
  Shrink min/max-height/width according to box-sizing
* `#728 <https://github.com/Kozea/WeasyPrint/issues/728>`_,
  `#171 <https://github.com/Kozea/WeasyPrint/issues/171>`_:
  Don't crash when fixed boxes are nested
* `#610 <https://github.com/Kozea/WeasyPrint/issues/610>`_,
  `#828 <https://github.com/Kozea/WeasyPrint/issues/828>`_:
  Don't crash when preformatted text lines end with a space
* `#808 <https://github.com/Kozea/WeasyPrint/issues/808>`_,
  `#387 <https://github.com/Kozea/WeasyPrint/issues/387>`_:
  Fix position of some images
* `#813 <https://github.com/Kozea/WeasyPrint/issues/813>`_:
  Don't crash when long preformatted text lines end with ``\n``

Documentation:

* `#815 <https://github.com/Kozea/WeasyPrint/pull/815>`_:
  Add documentation about custom ``url_fetcher``
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Oct 18, 2019
Version 50
----------

Released on 2019-09-19.

New features:

* `#209 <https://github.com/Kozea/WeasyPrint/issues/209>`_:
  Make ``break-*`` properties work inside tables
* `#661 <https://github.com/Kozea/WeasyPrint/issues/661>`_:
  Make blocks with ``overflow: auto`` grow to include floating children

Bug fixes:

* `#945 <https://github.com/Kozea/WeasyPrint/issues/945>`_:
  Don't break pages between a list item and its marker
* `#727 <https://github.com/Kozea/WeasyPrint/issues/727>`_:
  Avoid tables lost between pages
* `#831 <https://github.com/Kozea/WeasyPrint/issues/831>`_:
  Ignore auto margins on flex containers
* `#923 <https://github.com/Kozea/WeasyPrint/issues/923>`_:
  Fix a couple of crashes when splitting a line twice
* `#896 <https://github.com/Kozea/WeasyPrint/issues/896>`_:
  Fix skip stack order when using a reverse flex direction

Contributors:

- grewn0uille
- Guillaume Ayoub

Version 49
----------

Released on 2019-09-11.

Performance:

* Speed and memory use have been largely improved.

New features:

* `#700 <https://github.com/Kozea/WeasyPrint/issues/700>`_:
  Handle ``::marker`` pseudo-selector
* `135dc06c <https://github.com/Kozea/WeasyPrint/commit/135dc06c>`_:
  Handle ``recto`` and ``verso`` parameters for page breaks
* `#907 <https://github.com/Kozea/WeasyPrint/pull/907>`_:
  Provide a clean way to build layout contexts

Bug fixes:

* `#937 <https://github.com/Kozea/WeasyPrint/issues/937>`_:
  Fix rendering of tables with empty lines and rowspans
* `#897 <https://github.com/Kozea/WeasyPrint/issues/897>`_:
  Don't crash when small columns are wrapped in absolute blocks
* `#913 <https://github.com/Kozea/WeasyPrint/issues/913>`_:
  Fix a test about gradient colors
* `#924 <https://github.com/Kozea/WeasyPrint/pull/924>`_:
  Fix title for document with attachments
* `#917 <https://github.com/Kozea/WeasyPrint/issues/917>`_:
  Fix tests with Pango 1.44
* `#919 <https://github.com/Kozea/WeasyPrint/issues/919>`_:
  Fix padding and margin management for column flex boxes
* `#901 <https://github.com/Kozea/WeasyPrint/issues/901>`_:
  Fix width of replaced boxes with no intrinsic width
* `#906 <https://github.com/Kozea/WeasyPrint/issues/906>`_:
  Don't respect table cell width when content doesn't fit
* `#927 <https://github.com/Kozea/WeasyPrint/pull/927>`_:
  Don't use deprecated ``logger.warn`` anymore
* `a8662794 <https://github.com/Kozea/WeasyPrint/commit/a8662794>`_:
  Fix margin collapsing between caption and table wrapper
* `87d9e84f <https://github.com/Kozea/WeasyPrint/commit/87d9e84f>`_:
  Avoid infinite loops when rendering columns
* `789b80e6 <https://github.com/Kozea/WeasyPrint/commit/789b80e6>`_:
  Only use in flow children to set columns height
* `615e298a <https://github.com/Kozea/WeasyPrint/commit/615e298a>`_:
  Don't include floating elements each time we try to render a column
* `48d8632e <https://github.com/Kozea/WeasyPrint/commit/48d8632e>`_:
  Avoid not in flow children to compute column height
* `e7c452ce <https://github.com/Kozea/WeasyPrint/commit/e7c452ce>`_:
  Fix collapsing margins for columns
* `fb0887cf <https://github.com/Kozea/WeasyPrint/commit/fb0887cf>`_:
  Fix crash when using currentColor in gradients
* `f66df067 <https://github.com/Kozea/WeasyPrint/commit/f66df067>`_:
  Don't crash when using ex units in word-spacing in letter-spacing
* `c790ff20 <https://github.com/Kozea/WeasyPrint/commit/c790ff20>`_:
  Don't crash when properties needing base URL use var functions
* `d63eac31 <https://github.com/Kozea/WeasyPrint/commit/d63eac31>`_:
  Don't crash with object-fit: non images with no intrinsic size

Documentation:

* `#900 <https://github.com/Kozea/WeasyPrint/issues/900>`_:
  Add documentation about semantic versioning
* `#692 <https://github.com/Kozea/WeasyPrint/issues/692>`_:
  Add a snippet about PDF magnification
* `#899 <https://github.com/Kozea/WeasyPrint/pull/899>`_:
  Add .NET wrapper link
* `#893 <https://github.com/Kozea/WeasyPrint/pull/893>`_:
  Fixed wrong nested list comprehension example
* `#902 <https://github.com/Kozea/WeasyPrint/pull/902>`_:
  Add ``state`` to the ``make_bookmark_tree`` documentation
* `#921 <https://github.com/Kozea/WeasyPrint/pull/921>`_:
  Fix typos in the documentation
* `#328 <https://github.com/Kozea/WeasyPrint/issues/328>`_:
  Add CSS sample for forms

Contributors:

- grewn0uille
- Guillaume Ayoub
- Raphael Gaschignard
- Stani
- Szmen
- Thomas Dexter
- Tontyna

Version 48
----------

Released on 2019-07-08.

Dependencies:

* CairoSVG 2.4.0+ is now needed

New features:

* `#891 <https://github.com/Kozea/WeasyPrint/pull/891>`_:
  Handle ``text-overflow``
* `#878 <https://github.com/Kozea/WeasyPrint/pull/878>`_:
  Handle ``column-span``
* `#855 <https://github.com/Kozea/WeasyPrint/pull/855>`_:
  Handle all the ``text-decoration`` features
* `#238 <https://github.com/Kozea/WeasyPrint/issues/238>`_:
  Don't repeat background images when it's not needed
* `#875 <https://github.com/Kozea/WeasyPrint/issues/875>`_:
  Handle ``object-fit`` and ``object-position``
* `#870 <https://github.com/Kozea/WeasyPrint/issues/870>`_:
  Handle ``bookmark-state``

Bug fixes:

* `#686 <https://github.com/Kozea/WeasyPrint/issues/686>`_:
  Fix column balance when children are not inline
* `#885 <https://github.com/Kozea/WeasyPrint/issues/885>`_:
  Actually use the content box to resolve flex items percentages
* `#867 <https://github.com/Kozea/WeasyPrint/issues/867>`_:
  Fix rendering of KaTeX output, including (1) set row baseline of tables when
  no cells are baseline-aligned, (2) set baseline for inline tables, (3) don't
  align lines larger than their parents, (4) force CairoSVG to respect image
  size defined by CSS.
* `#873 <https://github.com/Kozea/WeasyPrint/issues/873>`_:
  Set a minimum height for empty list elements with outside marker
* `#811 <https://github.com/Kozea/WeasyPrint/issues/811>`_:
  Don't use translations to align flex items
* `#851 <https://github.com/Kozea/WeasyPrint/issues/851>`_,
  `#860 <https://github.com/Kozea/WeasyPrint/issues/860>`_:
  Don't cut pages when content overflows a very little bit
* `#862 <https://github.com/Kozea/WeasyPrint/issues/862>`_:
  Don't crash when using UTC dates in metadata

Documentation:

* `#854 <https://github.com/Kozea/WeasyPrint/issues/854>`_:
  Add a "Tips & Tricks" section

Contributors:

- Gabriel Corona
- Guillaume Ayoub
- Manuel Barkhau
- Nathan de Maestri
- grewn0uille
- theopeek

Version 47
----------

Released on 2019-04-12.

New features:

* `#843 <https://github.com/Kozea/WeasyPrint/pull/843>`_:
  Handle CSS variables
* `#846 <https://github.com/Kozea/WeasyPrint/pull/846>`_:
  Handle ``:nth()`` page selector
* `#847 <https://github.com/Kozea/WeasyPrint/pull/847>`_:
  Allow users to use a custom SSL context for HTTP requests

Bug fixes:

* `#797 <https://github.com/Kozea/WeasyPrint/issues/797>`_:
  Fix underlined justified text
* `#836 <https://github.com/Kozea/WeasyPrint/issues/836>`_:
  Fix crash when flex items are replaced boxes
* `#835 <https://github.com/Kozea/WeasyPrint/issues/835>`_:
  Fix ``margin-break: auto``

Version 46
----------

Released on 2019-03-20.

New features:

* `#771 <https://github.com/Kozea/WeasyPrint/issues/771>`_:
  Handle ``box-decoration-break``
* `#115 <https://github.com/Kozea/WeasyPrint/issues/115>`_:
  Handle ``margin-break``
* `#821 <https://github.com/Kozea/WeasyPrint/issues/821>`_:
  Continuous integration includes tests on Windows

Bug fixes:

* `#765 <https://github.com/Kozea/WeasyPrint/issues/765>`_,
  `#754 <https://github.com/Kozea/WeasyPrint/issues/754>`_,
  `#800 <https://github.com/Kozea/WeasyPrint/issues/800>`_:
  Fix many crashes related to the flex layout
* `#783 <https://github.com/Kozea/WeasyPrint/issues/783>`_:
  Fix a couple of crashes with strange texts
* `#827 <https://github.com/Kozea/WeasyPrint/pull/827>`_:
  Named strings and counters are case-sensitive
* `#823 <https://github.com/Kozea/WeasyPrint/pull/823>`_:
  Shrink min/max-height/width according to box-sizing
* `#728 <https://github.com/Kozea/WeasyPrint/issues/728>`_,
  `#171 <https://github.com/Kozea/WeasyPrint/issues/171>`_:
  Don't crash when fixed boxes are nested
* `#610 <https://github.com/Kozea/WeasyPrint/issues/610>`_,
  `#828 <https://github.com/Kozea/WeasyPrint/issues/828>`_:
  Don't crash when preformatted text lines end with a space
* `#808 <https://github.com/Kozea/WeasyPrint/issues/808>`_,
  `#387 <https://github.com/Kozea/WeasyPrint/issues/387>`_:
  Fix position of some images
* `#813 <https://github.com/Kozea/WeasyPrint/issues/813>`_:
  Don't crash when long preformatted text lines end with ``\n``

Documentation:

* `#815 <https://github.com/Kozea/WeasyPrint/pull/815>`_:
  Add documentation about custom ``url_fetcher``
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants