[voikko] Mozvoikko 1.0.1 Windows bugi

Andris Pavenis andris.pavenis at iki.fi
Sun Mar 21 22:55:36 EET 2010


21.3.2010 21:09, Andris Pavenis kirjoitti:
> 19.03.2010 19:39, Ville Pohjanheimo kirjoitti:
>> Moi
>>
>> Päivitin pari viikkoa sitten AMOssa jaellun oikoluvun tuohon 10.2.
>> julkaisemaasi 1.0.1 versioon. Kaikki näyttää hyvältä Linuxilla, mutta
>> Windowsilla jokin on vialla, koska kaikki f-kirjaimella alkavat sanat
>> (folio, fuusio) on alleviivattu virheelliseksi (muuten toimii kyllä).
>> Voikon ehdotukset sanalle ovat samanlaisia kuin jo kirjoitettu sana ja
>> "korjauksen" valitseminen poistaa alleviivauksen vain hetkeksi.
>>
>> Olen kokeillut tota vaan Windows Vistassa / Firefox 3.6:ssa.
>>
>> Mitään havaintoa tosta? Tai missä vika voisi olla? Voikossa vai
>> mozvoikossa? Voikostahan tuli uusi versio (2.3.1) 17.2.
>
> Voin vahvistaa että minäkin voin toistaa virheen mutta ainoastaan
> Windowsissa (eikä Linuxissa). Se näyttää olevan libvoikko:n ongelma eikä
> uusi version 2.3.1 korjaa mitään.
>
> Vähän debugointi (käänsin voikkospell lähdekoodeista testaamista varten)
> paljastaa että:
>
> voikko_normalise() kutsuttu voikko_spell_ucs4():istä palauttaa 
> 'ffioosio' jos
> argumentti on 'fuusio'.
>
> Todellisuudessa tilanne on vielä huonompaa: 'f' kirjaimen läsnäolo 
> sanassa
> riittää, sen ei pitää olla sana alussa.
>
> Myös: kokeilkaa sana 'Chile' ja saatte saman virheen.
>
> Epäilen että siinä on rakenne L"\ujotakin". Se ei näytä toimivan hyvin 
> Visual C++
> kanssa. Varmaan kannattaisi käyttää jotakin muutta kuin:
>
> struct Conv_1to2
> {
>     uint32_t ch;
>     wchar_t ch_subst;
> };
>
Todellinen syy on Unicoden käyttö lähdekoodissa. Jos VC++:ille määrätään 
että lähdekoodin koodaus on
Unicode silloin libvoikko ei käänny VC++ 2005 kanssa. Yksinkertaisemmin 
on varmaan välttää
Unicode merkkejä libvoikon koodista:

Index: character/charset.cpp
===================================================================
--- character/charset.cpp    (revision 3254)
+++ character/charset.cpp    (working copy)
@@ -136,8 +136,8 @@
  const size_t N_1TO2 = 5; /* Number of entries in this table */
  const wchar_t * CONV_1TO2 =
      /* Letterlike Symbols --> Latin-1 Supplement / Basic Latin */
-    L"\u2103" L"°C"  /* U+2103 DEGREE CELSIUS <--> U+00B0 DEGREE SIGN + 
U+0043 LATIN CAPITAL LETTER C */
-    L"\u2109" L"°F"  /* U+2109 DEGREE FAHRENHEIT <--> U+00B0 DEGREE 
SIGN + U+0046 LATIN CAPITAL LETTER F */
+    L"\u2103" L"\u00B0" L"C"  /* U+2103 DEGREE CELSIUS <--> U+00B0 
DEGREE SIGN + U+0043 LATIN CAPITAL LETTER C */
+    L"\u2109" L"\u00B0" L"F"  /* U+2109 DEGREE FAHRENHEIT <--> U+00B0 
DEGREE SIGN + U+0046 LATIN CAPITAL LETTER F */
      /* Alphabetic Presentation Forms --> Basic Latin */
      L"\uFB00" L"ff"  /* LATIN SMALL LIGATURE FF <--> 2 X LATIN SMALL 
LETTER F */
      L"\uFB01" L"fi"  /* LATIN SMALL LIGATURE FI <--> LATIN SMALL 
LETTER F + LATIN SMALL LETTER I */


> Andris




More information about the voikko mailing list