mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 10:14:46 -04:00
Return log messages when running subsetting via fonttools
This commit is contained in:
parent
525851464a
commit
ee553442b7
@ -1,11 +1,19 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# License: GPLv3 Copyright: 2023, Kovid Goyal <kovid at kovidgoyal.net>
|
# License: GPLv3 Copyright: 2023, Kovid Goyal <kovid at kovidgoyal.net>
|
||||||
|
|
||||||
import sys, os
|
import os
|
||||||
from fontTools.subset import Subsetter, load_font, save_font
|
import sys
|
||||||
|
from logging.handlers import QueueHandler
|
||||||
|
from queue import Empty, SimpleQueue
|
||||||
|
|
||||||
|
from fontTools.subset import Subsetter, load_font, log, save_font
|
||||||
|
|
||||||
|
|
||||||
def subset(input_file_object_or_path, output_file_object_or_path, container_type, chars_or_text=''):
|
def subset(input_file_object_or_path, output_file_object_or_path, container_type, chars_or_text=''):
|
||||||
|
log_messages = SimpleQueue()
|
||||||
|
log_handler = QueueHandler(log_messages)
|
||||||
|
log.addHandler(log_handler)
|
||||||
|
try:
|
||||||
s = Subsetter()
|
s = Subsetter()
|
||||||
s.options.recommended_glyphs = True
|
s.options.recommended_glyphs = True
|
||||||
container_type = container_type.lower()
|
container_type = container_type.lower()
|
||||||
@ -17,13 +25,22 @@ def subset(input_file_object_or_path, output_file_object_or_path, container_type
|
|||||||
s.populate(unicodes=unicodes)
|
s.populate(unicodes=unicodes)
|
||||||
s.subset(font)
|
s.subset(font)
|
||||||
save_font(font, output_file_object_or_path, s.options)
|
save_font(font, output_file_object_or_path, s.options)
|
||||||
|
finally:
|
||||||
|
log.removeHandler(log_handler)
|
||||||
|
msgs = []
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
msgs.append(log_messages.get_nowait().getMessage())
|
||||||
|
except Empty:
|
||||||
|
break
|
||||||
|
return msgs
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import tempfile
|
import tempfile
|
||||||
src = sys.argv[-1]
|
src = sys.argv[-1]
|
||||||
with open(os.path.join(tempfile.gettempdir(), os.path.basename(src)), 'wb') as output:
|
with open(os.path.join(tempfile.gettempdir(), os.path.basename(src)), 'wb') as output:
|
||||||
subset(src, output, os.path.splitext(sys.argv[-1])[1][1:], 'abcdefghijk')
|
print('\n'.join(subset(src, output, os.path.splitext(sys.argv[-1])[1][1:], 'abcdefghijk')))
|
||||||
a, b = os.path.getsize(src), os.path.getsize(output.name)
|
a, b = os.path.getsize(src), os.path.getsize(output.name)
|
||||||
print(f'Input: {a} Output: {b}')
|
print(f'Input: {a} Output: {b}')
|
||||||
print('Written to:', output.name)
|
print('Written to:', output.name)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user