From 14611466246db5b2aae70ccefb4d539d81b6e082 Mon Sep 17 00:00:00 2001
From: Kovid Goyal
Date: Sat, 4 Aug 2007 21:57:13 +0000
Subject: [PATCH] Fix small caps support
---
src/libprs500/ebooks/lrf/html/convert_from.py | 22 +++++++++++--------
src/libprs500/ebooks/lrf/html/demo/demo.html | 2 +-
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/libprs500/ebooks/lrf/html/convert_from.py b/src/libprs500/ebooks/lrf/html/convert_from.py
index 5db6a286ff..9ba7608104 100644
--- a/src/libprs500/ebooks/lrf/html/convert_from.py
+++ b/src/libprs500/ebooks/lrf/html/convert_from.py
@@ -229,15 +229,19 @@ class Span(_Span):
normal_font_size = attrs['fontsize']
variant = attrs.pop('fontvariant', None)
if variant == 'small-caps':
- tokens = [ i.upper() for i in src.split()]
- spans = []
- for i in tokens:
- f, r = i[0], i[1:]+' '
- spans.append(f)
- spans.append(_Span(r, fontsize=normal_font_size-30))
- src = _Span(fontsize=normal_font_size)
- for i in spans:
- src.append(i)
+ dump = _Span(fontsize=normal_font_size-30)
+ temp = []
+ for c in src:
+ if c.isupper():
+ if temp:
+ dump.append(''.join(temp))
+ temp = []
+ dump.append(_Span(c, fontsize=normal_font_size))
+ else:
+ temp.append(c.upper())
+ src = dump
+ if temp:
+ src.append(''.join(temp))
family, key = attrs['fontfacename']
if fonts[family].has_key(key):
diff --git a/src/libprs500/ebooks/lrf/html/demo/demo.html b/src/libprs500/ebooks/lrf/html/demo/demo.html
index c73228ef88..c1264d93c9 100644
--- a/src/libprs500/ebooks/lrf/html/demo/demo.html
+++ b/src/libprs500/ebooks/lrf/html/demo/demo.html
@@ -167,7 +167,7 @@
- This is an example of small-caps.
+
This is an Example of small-caps.
It can also be used to highlight the start of a paragraph very effectively.