Bug 132301 - Wrong quotation mark after a single quote which follows more than 1 letter (eg l'" -> ok, qu'" -> ko)
Summary: Wrong quotation mark after a single quote which follows more than 1 letter (e...
Status: RESOLVED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Localization (show other bugs)
Version:
(earliest affected)
6.4.2.2 release
Hardware: All Linux (All)
: medium normal
Assignee: László Németh
URL:
Whiteboard: target:7.1.0 target:7.0.0.1
Keywords:
Depends on:
Blocks: AutoCorrect-Complete
  Show dependency treegraph
 
Reported: 2020-04-21 14:54 UTC by Silvain Dupertuis
Modified: 2020-06-05 12:54 UTC (History)
3 users (show)

See Also:
Crash report or crash signature:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Silvain Dupertuis 2020-04-21 14:54:21 UTC
Description:
When entering a (neutral) quotation mark, LibreOffice correctly put left double-angle quotes and a non-breaking space at the beginning of word, and the right kind at the end of a word.
This rule fails in case of word preceded by an article or any other word with single quote (articles et autres mots élidés : l', qu0, ). It rightly convert the apostrophe into a curly single quote, then considers it as the end of the word and put a right double-angle quote instead of a left one.

Steps to Reproduce:
1. Open a writer document using French language
2. Write something like this :
présenté comme l'"aumônier de ...


Actual Results:
... l’»aumônier ...

Expected Results:
... l’«aumônier ...


Reproducible: Always


User Profile Reset: No



Additional Info:
This problem has been there for ages, and it is the same in Microsoft Word, as far as I have observed.
Work around : type a space between and delete it later

l' "aumônier ...  > l’ «aumônier > manually delete this additional space

The problem concerns all these French articles, prepositions or adverbs finishing with a "e" letter which is replaced by an apostrophe before a vowel, without space after the apostrophe (le, de, que, ...)
Comment 1 V Stuart Foote 2020-04-21 16:17:55 UTC
Multitude of user options in the Tools -> AutoCorrect -> AutoCorrect Options on the Localized Options pane.

Anyhow sounds like you have a good work around of inserting the <space> to break the word bound.

IMHO => WF
Comment 2 Julien Nabet 2020-04-22 08:24:00 UTC
On pc Debian x86-64 with LO Debian package 6.4.3, I don't reproduce this.

Here's the result key by key of my test:
l -> l
' -> l’
" -> l’«<unbreakable space>
a -> l’«<unbreakable space>a
u -> l’«<unbreakable space>au
...
e -> l’«<unbreakable space>aumônier de
<space> -> l’«<unbreakable space>aumônier de<unbreakable space>»

On which env are you? If Linux, which distrib do you use and which version?
Can you give a try to brand new 6.4.3?
+ give a try at https://wiki.documentfoundation.org/QA/FirstSteps
Comment 3 Silvain Dupertuis 2020-04-22 09:02:22 UTC
I have ALWAYS seen this problem on all versions, all platforms, and also in Microsoft Word.

Now, this morning it is doing things right for the first time since many many years!

I think it is because of what I tried to do by adding these two entries in the Aucorrection table :

’&quot;	=> ’«
’»	=> ’«

I will have to test

As I also did a minor update of LO, I still need to check...

I have now LO 6.4.2.2 on Linux 4.15 / Ubuntu 18-04 / Locale fr-FR languages fr-FR or fr-CH

Note:fr-CH does not insert <nbsp> with «», when dr-FR does it, I do not know why)
Comment 4 Silvain Dupertuis 2020-04-22 09:22:22 UTC
Now it is working correctly, without my tentative correction in the autocorrection table.
Was that correction made at the level of the French dictionary?

Checking it more carefully, it works fine with one letter plus apostrophe, but NOT for more than one letter.

These examples work right 
l’« aa
- celle d’« 
- il m’« arrive
- je m’« assied...

This one is still wrong:
- pour qu’ »enfin...
Comment 5 Julien Nabet 2020-04-22 09:35:38 UTC
(In reply to Silvain Dupertuis from comment #3)
> ...
> Note:fr-CH does not insert <nbsp> with «», when dr-FR does it, I do not know
> why)

About this specific point, I noticed this patch:
https://cgit.freedesktop.org/libreoffice/core/commit/?id=8d7ec203956695475c5ce2c3e47a4aa012a48d39
+ tdf#127961
So it seemed done on purpose. I don't know if it's right or not since I'm not a typography expert.
Comment 6 Julien Nabet 2020-04-22 09:38:23 UTC
(In reply to Silvain Dupertuis from comment #4)
> Now it is working correctly, without my tentative correction in the
> autocorrection table.
> Was that correction made at the level of the French dictionary?
I don't know but that's fine if it's ok now.

> 
> Checking it more carefully, it works fine with one letter plus apostrophe,
> but NOT for more than one letter.
> 
> These examples work right 
> l’« aa
> - celle d’« 
> - il m’« arrive
> - je m’« assied...
> 
> This one is still wrong:
> - pour qu’ »enfin...
Indeed, I could reproduce this with master sources updated today.
Comment 7 Julien Nabet 2020-04-25 10:20:31 UTC
László: noticing https://cgit.freedesktop.org/libreoffice/core/commit/?id=8039c9eb27170a162830f0ecd2086010a7a5858f
author	László Németh <nemeth@numbertext.org>	2019-12-29 12:34:34 +0100
committer	László Németh <nemeth@numbertext.org>	2019-12-29 16:36:06 +0100
commit 8039c9eb27170a162830f0ecd2086010a7a5858f (patch)
tree d0520fefab6d1dc271ad543115cf210641675545
parent bde382a2568147c1a5eec0cb885856cd5aaae3ad (diff)
tdf#38394 AutoCorrect: fix ’« in French l’« word »
instead of using the bad ’" -> ’» autocorrection.

Change-Id: I48adbb2e8ca8e786c7835ff186d4580e856cf3c7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85945
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Tested-by: László Németh <nemeth@numbertext.org>

Indeed, we enter the block
1297 // tdf#38394 use opening quotation mark << in French l'<<word>>
1298 if ( !bSingle && !bSttQuote && cPrev == cApostrophe &&
1299    (nInsPos == 2 || (nInsPos > 2 && IsWordDelim( rTxt[ nInsPos-3 ] ))) )
1300 {
1301     const LanguageType eLang = GetDocLanguage( rDoc, nInsPos );
1302     if ( primary(eLang) == primary(LANGUAGE_FRENCH) )
1303         bSttQuote = true;
1304 }

(see https://opengrok.libreoffice.org/xref/core/editeng/source/misc/svxacorr.cxx?r=c73b9868#1297)


thought you might be interested in this one.

I tried this patch and it seems to work. I mean, it works for the case here and I used "make sw.check", no error.
However, I'd like to have your opinion because I suppose you didn't add this check for nothing so expect some regression with it.
diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 1242852d6213..6a8d1bbca127 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -1295,8 +1295,7 @@ void SvxAutoCorrect::DoAutoCorrect( SvxAutoCorrDoc& rDoc, const OUString& rTxt,
                         ( cEmDash == cPrev ) ||
                         ( cEnDash == cPrev );
                     // tdf#38394 use opening quotation mark << in French l'<<word>>
-                    if ( !bSingle && !bSttQuote && cPrev == cApostrophe &&
-                        (nInsPos == 2 || (nInsPos > 2 && IsWordDelim( rTxt[ nInsPos-3 ] ))) )
+                    if ( !bSingle && !bSttQuote && cPrev == cApostrophe && nInsPos >= 2  )
                     {
                         const LanguageType eLang = GetDocLanguage( rDoc, nInsPos );
                         if ( primary(eLang) == primary(LANGUAGE_FRENCH) )

Any thoughts here?
Comment 8 Commit Notification 2020-06-02 16:41:56 UTC
László Németh committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/967d1ba1f2a3f551c23ba4d9902632a0dc581224

tdf#132301 AutoCorrect: fix ’« in French qu’« word »

It will be available in 7.1.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 9 László Németh 2020-06-02 17:18:28 UTC
Fixed in master, and planned to back port to LO 7.0.

(In reply to Julien Nabet from comment #7)
I have restricted the fix for known cases to avoid
possible regressions, i.e. words with apostrophe at the end of
quotations.

Thanks for your help!
Comment 10 Commit Notification 2020-06-05 12:54:22 UTC
László Németh committed a patch related to this issue.
It has been pushed to "libreoffice-7-0":

https://git.libreoffice.org/core/commit/9bc5e0808c815374d8a56bf0234996f133b19744

tdf#132301 AutoCorrect: fix ’« in French qu’« word »

It will be available in 7.0.0.1.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.