mirror of
https://github.com/pklaus/brother_ql_web.git
synced 2024-05-25 11:56:53 +03:00
put get_fonts() in font_helpers.py
This commit is contained in:
parent
97b4df915d
commit
564c429332
|
@ -15,19 +15,16 @@ from brother_ql.devicedependent import models
|
||||||
from brother_ql import BrotherQLRaster, create_label
|
from brother_ql import BrotherQLRaster, create_label
|
||||||
from brother_ql.backends import backend_factory, guess_backend
|
from brother_ql.backends import backend_factory, guess_backend
|
||||||
|
|
||||||
MODEL = None
|
from font_helpers import get_fonts
|
||||||
BACKEND_CLASS = None
|
|
||||||
BACKEND_STRING_DESCR = None
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# globals:
|
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
MODEL = None
|
||||||
|
BACKEND_CLASS = None
|
||||||
|
BACKEND_STRING_DESCR = None
|
||||||
FONTS = None
|
FONTS = None
|
||||||
|
|
||||||
DEFAULT_FONT = None
|
DEFAULT_FONT = None
|
||||||
|
|
||||||
DEFAULT_FONTS = [
|
DEFAULT_FONTS = [
|
||||||
{'family': 'Minion Pro', 'style': 'Semibold'},
|
{'family': 'Minion Pro', 'style': 'Semibold'},
|
||||||
{'family': 'Linux Libertine', 'style': 'Regular'},
|
{'family': 'Linux Libertine', 'style': 'Regular'},
|
||||||
|
@ -42,43 +39,6 @@ def index():
|
||||||
"""
|
"""
|
||||||
return markdown.markdown(INDEX_MD)
|
return markdown.markdown(INDEX_MD)
|
||||||
|
|
||||||
def get_fonts(folder=None):
|
|
||||||
"""
|
|
||||||
Scan a folder (or the system) for .ttf / .otf fonts and
|
|
||||||
return a dictionary of the structure family -> style -> file path
|
|
||||||
"""
|
|
||||||
fonts = {}
|
|
||||||
if folder:
|
|
||||||
cmd = ['fc-scan', '--format', '"%{file}:%{family}:style=%{style}\n"', folder]
|
|
||||||
else:
|
|
||||||
cmd = ['fc-list', ':', 'file', 'family', 'style']
|
|
||||||
for line in subprocess.check_output(cmd).decode('utf-8').split("\n"):
|
|
||||||
logger.debug(line)
|
|
||||||
line.strip()
|
|
||||||
if not line: continue
|
|
||||||
if 'otf' not in line and 'ttf' not in line: continue
|
|
||||||
parts = line.split(':')
|
|
||||||
path = parts[0]
|
|
||||||
families = parts[1].strip().split(',')
|
|
||||||
styles = parts[2].split('=')[1].split(',')
|
|
||||||
if len(families) == 1 and len(styles) > 1:
|
|
||||||
families = [families[0]] * len(styles)
|
|
||||||
elif len(families) > 1 and len(styles) == 1:
|
|
||||||
styles = [styles[0]] * len(families)
|
|
||||||
if len(families) != len(styles):
|
|
||||||
if DEBUG:
|
|
||||||
print("Problem with this font:")
|
|
||||||
print(line)
|
|
||||||
continue
|
|
||||||
for i in range(len(families)):
|
|
||||||
try: fonts[families[i]]
|
|
||||||
except: fonts[families[i]] = dict()
|
|
||||||
fonts[families[i]][styles[i]] = path
|
|
||||||
if DEBUG:
|
|
||||||
print("Added this font:")
|
|
||||||
print(families[i], styles[i], path)
|
|
||||||
return fonts
|
|
||||||
|
|
||||||
@route('/api/print/text')
|
@route('/api/print/text')
|
||||||
@route('/api/print/text/')
|
@route('/api/print/text/')
|
||||||
@route('/api/print/text/<content>')
|
@route('/api/print/text/<content>')
|
||||||
|
@ -187,7 +147,7 @@ def main():
|
||||||
sys.stderr.write('Could not find any of the default fonts')
|
sys.stderr.write('Could not find any of the default fonts')
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
run(host='', port=args.port, debug=args.loglevel==logging.DEBUG)
|
run(host='', port=args.port, debug=DEBUG)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
38
font_helpers.py
Executable file
38
font_helpers.py
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
def get_fonts(folder=None):
|
||||||
|
"""
|
||||||
|
Scan a folder (or the system) for .ttf / .otf fonts and
|
||||||
|
return a dictionary of the structure family -> style -> file path
|
||||||
|
"""
|
||||||
|
fonts = {}
|
||||||
|
if folder:
|
||||||
|
cmd = ['fc-scan', '--format', '"%{file}:%{family}:style=%{style}\n"', folder]
|
||||||
|
else:
|
||||||
|
cmd = ['fc-list', ':', 'file', 'family', 'style']
|
||||||
|
for line in subprocess.check_output(cmd).decode('utf-8').split("\n"):
|
||||||
|
logger.debug(line)
|
||||||
|
line.strip()
|
||||||
|
if not line: continue
|
||||||
|
if 'otf' not in line and 'ttf' not in line: continue
|
||||||
|
parts = line.split(':')
|
||||||
|
path = parts[0]
|
||||||
|
families = parts[1].strip().split(',')
|
||||||
|
styles = parts[2].split('=')[1].split(',')
|
||||||
|
if len(families) == 1 and len(styles) > 1:
|
||||||
|
families = [families[0]] * len(styles)
|
||||||
|
elif len(families) > 1 and len(styles) == 1:
|
||||||
|
styles = [styles[0]] * len(families)
|
||||||
|
if len(families) != len(styles):
|
||||||
|
logger.debug("Problem with this font: " + line)
|
||||||
|
continue
|
||||||
|
for i in range(len(families)):
|
||||||
|
try: fonts[families[i]]
|
||||||
|
except: fonts[families[i]] = dict()
|
||||||
|
fonts[families[i]][styles[i]] = path
|
||||||
|
logger.debug("Added this font: " + str((families[i], styles[i], path)))
|
||||||
|
return fonts
|
Loading…
Reference in New Issue
Block a user