From f483fb8e9d1e994b33e9b08d2515dc4100126531 Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Tue, 31 Jan 2012 20:49:49 +0000 Subject: [PATCH] Fix bug #7998 and related issues: - 0x200c is equivalent to \textcompwordmark - 0x2011 is equivalent to \nobreakdash- - 0x2009 is a breakable thin space (the old definition was non-breakable) - 0x202f is a non-breakable thin space - add spaces 0x2007, 0x2008, 0x200a and 0x200b git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40694 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/unicodesymbols | 18 +++++++++--------- src/insets/InsetSpecialChar.cpp | 10 +++++++--- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/lib/unicodesymbols b/lib/unicodesymbols index 01cf173f4c..06f9f2146a 100644 --- a/lib/unicodesymbols +++ b/lib/unicodesymbols @@ -1581,17 +1581,17 @@ 0x2004 "\\;" "" "" "\\;" "" # THREE-PER-EM SPACE 0x2005 "\\:" "" "" "\\:" "" # FOUR-PER-EM SPACE 0x2006 "\\," "" "" "\\," "" # SIX-PER-EM SPACE -#0x2007 "" "" "" "" "" # FIGURE SPACE -#0x2008 "" "" "" "" "" # PUNCTUATION SPACE -0x2009 "\\," "" "" "\\," "" # THIN SPACE -#0x200a "" "" "" "" "" # HAIR SPACE -#0x200b "" "" "" "" "" # ZERO WIDTH SPACE -#0x200c "" "" "" "" "" # ZERO WIDTH NON-JOINER +0x2007 "\\LyXFigureSpace" "\\newcommand*\\LyXFigureSpace{\\hphantom{0}}" "" "\\LyXFigureSpace" "\\newcommand*\\LyXFigureSpace{\\hphantom{0}}" # FIGURE SPACE +0x2008 "\\LyXPunctSpace" "\\newcommand*\\LyXPunctSpace{\\hphantom{,}}" "" "\\LyXPunctSpace" "\\newcommand*\\LyXPunctSpace{\\hphantom{,}}" # PUNCTUATION SPACE +0x2009 "\\LyXThinSpace" "\\newcommand*\\LyXThinSpace{\\,\\hspace{0pt}}" "" "\\LyXThinSpace" "\\newcommand*\\LyXThinSpace{\\,\\hspace{0pt}}" # THIN SPACE +0x200a "\\LyXHairSpace" "\\newcommand*\\LyXHairSpace{\\hspace{1pt}}" "" "\\LyXHairSpace" "\\newcommand*\\LyXHairSpace{\\hspace{1pt}}" # HAIR SPACE +0x200b "\\LyXZeroWidthSpace" "\\newcommand*\\LyXZeroWidthSpace{\\hspace{0pt}}" "" "\\LyXZeroWidthSpace" "\\newcommand*\\LyXZeroWidthSpace{\\hspace{0pt}}" # ZERO WIDTH SPACE +0x200c "\\textcompwordmark" "" "" "" "" # ZERO WIDTH NON-JOINER #0x200d "" "" "" "" "" # ZERO WIDTH JOINER #0x200e "" "" "" "" "" # LEFT-TO-RIGHT MARK #0x200f "" "" "" "" "" # RIGHT-TO-LEFT MARK 0x2010 "-" "" "" "" "" # HYPHEN # identic in LaTeX to FIGURE DASH -#0x2011 "" "" "" "" "" # NON-BREAKING HYPHEN +0x2011 "\\nobreakdash-" "amsmath" "" "" "" # NON-BREAKING HYPHEN 0x2012 "-" "" "" # FIGURE DASH 0x2013 "\\textendash" "" "" # EN DASH 0x2014 "\\textemdash" "" "" # EM DASH @@ -1606,7 +1606,7 @@ 0x201c "\\textquotedblleft" "" "" # LEFT DOUBLE QUOTATION MARK 0x201d "\\textquotedblright" "" "" # RIGHT DOUBLE QUOTATION MARK 0x201e "\\quotedblbase" "" "" # DOUBLE LOW-9 QUOTATION MARK -#0x201f "" "" "" # DOUBLE LOW-REVERSED-9 QUOTATION MARK +#0x201f "" "" "" # DOUBLE HIGH-REVERSED-9 QUOTATION MARK 0x2020 "\\dag" "" "" "\\dagger" "" # DAGGER 0x2021 "\\ddag" "" "" "\\ddagger" "" # DOUBLE DAGGER 0x2022 "\\textbullet" "textcomp" "" # BULLET @@ -1622,7 +1622,7 @@ #0x202c "" "" "" "" "" # POP DIRECTIONAL FORMATTING #0x202d "" "" "" "" "" # LEFT-TO-RIGHT OVERRIDE #0x202e "" "" "" "" "" # RIGHT-TO-LEFT OVERRIDE -#0x202f "" "" "" "" "" # NARROW NO-BREAK SPACE +0x202f "\\," "" "" "\\," "" # NARROW NO-BREAK SPACE 0x2030 "\\textperthousand" "textcomp" "" # PER MILLE SIGN 0x2031 "\\textpertenthousand" "textcomp" "" # PER TEN THOUSAND SIGN 0x2032 "\\textasciiacute" "textcomp" "" "\\prime" "" # PRIME diff --git a/src/insets/InsetSpecialChar.cpp b/src/insets/InsetSpecialChar.cpp index 1fe6840df5..9e7346ffbf 100644 --- a/src/insets/InsetSpecialChar.cpp +++ b/src/insets/InsetSpecialChar.cpp @@ -243,8 +243,10 @@ int InsetSpecialChar::plaintext(odocstream & os, OutputParams const &) const { switch (kind_) { case HYPHENATION: - case LIGATURE_BREAK: return 0; + case LIGATURE_BREAK: + os.put(0x200c); + return 1; case END_OF_SENTENCE: os << '.'; return 1; @@ -258,7 +260,7 @@ int InsetSpecialChar::plaintext(odocstream & os, OutputParams const &) const os << '/'; return 1; case NOBREAKDASH: - os << '-'; + os.put(0x2011); return 1; } return 0; @@ -295,7 +297,9 @@ docstring InsetSpecialChar::xhtml(XHTMLStream & xs, OutputParams const &) const { switch (kind_) { case HYPHENATION: + break; case LIGATURE_BREAK: + xs << XHTMLStream::ESCAPE_NONE << "‌"; break; case END_OF_SENTENCE: xs << '.'; @@ -310,7 +314,7 @@ docstring InsetSpecialChar::xhtml(XHTMLStream & xs, OutputParams const &) const xs << XHTMLStream::ESCAPE_NONE << "⁄"; break; case NOBREAKDASH: - xs << '-'; + xs << XHTMLStream::ESCAPE_NONE << "‑"; break; } return docstring();