forked from hswaw/labelmaker
Compare commits
3 commits
67efaca6dc
...
455230325e
Author | SHA1 | Date | |
---|---|---|---|
455230325e | |||
448ab133be | |||
|
bbe595fb20 |
3 changed files with 15 additions and 7 deletions
|
@ -27,6 +27,9 @@ RUN apt-get update && apt-get upgrade -y \
|
|||
libpq-dev \
|
||||
libpango-1.0.0 \
|
||||
libpangocairo-1.0.0 \
|
||||
# Installing Japaneese fonts (because it's fun)
|
||||
fonts-noto-cjk \
|
||||
fonts-vlgothic \
|
||||
|
||||
# Installing `poetry`:
|
||||
&& curl -sSL 'https://install.python-poetry.org' | python - \
|
||||
|
|
|
@ -48,8 +48,8 @@ class Renderer(object):
|
|||
context.paint()
|
||||
return new_surface.write_to_png()
|
||||
|
||||
def render_text(self, text, fontname, x, y, html=False):
|
||||
print("Fontname:", fontname)
|
||||
def render_text(self, text, fontname, size, x, y, html=False):
|
||||
print(f"Fontname: {fontname} {size}")
|
||||
self.context.save()
|
||||
if y != -1:
|
||||
self.context.translate(x, y)
|
||||
|
@ -59,10 +59,10 @@ class Renderer(object):
|
|||
layout._set_alignment(pango.Alignment.CENTER)
|
||||
if html:
|
||||
# Absolutely horrifying hack to fix broken text wrapping
|
||||
layout.apply_markup('<span font_desc="%s">%s</span>' % (fontname, text))
|
||||
layout.apply_markup('<span font_desc="%s %s">%s</span>' % (fontname, size, text))
|
||||
else:
|
||||
self.font.family = fontname.split()[0]
|
||||
self.font.size = pango.units_from_double(int(fontname.split()[1]))
|
||||
self.font.family = fontname
|
||||
self.font.size = pango.units_from_double(size)
|
||||
|
||||
layout.font_description = self.font
|
||||
layout.text = text
|
||||
|
@ -84,7 +84,7 @@ def stuff_preview(size):
|
|||
text = flask.request.args.get('text')
|
||||
html = flask.request.args.get('html') == '1'
|
||||
renderer = Renderer()
|
||||
renderer.render_text(text, 'Sans {}'.format(size), 0, -1, html)
|
||||
renderer.render_text(text, 'Noto Sans CJK JP', size, 0, -1, html)
|
||||
|
||||
preview = renderer.get_preview()
|
||||
return flask.Response(preview, mimetype='image/png')
|
||||
|
@ -95,7 +95,7 @@ def stuff_print(size):
|
|||
text = flask.request.args.get('text')
|
||||
html = flask.request.args.get('html') == '1'
|
||||
renderer = Renderer()
|
||||
renderer.render_text(text, 'Sans {}'.format(size), 0, -1, html)
|
||||
renderer.render_text(text, 'Noto Sans CJK JP', size, 0, -1, html)
|
||||
|
||||
data = renderer.surface.write_to_png()
|
||||
response = requests.post(
|
||||
|
|
|
@ -88,6 +88,11 @@
|
|||
$ curl http://label.hackerspace.pl/api/preview/60/?text=foobar&html=0 | feh -
|
||||
$ # To print the label
|
||||
$ curl -d "" http://label.hackerspace.pl/api/print/60/?text=foobar&html=0</pre>
|
||||
<p>
|
||||
<b>See also:</b><br>
|
||||
<a href="https://vector.label.hackerspace.pl">Vector Labelmaker</a><br>
|
||||
<a href="https://pixel.label.hackerspace.pl">Pixel Labelmaker</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue