Add japanese support #6

Merged
radex merged 1 commits from bulba/labelmaker:master into master 2024-08-22 16:56:22 +00:00
2 changed files with 10 additions and 7 deletions

View File

@ -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 - \

View File

@ -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(