From d37cc4f641fcb9d61e2ac73c0f1d5fbf78e31e19 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sat, 1 Feb 2020 13:46:50 +0100 Subject: [PATCH] Font API: Support for script-specific samples --- src/pretix/control/forms/event.py | 2 +- src/pretix/control/forms/organizer.py | 2 +- .../templates/pretixcontrol/font_option.html | 4 ++-- .../templates/pretixcontrol/pdf/index.html | 3 +++ .../templates/pretixcontrol/pdf/webfonts.css | 16 +++++++++++++++- src/pretix/static/fonts/AND-Regular.ttf | Bin 0 -> 219320 bytes 6 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 src/pretix/static/fonts/AND-Regular.ttf diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index a1683d3ee2..c9b9d358bc 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -639,7 +639,7 @@ class EventSettingsForm(SettingsForm): if not event.has_subevents: del self.fields['frontpage_subevent_ordering'] self.fields['primary_font'].choices += [ - (a, a) for a in get_fonts() + (a, {"title": a, "data": v}) for a, v in get_fonts().items() ] diff --git a/src/pretix/control/forms/organizer.py b/src/pretix/control/forms/organizer.py index 4aca838d02..ea59d57451 100644 --- a/src/pretix/control/forms/organizer.py +++ b/src/pretix/control/forms/organizer.py @@ -312,7 +312,7 @@ class OrganizerSettingsForm(SettingsForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['primary_font'].choices += [ - (a, a) for a in get_fonts() + (a, {"title": a, "data": v}) for a, v in get_fonts().items() ] diff --git a/src/pretix/control/templates/pretixcontrol/font_option.html b/src/pretix/control/templates/pretixcontrol/font_option.html index 8171cbc6a2..33965ca135 100644 --- a/src/pretix/control/templates/pretixcontrol/font_option.html +++ b/src/pretix/control/templates/pretixcontrol/font_option.html @@ -1,2 +1,2 @@ -{% load i18n %}{% if widget.wrap_label %}{% endif %}{% include "django/forms/widgets/input.html" %}{% if widget.wrap_label %} {{ widget.label }}
{% trans "The quick brown fox jumps over the lazy dog." context "typography" %}{% endif %} +{% load getitem %}{% load i18n %}{% if widget.wrap_label %}{% endif %}{% include "django/forms/widgets/input.html" %}{% if widget.wrap_label %} {{ widget.label.title }}
{% trans "The quick brown fox jumps over the lazy dog." context "typography" %}{% if "sample" in widget.label.data %}
{{ widget.label.data.sample }}{% endif %}{% endif %} diff --git a/src/pretix/control/templates/pretixcontrol/pdf/index.html b/src/pretix/control/templates/pretixcontrol/pdf/index.html index 318257b504..5856069e07 100644 --- a/src/pretix/control/templates/pretixcontrol/pdf/index.html +++ b/src/pretix/control/templates/pretixcontrol/pdf/index.html @@ -403,9 +403,12 @@ {% for family, styles in fonts.items %} {% for style, formats in styles.items %} + {% if "sample" not in style %} giItT1WQy@!-/# + {% if "_sample" in styles %}{{ styles.sample }}{% endif %} + {% endif %} {% endfor %} {% endfor %} {% endblock %} diff --git a/src/pretix/control/templates/pretixcontrol/pdf/webfonts.css b/src/pretix/control/templates/pretixcontrol/pdf/webfonts.css index 438883da10..4c627cc79c 100644 --- a/src/pretix/control/templates/pretixcontrol/pdf/webfonts.css +++ b/src/pretix/control/templates/pretixcontrol/pdf/webfonts.css @@ -1,7 +1,20 @@ {% load static %} +@font-face { + font-family: 'AND'; + font-style: normal; + font-weight: normal; + src: url('{% static "fonts/AND-Regular.ttf" %}') format('truetype'); +} +@font-face { + font-family: 'AND'; + font-style: normal; + font-weight: bold; + src: url('{% static "fonts/AND-Regular.ttf" %}') format('truetype'); +} {% for family, styles in fonts.items %} {% for style, formats in styles.items %} +{% if "sample" not in style %} @font-face { font-family: '{{ family }}'; {% if style == "italic" or style == "bolditalic" %} @@ -19,7 +32,7 @@ {% if "truetype" in formats %}url('{% static formats.truetype %}') format('truetype'){% endif %}; } .preload-font[data-family="{{family}}"][data-style="{{style}}"] { - font-family: '{{ family }}'; + font-family: '{{ family }}', 'AND'; {% if style == "italic" or style == "bolditalic" %} font-style: italic; {% else %} @@ -32,5 +45,6 @@ {% endif %} } +{% endif %} {% endfor %} {% endfor %} diff --git a/src/pretix/static/fonts/AND-Regular.ttf b/src/pretix/static/fonts/AND-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..42f4593dbf36e572cb009005e2c83a3fb2ddaabf GIT binary patch literal 219320 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