diff --git a/src/libprs500/ebooks/lrf/html/convert_from.py b/src/libprs500/ebooks/lrf/html/convert_from.py
index 3465d32c79..a058195fdf 100644
--- a/src/libprs500/ebooks/lrf/html/convert_from.py
+++ b/src/libprs500/ebooks/lrf/html/convert_from.py
@@ -999,28 +999,41 @@ class HTMLConverter(object):
return end_page
def block_properties(self, tag_css):
- ans = {}
- for key in ('topskip', 'footskip', 'sidemargin'):
- ans[key] = self.book.defaultBlockStyle.attrs[key]
- src = [None for i in range(4)]
- if tag_css.has_key('padding'):
- msrc = tag_css['padding'].split()
- for i in range(len(msrc)):
- src[i] = msrc[i]
- i = 0
- for c in ('top', 'right', 'bottom', 'left'):
- if tag_css.has_key('padding-'+c):
- src[i] = tag_css['padding-'+c]
- i += 1
+ def get(what):
+ src = [None for i in range(4)]
+ if tag_css.has_key(what):
+ msrc = tag_css[what].split()
+ for i in range(len(msrc)):
+ src[i] = msrc[i]
+ i = 0
+ for c in ('-top', '-right', '-bottom', '-left'):
+ if tag_css.has_key(what+c):
+ src[i] = tag_css[what+c]
+ i += 1
+ return src
+
+ s1, s2 = get('margin'), get('padding')
- t = {}
- t['topskip'], t['footskip'], t['sidemargin'] = src[0], src[2], src[3]
- for key in ('topskip', 'footskip', 'sidemargin'):
- if t[key] is not None:
- val = self.unit_convert(t[key])
+ bl = str(self.current_block.blockStyle.attrs['blockwidth'])+'px'
+ def set(default, one, two):
+ fval = None
+ if one is not None:
+ val = self.unit_convert(one, base_length=bl)
if val is not None:
- ans[key] = val
+ fval = val
+ if two is not None:
+ val = self.unit_convert(two, base_length=bl)
+ if val is not None:
+ fval = val if fval is None else fval + val
+ if fval is None:
+ fval = default
+ return fval
+
+ ans = {}
+ ans['topskip'] = set(self.book.defaultBlockStyle.attrs['topskip'], s1[0], s2[0])
+ ans['footskip'] = set(self.book.defaultBlockStyle.attrs['footskip'], s1[2], s2[2])
+ ans['sidemargin'] = set(self.book.defaultBlockStyle.attrs['sidemargin'], s1[3], s2[3])
return ans
@@ -1197,12 +1210,14 @@ class HTMLConverter(object):
def text_properties(self, tag_css):
indent = self.book.defaultTextStyle.attrs['parindent']
if tag_css.has_key('text-indent'):
- indent = self.unit_convert(str(tag_css['text-indent']), pts=True)
- if not indent:
+ bl = str(self.current_block.blockStyle.attrs['blockwidth'])+'px'
+ indent = self.unit_convert(str(tag_css['text-indent']), pts=True, base_length=bl)
+ if not indent:
indent = 0
if indent > 0 and indent < 10 * self.minimum_indent:
indent = int(10 * self.minimum_indent)
+
fp = self.font_properties(tag_css)[0]
fp['parindent'] = indent
@@ -1226,6 +1241,13 @@ class HTMLConverter(object):
''' Ensure padding and text-indent properties are respected '''
text_properties = self.text_properties(tag_css)
block_properties = self.block_properties(tag_css)
+ indent = (float(text_properties['parindent'])/10) * (self.profile.dpi/72.)
+ margin = float(block_properties['sidemargin'])
+ # Since we're flattening the block structure, we need to ensure that text
+ # doesn't go off the left edge of the screen
+ if indent < 0 and margin + indent < 0:
+ text_properties['parindent'] = int(-margin * (72./self.profile.dpi) * 10)
+
align = self.get_alignment(tag_css)
def fill_out_properties(props, default):
diff --git a/src/libprs500/ebooks/lrf/lit/convert_from.py b/src/libprs500/ebooks/lrf/lit/convert_from.py
index f40c99af28..0329384204 100644
--- a/src/libprs500/ebooks/lrf/lit/convert_from.py
+++ b/src/libprs500/ebooks/lrf/lit/convert_from.py
@@ -90,8 +90,6 @@ def process_file(path, options, logger=None):
ext = '.lrs' if options.lrs else '.lrf'
options.output = os.path.abspath(os.path.basename(os.path.splitext(path)[0]) + ext)
options.output = os.path.abspath(os.path.expanduser(options.output))
- if options.minimum_indent == 0:
- options.minimum_indent = 10
options.use_spine = True
html_process_file(htmlfile, options, logger=logger)