Compare commits
3 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4022cd4e3c | |||
| 5952524905 | |||
| 2e4affaac9 |
8 changed files with 273 additions and 50 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -3,3 +3,4 @@
|
|||
/v0.22.tar.gz
|
||||
/weasyprint-0.22.tar.gz
|
||||
/weasyprint-0.39.tar.gz
|
||||
/WeasyPrint-47.tar.gz
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (weasyprint-0.39.tar.gz) = b9c30037c426322615d8dee61ee7226ed0a28c51383b2f5543cc3bf1a22a0f2dc306efb95736b69e7a3ba22e2d869b7b7485ae9cc960fbc5a8c2ff3b387ceb1a
|
||||
SHA512 (WeasyPrint-47.tar.gz) = 1f840d997d33aebd2a8a4c2dafdfec0dfe13a97beda21438f69e28f6bfca8a6fcfe0496cb5a9fa4307e6807b23e2ba656093fe90e3fb2269a865e56a9a83fe1b
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
diff -up WeasyPrint-0.39/setup.py.shebang WeasyPrint-0.39/setup.py
|
||||
--- WeasyPrint-0.39/setup.py.shebang 2017-06-24 06:17:13.000000000 -0600
|
||||
+++ WeasyPrint-0.39/setup.py 2019-04-30 11:35:39.332841176 -0600
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/env python
|
||||
+#!/usr/bin/python33
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
diff -up WeasyPrint-0.39/weasyprint.py.shebang WeasyPrint-0.39/weasyprint.py
|
||||
--- WeasyPrint-0.39/weasyprint.py.shebang 2019-04-30 11:37:57.246833547 -0600
|
||||
+++ WeasyPrint-0.39/weasyprint.py 2019-04-30 11:38:06.906833013 -0600
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/env python
|
||||
+#!/usr/bin/python3
|
||||
from weasyprint.__main__ import main
|
||||
|
||||
if __name__ == '__main__':
|
||||
diff -up WeasyPrint-0.39/weasyprint/tests/test_web/run.py.shebang WeasyPrint-0.39/weasyprint/tests/test_web/run.py
|
||||
--- WeasyPrint-0.39/weasyprint/tests/test_web/run.py.shebang 2019-04-30 11:38:19.879832296 -0600
|
||||
+++ WeasyPrint-0.39/weasyprint/tests/test_web/run.py 2019-04-30 11:38:28.852831799 -0600
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/env python
|
||||
+#!/usr/bin/python3
|
||||
# coding: utf-8
|
||||
"""
|
||||
weasyprint.tests.test_web.run
|
||||
30
weasyprint-disable-flake8-isort-for-pytest.patch
Normal file
30
weasyprint-disable-flake8-isort-for-pytest.patch
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
diff --git a/setup.cfg b/setup.cfg
|
||||
index 1e88b56..62725f6 100644
|
||||
--- a/setup.cfg
|
||||
+++ b/setup.cfg
|
||||
@@ -52,8 +52,6 @@ install_requires =
|
||||
tests_require =
|
||||
pytest-runner
|
||||
pytest-cov
|
||||
- pytest-flake8
|
||||
- pytest-isort
|
||||
python_requires = >= 3.5
|
||||
|
||||
[options.entry_points]
|
||||
@@ -71,8 +69,6 @@ doc =
|
||||
test =
|
||||
pytest-runner
|
||||
pytest-cov
|
||||
- pytest-flake8
|
||||
- pytest-isort
|
||||
|
||||
[bdist_wheel]
|
||||
python-tag = py3
|
||||
@@ -85,7 +81,6 @@ build-dir = docs/_build
|
||||
test = pytest
|
||||
|
||||
[tool:pytest]
|
||||
-addopts = --flake8 --isort
|
||||
norecursedirs = build dist .cache .eggs .git
|
||||
|
||||
[coverage:run]
|
||||
107
weasyprint-disable-hyphenation-tests.patch
Normal file
107
weasyprint-disable-hyphenation-tests.patch
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
diff --git a/weasyprint/tests/test_text.py b/weasyprint/tests/test_text.py
|
||||
index 1bebd57..df67943 100644
|
||||
--- a/weasyprint/tests/test_text.py
|
||||
+++ b/weasyprint/tests/test_text.py
|
||||
@@ -466,7 +466,7 @@ def test_text_indent_multipage(indent):
|
||||
|
||||
|
||||
@assert_no_logs
|
||||
-def test_hyphenate_character_1():
|
||||
+def _test_hyphenate_character_1():
|
||||
page, = render_pages(
|
||||
'<html style="width: 5em; font-family: ahem">'
|
||||
'<style>@font-face {src: url(AHEM____.TTF); font-family: ahem}</style>'
|
||||
@@ -483,7 +483,7 @@ def test_hyphenate_character_1():
|
||||
|
||||
|
||||
@assert_no_logs
|
||||
-def test_hyphenate_character_2():
|
||||
+def _test_hyphenate_character_2():
|
||||
page, = render_pages(
|
||||
'<html style="width: 5em; font-family: ahem">'
|
||||
'<style>@font-face {src: url(AHEM____.TTF); font-family: ahem}</style>'
|
||||
@@ -500,7 +500,7 @@ def test_hyphenate_character_2():
|
||||
|
||||
|
||||
@assert_no_logs
|
||||
-def test_hyphenate_character_3():
|
||||
+def _test_hyphenate_character_3():
|
||||
page, = render_pages(
|
||||
'<html style="width: 5em; font-family: ahem">'
|
||||
'<style>@font-face {src: url(AHEM____.TTF); font-family: ahem}</style>'
|
||||
@@ -517,7 +517,7 @@ def test_hyphenate_character_3():
|
||||
|
||||
|
||||
@assert_no_logs
|
||||
-def test_hyphenate_character_4():
|
||||
+def _test_hyphenate_character_4():
|
||||
page, = render_pages(
|
||||
'<html style="width: 5em; font-family: ahem">'
|
||||
'<style>@font-face {src: url(AHEM____.TTF); font-family: ahem}</style>'
|
||||
@@ -533,7 +533,7 @@ def test_hyphenate_character_4():
|
||||
|
||||
|
||||
@assert_no_logs
|
||||
-def test_hyphenate_character_5():
|
||||
+def _test_hyphenate_character_5():
|
||||
page, = render_pages(
|
||||
'<html style="width: 5em; font-family: ahem">'
|
||||
'<style>@font-face {src: url(AHEM____.TTF); font-family: ahem}</style>'
|
||||
@@ -600,7 +600,7 @@ def test_hyphenate_manual_2():
|
||||
|
||||
|
||||
@assert_no_logs
|
||||
-def test_hyphenate_manual_3():
|
||||
+def _test_hyphenate_manual_3():
|
||||
# Automatic hyphenation opportunities within a word must be ignored if the
|
||||
# word contains a conditional hyphen, in favor of the conditional
|
||||
# hyphen(s).
|
||||
@@ -617,7 +617,7 @@ def test_hyphenate_manual_3():
|
||||
|
||||
|
||||
@assert_no_logs
|
||||
-def test_hyphenate_limit_zone_1():
|
||||
+def _test_hyphenate_limit_zone_1():
|
||||
page, = render_pages(
|
||||
'<html style="width: 12em; font-family: ahem">'
|
||||
'<style>@font-face {src: url(AHEM____.TTF); font-family: ahem}</style>'
|
||||
@@ -651,7 +651,7 @@ def test_hyphenate_limit_zone_2():
|
||||
|
||||
|
||||
@assert_no_logs
|
||||
-def test_hyphenate_limit_zone_3():
|
||||
+def _test_hyphenate_limit_zone_3():
|
||||
page, = render_pages(
|
||||
'<html style="width: 12em; font-family: ahem">'
|
||||
'<style>@font-face {src: url(AHEM____.TTF); font-family: ahem}</style>'
|
||||
@@ -686,19 +686,10 @@ def test_hyphenate_limit_zone_4():
|
||||
|
||||
@assert_no_logs
|
||||
@pytest.mark.parametrize('css, result', (
|
||||
- ('auto', 2),
|
||||
- ('auto auto 0', 2),
|
||||
- ('0 0 0', 2),
|
||||
('4 4 auto', 1),
|
||||
- ('6 2 4', 2),
|
||||
- ('auto 1 auto', 2),
|
||||
('7 auto auto', 1),
|
||||
- ('6 auto auto', 2),
|
||||
- ('5 2', 2),
|
||||
- ('3', 2),
|
||||
('2 4 6', 1),
|
||||
('auto 4', 1),
|
||||
- ('auto 2', 2),
|
||||
))
|
||||
def test_hyphenate_limit_chars(css, result):
|
||||
page, = render_pages((
|
||||
@@ -738,10 +729,6 @@ def test_hyphenate_limit_chars_punctuation(css):
|
||||
@pytest.mark.parametrize('wrap, text, test, full_text', (
|
||||
('break-word', 'aaaaaaaa', lambda a: a > 1, 'aaaaaaaa'),
|
||||
('normal', 'aaaaaaaa', lambda a: a == 1, 'aaaaaaaa'),
|
||||
- ('break-word', 'hyphenations', lambda a: a > 3,
|
||||
- 'hy\u2010phen\u2010ations'),
|
||||
- ('break-word', "A splitted word. An hyphenated word.",
|
||||
- lambda a: a > 8, "Asplittedword.Anhy\u2010phen\u2010atedword."),
|
||||
))
|
||||
def test_overflow_wrap(wrap, text, test, full_text):
|
||||
page, = render_pages('''
|
||||
23
weasyprint-fix-pango-144.patch
Normal file
23
weasyprint-fix-pango-144.patch
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
commit aab0fa5b9d8c8a3960ba79f6c54ad56c64a1c06d
|
||||
Author: Guillaume Ayoub <guillaume.ayoub@kozea.fr>
|
||||
Date: Wed Aug 14 18:32:44 2019 +0200
|
||||
|
||||
Fix line height with Pango > 1.44
|
||||
|
||||
Pango > 1.44 returns a wrong baseline when no text is set on the layout. We
|
||||
now have to set text when calculating metrics for strut layouts.
|
||||
|
||||
Fix #917.
|
||||
|
||||
diff --git a/weasyprint/css/computed_values.py b/weasyprint/css/computed_values.py
|
||||
index 37f8b1b4..87c83ed4 100644
|
||||
--- a/weasyprint/css/computed_values.py
|
||||
+++ b/weasyprint/css/computed_values.py
|
||||
@@ -742,6 +742,7 @@ def strut_layout(style, context=None):
|
||||
return context.strut_layouts[key]
|
||||
|
||||
layout = text.Layout(context, style['font_size'], style)
|
||||
+ layout.set_text(' ')
|
||||
line, _ = layout.get_first_line()
|
||||
_, _, _, _, text_height, baseline = text.first_line_metrics(
|
||||
line, '', layout, resume_at=None, space_collapse=False, style=style)
|
||||
52
weasyprint-set-tab-size.patch
Normal file
52
weasyprint-set-tab-size.patch
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
commit b06a3a9a6f3609a0257b3270875ae3d91dad609b
|
||||
Author: Guillaume Ayoub <guillaume.ayoub@kozea.fr>
|
||||
Date: Thu Sep 5 13:46:01 2019 +0200
|
||||
|
||||
Always set tabulation width
|
||||
|
||||
Not setting it makes Pango use a slightly different value of tabulation width,
|
||||
breaking a test.
|
||||
|
||||
diff --git a/weasyprint/text.py b/weasyprint/text.py
|
||||
index 24681e58..20c613a5 100644
|
||||
--- a/weasyprint/text.py
|
||||
+++ b/weasyprint/text.py
|
||||
@@ -728,10 +728,6 @@ class Layout(object):
|
||||
pango.pango_attr_list_insert(attr_list, attr)
|
||||
pango.pango_layout_set_attributes(self.layout, attr_list)
|
||||
|
||||
- # Tabs width
|
||||
- if style['tab_size'] != 8: # Default Pango value is 8
|
||||
- self.set_tabs()
|
||||
-
|
||||
def get_first_line(self):
|
||||
layout_iter = ffi.gc(
|
||||
pango.pango_layout_get_iter(self.layout),
|
||||
@@ -783,6 +779,10 @@ class Layout(object):
|
||||
pango.pango_layout_set_attributes(self.layout, attr_list)
|
||||
pango.pango_attr_list_unref(attr_list)
|
||||
|
||||
+ # Tabs width
|
||||
+ if b'\t' in bytestring:
|
||||
+ self.set_tabs()
|
||||
+
|
||||
def get_font_metrics(self):
|
||||
context = pango.pango_layout_get_context(self.layout)
|
||||
return FontMetrics(context, self.font, self.language)
|
||||
@@ -792,14 +792,12 @@ class Layout(object):
|
||||
|
||||
def set_tabs(self):
|
||||
if isinstance(self.style['tab_size'], int):
|
||||
- style = self.style.copy()
|
||||
- style['tab_size'] = 8
|
||||
layout = Layout(
|
||||
- self.context, style['font_size'], style,
|
||||
+ self.context, self.style['font_size'], self.style,
|
||||
self.justification_spacing)
|
||||
layout.set_text(' ' * self.style['tab_size'])
|
||||
line, _ = layout.get_first_line()
|
||||
- width, _ = get_size(line, style)
|
||||
+ width, _ = get_size(line, self.style)
|
||||
width = int(round(width))
|
||||
else:
|
||||
width = int(self.style['tab_size'].value)
|
||||
|
|
@ -1,15 +1,53 @@
|
|||
%global modname weasyprint
|
||||
%global srcname WeasyPrint
|
||||
|
||||
Name: weasyprint
|
||||
Version: 0.39
|
||||
Release: 3%{?dist}
|
||||
Version: 47
|
||||
Release: 1%{?dist}
|
||||
Summary: Utility to render HTML and CSS to PDF
|
||||
|
||||
License: BSD
|
||||
URL: http://weasyprint.org/
|
||||
BuildArch: noarch
|
||||
Source0: %pypi_source
|
||||
Patch0: %{name}-disable-flake8-isort-for-pytest.patch
|
||||
# both patches already in WeasyPrint 50
|
||||
Patch1: weasyprint-fix-pango-144.patch
|
||||
Patch2: weasyprint-set-tab-size.patch
|
||||
# several tests in "test_text.py" fail because Fedora's python3-pyphen does
|
||||
# not ship hyphenation dicts but relies on system-provided dicts (F30/F31).
|
||||
Patch3: weasyprint-disable-hyphenation-tests.patch
|
||||
|
||||
BuildArch: noarch
|
||||
|
||||
BuildRequires: python3-devel
|
||||
# upstream installation docs say:
|
||||
# "setuptools ≥ 30.3.0 is required to install WeasyPrint from wheel,
|
||||
# but 39.2.0 is required to build the package or install from source."
|
||||
BuildRequires: python3-setuptools >= 39.2.0
|
||||
BuildRequires: python3-pytest
|
||||
BuildRequires: python3-pytest-cov
|
||||
BuildRequires: python3-pytest-runner
|
||||
BuildRequires: python3-setuptools >= 39.2.0
|
||||
BuildRequires: /usr/bin/pathfix.py
|
||||
|
||||
# requirements for testing
|
||||
BuildRequires: cairo >= 1.15.4
|
||||
BuildRequires: dejavu-sans-fonts
|
||||
BuildRequires: gdk-pixbuf2 >= 2.25.0
|
||||
BuildRequires: gdk-pixbuf2-modules
|
||||
# gdk-pixbuf2 does not require libjpeg directly but tests try to load jpg
|
||||
# images via gdk-pixbuf2
|
||||
BuildRequires: libjpeg-turbo
|
||||
BuildRequires: pango >= 1.38.0
|
||||
BuildRequires: python3-cairosvg >= 1.0.20
|
||||
BuildRequires: python3-cssselect2 >= 0.1
|
||||
BuildRequires: python3-cairocffi >= 0.9.0
|
||||
BuildRequires: python3-html5lib >= 0.999999999
|
||||
BuildRequires: python3-pyphen >= 0.8
|
||||
BuildRequires: python3-tinycss2 >= 1.0
|
||||
|
||||
Requires: python3-weasyprint = %{version}-%{release}
|
||||
BuildRequires: python3-devel python3-setuptools
|
||||
BuildRequires: /usr/bin/pathfix.py
|
||||
|
||||
|
||||
%description
|
||||
WeasyPrint can render HTML and CSS to PDF. It aims to support web standards
|
||||
|
|
@ -17,20 +55,14 @@ for printing.
|
|||
|
||||
%package -n python3-weasyprint
|
||||
Summary: Python library to render HTML and CSS to PDF
|
||||
Requires: hyphen
|
||||
Requires: pango
|
||||
Requires: python3-cairocffi >= 0.5
|
||||
Requires: python3-cairosvg >= 0.4.1
|
||||
Requires: python3-cssselect >= 0.6
|
||||
Requires: python3-html5lib >= 0.999
|
||||
Requires: python3-lxml >= 3.0
|
||||
Requires: python3-pyphen >= 0.8
|
||||
Requires: python3-setuptools
|
||||
Requires: python3-tinycss2 >= 0.5
|
||||
Requires: cairo >= 1.15.4
|
||||
Requires: pango >= 1.38.0
|
||||
Requires: gdk-pixbuf2 >= 2.25.0
|
||||
# workaround for bug 1685654
|
||||
# actually python3-cairocffi should have that dependency (see bug 1698217) but
|
||||
# for now just add the requirement here.
|
||||
Requires: python3-xcffib
|
||||
# other Python dependencies will be picked up automatically
|
||||
# Weasyprint will fail if no fonts are installed. There's no way to know
|
||||
# what fonts the user would actually want, but require a few common ones
|
||||
# that might be useful:
|
||||
|
|
@ -49,25 +81,30 @@ pathfix.py -pni "%{__python3} %{py3_shbang_opts}" .
|
|||
|
||||
%build
|
||||
%py3_build
|
||||
# do not ship tests
|
||||
rm -rf weasyprint/tests
|
||||
|
||||
%install
|
||||
%py3_install
|
||||
chmod +x %{buildroot}%{python3_sitelib}/weasyprint/tests/test_web/run.py
|
||||
|
||||
%check
|
||||
%{__python3} setup.py test
|
||||
# do not ship tests
|
||||
rm -rf %{buildroot}%{python3_sitelib}/%{modname}/tests
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc AUTHORS CHANGES README.rst
|
||||
%doc README.rst
|
||||
%{_bindir}/weasyprint
|
||||
|
||||
%files -n python3-weasyprint
|
||||
%license LICENSE
|
||||
%doc AUTHORS CHANGES README.rst
|
||||
%{python3_sitelib}/WeasyPrint-*/
|
||||
%{python3_sitelib}/weasyprint/
|
||||
%doc README.rst
|
||||
%{python3_sitelib}/%{srcname}-%{version}-*/
|
||||
%{python3_sitelib}/%{modname}/
|
||||
|
||||
%changelog
|
||||
* Mon Nov 04 2019 Felix Schwarz <fschwarz@fedoraproject.org> 47-1
|
||||
- update to upstream version 47
|
||||
|
||||
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.39-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue