]> git.donarmstrong.com Git - lilypond.git/commitdiff
Improve French typography in HTML docs
authorJohn Mandereau <john.mandereau@gmail.com>
Sun, 27 Apr 2008 12:02:37 +0000 (14:02 +0200)
committerJohn Mandereau <john.mandereau@gmail.com>
Sun, 27 Apr 2008 12:02:37 +0000 (14:02 +0200)
Documentation/fr/user/macros.itexi
python/langdefs.py

index 024eaae1cf4fd073529bee28d2844daf1d56df8a..9fdefe58767eff35d3589f84ff892cf657bf48fc 100644 (file)
 @end html
 @end macro
 
-@c FIXME: hack unbreakable thin spaces
 @macro qq{TEXT}
 @html
-&laquo;&nbsp;\TEXT\&nbsp;&raquo;
+&laquo;<font size="-4">&nbsp;</font>\TEXT\<font size="-4">&nbsp;</font>&raquo;
 @end html
 @end macro
 @end ifhtml
 @end xml
 @end macro
 
-@c FIXME: hack unbreakable thin spaces
 @macro qq{TEXT}
 @xml
-&laquo;&nbsp;\TEXT\&nbsp;&raquo;
+&laquo;<font size="-4">&nbsp;</font>\TEXT\<font size="-4">&nbsp;</font>&raquo;
 @end xml
 @end macro
 @end ifdocbook
index 80a1c7f244e51b9175aced2480c3eda490b31169..d3b6a0872df7cbef8a94a25e957ebe2b9bb2501c 100644 (file)
@@ -36,17 +36,28 @@ class LanguageDef:
 
 site = LanguageDef ('en', 'English', webext='')
 
-html_page_body = re.compile ('</?body>', re.M | re.I)
+html_body_re = re.compile ('<body.*?>', re.I)
+html_end_body_re = re.compile ('</body>', re.I)
 french_html_typo_rules = ((' :', '&nbsp;:'),
                           (' ;', '&nbsp;;'),
-                          (' ?', '&thinsp;?'),
-                          (' !', '&thinsp;!'))
+                          (' ?', '<font size="-4">&nbsp;</font>?'),
+                          (' !', '<font size="-4">&nbsp;</font>!'))
 
 def french_html_filter (page):
-    parts = html_page_body.split (page)
+    m = html_page_body_re.search (page)
+    if m:
+        body_begin = m.end ()
+    else:
+        body_begin = 0
+    m = html_end_body_re.search (page)
+    if m:
+        body_end = m.start ()
+    else:
+        body_end = len (page)
+    body = page[body_begin:body_end]
     for r in french_html_typo_rules:
-        parts[1] = parts[1].replace (r[0], r[1])
-    return parts[0] + '<body>' + parts[1] + '</body>' + parts[2]
+        body = body.replace (r[0], r[1])
+    return page[:body_begin] + body + page[body_end:]
 
 fr = LanguageDef ('fr', 'français', double_punct_char_sep='&nbsp;', html_filter = french_html_filter)
 es = LanguageDef ('es', 'español')