svg-ultralight 0.45.0__tar.gz → 0.45.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of svg-ultralight might be problematic. Click here for more details.
- {svg_ultralight-0.45.0/src/svg_ultralight.egg-info → svg_ultralight-0.45.1}/PKG-INFO +1 -1
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/pyproject.toml +2 -2
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/font_tools/font_info.py +17 -3
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1/src/svg_ultralight.egg-info}/PKG-INFO +1 -1
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/.gitignore +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/.pre-commit-config.yaml +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/README.md +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/dev-requirements.txt +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/experiments/encode_fonts3.txt +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/experiments/font_css.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/setup.cfg +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/__init__.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/animate.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/attrib_hints.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/__init__.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/bound_helpers.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/padded_text_initializers.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/supports_bounds.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/type_bound_collection.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/type_bound_element.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/type_bounding_box.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/type_padded_text.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/constructors/__init__.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/constructors/new_element.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/font_tools/__init__.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/font_tools/comp_results.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/font_tools/globs.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/image_ops.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/inkscape.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/layout.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/main.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/metadata.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/nsmap.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/py.typed +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/query.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/root_elements.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/string_conversion.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/strings/__init__.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/strings/svg_strings.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/transformations.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/unit_conversion.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight.egg-info/SOURCES.txt +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight.egg-info/dependency_links.txt +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight.egg-info/requires.txt +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight.egg-info/top_level.txt +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/__init__.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/conftest.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/resources/arrow.svg +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_bounding.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_inkscape.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_layout.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_matrices.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_metadata.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_new_element.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_padded_text_initializers.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_padding.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_queries.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_root_elements.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_string_conversion.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tests/test_svg_ultralight.py +0 -0
- {svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "svg-ultralight"
|
|
3
|
-
version = "0.45.
|
|
3
|
+
version = "0.45.1"
|
|
4
4
|
description = "a sensible way to create svg files with Python"
|
|
5
5
|
authors = [{ name = "Shay Hill", email = "shay_public@hotmail.com" }]
|
|
6
6
|
license = { text = "MIT" }
|
|
@@ -53,7 +53,7 @@ convention = "pep257"
|
|
|
53
53
|
|
|
54
54
|
[tool.commitizen]
|
|
55
55
|
name = "cz_conventional_commits"
|
|
56
|
-
version = "0.45.
|
|
56
|
+
version = "0.45.1"
|
|
57
57
|
tag_format = "$version"
|
|
58
58
|
version_files = ["pyproject.toml:^version"]
|
|
59
59
|
annotated_tag = true
|
|
@@ -124,9 +124,23 @@ if TYPE_CHECKING:
|
|
|
124
124
|
logging.getLogger("fontTools").setLevel(logging.ERROR)
|
|
125
125
|
|
|
126
126
|
|
|
127
|
+
_ESCAPE_CHARS = {"&": "&", "<": "<", ">": ">", '"': """, "'": "'"}
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def _sanitize_svg_data_text(text: str) -> str:
|
|
131
|
+
"""Sanitize a string for use in an SVG data-text attribute.
|
|
132
|
+
|
|
133
|
+
:param text: The input string to sanitize.
|
|
134
|
+
:return: The sanitized string with XML characters escaped.
|
|
135
|
+
"""
|
|
136
|
+
for char, escape_seq in _ESCAPE_CHARS.items():
|
|
137
|
+
text = text.replace(char, escape_seq)
|
|
138
|
+
return text
|
|
139
|
+
|
|
140
|
+
|
|
127
141
|
# extract_gpos_kerning is an unfinished attempt to extract kerning from the GPOS
|
|
128
142
|
# table.
|
|
129
|
-
def
|
|
143
|
+
def _get_gpos_kerning(font: TTFont) -> dict[tuple[str, str], int]:
|
|
130
144
|
"""Extract kerning pairs from the GPOS table of a font.
|
|
131
145
|
|
|
132
146
|
:param font: A fontTools TTFont object.
|
|
@@ -325,7 +339,7 @@ class FTFontInfo:
|
|
|
325
339
|
except (KeyError, AttributeError):
|
|
326
340
|
kern = {}
|
|
327
341
|
with suppress(Exception):
|
|
328
|
-
kern.update(
|
|
342
|
+
kern.update(_get_gpos_kerning(self.font))
|
|
329
343
|
|
|
330
344
|
return kern
|
|
331
345
|
|
|
@@ -532,7 +546,7 @@ class FTTextInfo:
|
|
|
532
546
|
attributes["stroke-width"] = float(stroke_width) / self.scale
|
|
533
547
|
return new_element(
|
|
534
548
|
"path",
|
|
535
|
-
data_text=self.text,
|
|
549
|
+
data_text=_sanitize_svg_data_text(self.text),
|
|
536
550
|
d=self.font.get_text_svgd(self.text),
|
|
537
551
|
**attributes,
|
|
538
552
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/__init__.py
RENAMED
|
File without changes
|
{svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/bound_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/bounding_boxes/supports_bounds.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/constructors/new_element.py
RENAMED
|
File without changes
|
|
File without changes
|
{svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight/font_tools/comp_results.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{svg_ultralight-0.45.0 → svg_ultralight-0.45.1}/src/svg_ultralight.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|