mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Polish books: Add a tool to add or remove soft hyphens from the book text
This commit is contained in:
parent
6625560e81
commit
e757597971
30
src/calibre/ebooks/oeb/polish/hyphenation.py
Normal file
30
src/calibre/ebooks/oeb/polish/hyphenation.py
Normal file
@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env python2
|
||||
# vim:fileencoding=utf-8
|
||||
# License: GPL v3 Copyright: 2019, Kovid Goyal <kovid at kovidgoyal.net>
|
||||
|
||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||
|
||||
from calibre.ebooks.oeb.base import OEB_DOCS
|
||||
from polyglot.builtins import iteritems
|
||||
|
||||
|
||||
def add_soft_hyphens(container, report=None):
|
||||
from calibre.utils.hyphenation.hyphenate import add_soft_hyphens_to_html
|
||||
for name, mt in iteritems(container.mime_map):
|
||||
if mt not in OEB_DOCS:
|
||||
continue
|
||||
add_soft_hyphens_to_html(container.parsed(name), container.mi.language)
|
||||
container.dirty(name)
|
||||
if report is not None:
|
||||
report(_('Soft hyphens added'))
|
||||
|
||||
|
||||
def remove_soft_hyphens(container, report=None):
|
||||
from calibre.utils.hyphenation.hyphenate import remove_soft_hyphens_from_html
|
||||
for name, mt in iteritems(container.mime_map):
|
||||
if mt not in OEB_DOCS:
|
||||
continue
|
||||
remove_soft_hyphens_from_html(container.parsed(name))
|
||||
container.dirty(name)
|
||||
if report is not None:
|
||||
report(_('Soft hyphens removed'))
|
@ -21,6 +21,7 @@ from calibre.ebooks.oeb.polish.replace import smarten_punctuation
|
||||
from calibre.ebooks.oeb.polish.jacket import (
|
||||
replace_jacket, add_or_replace_jacket, find_existing_jacket, remove_jacket)
|
||||
from calibre.ebooks.oeb.polish.css import remove_unused_css
|
||||
from calibre.ebooks.oeb.polish.hyphenation import remove_soft_hyphens, add_soft_hyphens
|
||||
from calibre.utils.logging import Log
|
||||
from polyglot.builtins import iteritems
|
||||
|
||||
@ -35,6 +36,8 @@ ALL_OPTS = {
|
||||
'remove_unused_css':False,
|
||||
'compress_images': False,
|
||||
'upgrade_book': False,
|
||||
'add_soft_hyphens': False,
|
||||
'remove_soft_hyphens': False,
|
||||
}
|
||||
|
||||
CUSTOMIZATION = {
|
||||
@ -118,6 +121,15 @@ affecting image quality.</p>
|
||||
<p>Upgrade the internal structures of the book, if possible. For instance,
|
||||
upgrades EPUB 2 books to EPUB 3 books.</p>
|
||||
'''),
|
||||
|
||||
'add_soft_hyphens': _('''\
|
||||
<p>Add soft hyphens to all words in the book. This allows the book to be rendered
|
||||
better when the text is justified, in readers that do not support hyphenation.</p>
|
||||
'''),
|
||||
|
||||
'remove_soft_hyphens': _('''\
|
||||
<p>Remove soft hyphens from all text in the book.</p>
|
||||
'''),
|
||||
}
|
||||
|
||||
|
||||
@ -237,6 +249,15 @@ def polish_one(ebook, opts, report, customization=None):
|
||||
changed = True
|
||||
report('')
|
||||
|
||||
if opts.remove_soft_hyphens:
|
||||
rt(_('Removing soft hyphens'))
|
||||
remove_soft_hyphens(ebook, report)
|
||||
changed = True
|
||||
elif opts.add_soft_hyphens:
|
||||
rt(_('Adding soft hyphens'))
|
||||
add_soft_hyphens(ebook, report)
|
||||
changed = True
|
||||
|
||||
return changed
|
||||
|
||||
|
||||
@ -304,6 +325,8 @@ def option_parser():
|
||||
o('--smarten-punctuation', '-p', help=CLI_HELP['smarten_punctuation'])
|
||||
o('--remove-unused-css', '-u', help=CLI_HELP['remove_unused_css'])
|
||||
o('--compress-images', '-i', help=CLI_HELP['compress_images'])
|
||||
o('--add-soft-hyphens', '-H', help=CLI_HELP['add_soft_hyphens'])
|
||||
o('--remove-soft-hyphens', help=CLI_HELP['remove_soft_hyphens'])
|
||||
o('--upgrade-book', '-U', help=CLI_HELP['upgrade_book'])
|
||||
|
||||
o('--verbose', help=_('Produce more verbose output, useful for debugging.'))
|
||||
|
@ -68,6 +68,8 @@ class Polish(QDialog): # {{{
|
||||
'remove_jacket':_('<h3>Remove book jacket</h3>%s')%HELP['remove_jacket'],
|
||||
'remove_unused_css':_('<h3>Remove unused CSS rules</h3>%s')%HELP['remove_unused_css'],
|
||||
'compress_images': _('<h3>Losslessly compress images</h3>%s') % HELP['compress_images'],
|
||||
'add_soft_hyphens': _('<h3>Add soft-hyphens</h3>%s') % HELP['add_soft_hyphens'],
|
||||
'remove_soft_hyphens': _('<h3>Remove soft-hyphens</h3>%s') % HELP['remove_soft_hyphens'],
|
||||
'upgrade_book': _('<h3>Upgrade book internals</h3>%s') % HELP['upgrade_book'],
|
||||
}
|
||||
|
||||
@ -88,6 +90,8 @@ class Polish(QDialog): # {{{
|
||||
('remove_jacket', _('&Remove a previously inserted book jacket')),
|
||||
('remove_unused_css', _('Remove &unused CSS rules from the book')),
|
||||
('compress_images', _('Losslessly &compress images')),
|
||||
('add_soft_hyphens', _('Add s&oft hyphens')),
|
||||
('remove_soft_hyphens', _('Remove soft hyphens')),
|
||||
('upgrade_book', _('&Upgrade book internals')),
|
||||
])
|
||||
prefs = gprefs.get('polishing_settings', {})
|
||||
|
Loading…
x
Reference in New Issue
Block a user