[voikko-devel] Unicode-asiaa
Teemu Likonen
tlikonen at iki.fi
Sun Aug 13 01:10:16 EEST 2006
Harri Pitkänen kirjoitti:
> 1) Määritellään lista merkeistä, jotka voivat sellaisenaan olla
> hyväksyttäviä tekstissä. Tämä ei ole aivan sama asia kuin keväällä
> puheena ollut lista suomenkielisessä tekstissä hyväksyttävistä
> merkeistä, sillä jossain määrin on järkevää hyväksyä ainakin joitakin
> yleisimpiä vieraskielisiä kirjaimia vaikkapa nimissä tai
> kreikkalaisia kirjaimia yksiköissä yms.
Tarkoitatko yksinään olevia merkkejä, siis tavallaan "välilyönnit merkin
molemmin puolin" -tilannetta? Tuleeko siitä ongelmia, jos tällaisessa
tilanteessa hyväksytään aivan kaikki merkit? Myös ilmaisu "x-merkki" on
tavallinen. x:n paikalla voi olla mitä tahansa.
Vaan pelkäänpä, etten tässä ihan ymmärtänyt, mitä tarkoitit :)
> 2) Tehdään toinen lista merkeistä tai merkkiyhdistelmistä, jotka ovat
> hyväksyttäviä mutta jotka kuitenkin muutetaan joksikin toiseksi
> merkiksi ennen Malagalle antamista. Teemu voisikin listata nämä
> muunnokset, koska on näitä jo todo-listalle laittanut ja hallitsee
> asiat varmasti paremmin kuin minä. Siis muodossa
> U+1234 + U+5678 -> U+9012 (yhdistävät tarkkeet) ja
> U+1111 -> U+2222 (heittomerkit, yhdysviivat)
> Muunnoksen suunta on siis aina niin, että muunnetaan siihen merkkiin
> jota Suomi-malagassa on käytetty. Siis HYPHEN -> HYPHEN-MINUS. Jos
> saisin noista valmiin listan, siitä voisi helposti tehdä
> muunnostaulukon libvoikon lähdekoodiin.
Voi hoitaa.
Koko tämä yhdistävien tarkkeiden ajatus on käytännössä hyvin
teoreettinen suomen kielessä. Olen ollut käsittävinäni, että Unicodessa
oli aluksi tarkoitus (tai ainakin ehdotus) pysytellä niinkin
abstraktilla tasolla, että _kaikki_ tarkkeelliset merkit tehtäisiin
pelkästään erillisten yhdistävien tarkkeiden avulla. Siitä olisi kyllä
teoriassa monia etuja.
Edellistä ajatusta kuitenkin vastustettiin hyvästä syystä:
yhteensopivuus vanhojen käytäntöjen (mm. tekstitiedostojen) kanssa
menisi rikki. Kaikkiallahan on kirjoitettu valmiiksi yhdistettyjä
(pre-composed) merkkejä, ja niinpä ne otettiin mukaan Unicodeenkin.
Joidenkin kielten osalta se on vaatinut todella paljon erilaisten
yhdistelmien lisäämistä merkistöön.
Mutta... jokin sovellus voi sisäisesti haluta toimia niin,
että "irrottaa" tarkkeen perusmerkistä[*]. Esimerkiksi jokin hakusanoja
tallentava hakukone voisi koodata sanan "äiti" näin:
a <yhdistävä_treema> i t i
Tallennettua sanaa etsiessä voisi tällä tavoin helposti löytää tuon
sanan myös hakusanalla "aiti". Jättää vain yhdistävät tarkkeet
huomiotta; niiden koodithan ovat tiedossa (U+0300..U+036F). Jollain
toisella hakuoptiolla voitaisiin etsiä nimenomaan
merkkiä "a<yhdistävä_treema>". Joissain kielissä on useita tarkkeita
samassa perusmerkissä, ja haut voitaisiin rajata koskemaan juuri
tiettyjä tarkkeita. Pre-composed-merkkien kanssa hakualgoritmi menee
paljon monimutkaisemmaksi kuin yhdistäviä tarkkeita käytettäessä.
*) Veikkaan muuten, että Google tallentaa hakusanat juuri näin, koska se
osaa hakea ilman tarkkeita tai +-merkin avulla tarkasti pyydettyjä
tarkkeita.
Suomen kielen ja Voikon kannalta ei varmaankaan ole koskaan kovin suurta
käytännön tarvetta yhdistäville tarkkeille. Uskoakseni tuki niille on
kuitenkin suhteellisen helppo toteuttaa ehdottamallasi muunnoslistalla.
Juuri samoin minäkin sen ajattelin, ja voin luoda tämän
muunnostaulukon. Moinen saattaa jopa löytyä Unicode-standardista.
Ainakin toiseen suuntaan se löytyy helposti:
$ unicode ä
U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
UTF-8: c3 a4 UTF-16BE: 00e4 Decimal: ä
ä (Ä)
Uppercase: U+00C4
Category: Ll (Letter, Lowercase)
Bidi: L (Left-to-Right)
Decomposition: 0061 0308
Eli tietokannassa on merkistä myös Decomposition-tieto.
> 3) Libvoikkoon lisätään asetus, joka määrittelee mitä tehdään
> sanoille jotka sisältävät merkkejä, joita ei löydy kummastakaan
> edellä mainitusta ryhmästä. Nämä on joko hylättävä tai hyväksyttävä
> ilman oikolukua, sovelluksesta riippuu kumpi vaihtoehto on parempi.
> Oletus on hylätä sanat kuten nykyinen versio tekee. Hyväksyttäville
> sanoille tehdään kohdan 2
> mukainen "normalisaatio" ja korjausehdotukset annetaan aina tässä
> normaalimuodossa. Näin on pakko tehdä, koska jos käyttäjä kirjoittaa
> vaikkapa "vaaan" ja oikolukuohjelma haluaa ehdottaa korjausta
> "vaa'an" [1], ei se mitenkään voi tietää kumman tyyppistä
> heittomerkkiä käyttäjä haluaisi käyttää. Tämä "tavallisesti käytetty"
> heittomerkki on turvallisempi, sillä kaikissa sovelluksissa "oikea"
> heittomerkki ei välttämättä edes toimi.
Minusta on erittäin turvallista olettaa, että virallinen ä-kirjain on
suomen kielessä aina U+00E4 ja että sen hajotelma U+0061 + U+0308 jää
marginaaliin. Molemmat ovat tavallaan yhtä arvokkaita ja oikeita,
mutta "massat jyräävät" toisesta yleisemmän normin. Näin ollen vaikka
oikoluvulle tarjoisi kirjoitusvirheellisen, yhdistäviä tarkkeita
käyttäen muodostetun sanan, niin sen voi ilman tunnon tuskia palauttaa
pre-composed-muodossa - niin kuin ehdotit.
Sen sijaan mitä sanoisit siitä, että heittomerkin sisältävälle sanalle
annettaisiin samasta sanasta aina molemmat ehdotukset? Esimerkkisi
mukaan siis virhe "vaaan" tuottaisi ehdotukset "vaa'an" ja "vaa’an"
(plus muut mahdolliset ehdotukset).
Kahta erilaista yhdysmerkkiä en ehdottaisi. Käyttäjä ei osa tehdä eroa
sanojen
linja-auto
linja‐auto
välille, jos ja kun fontti näyttää molemmat yhdysmerkit samanlaisena.
Ellei sitten alemman sanan yhdysmerkki näy esimerkiksi neliönä, kun
sitä ei kaikissa fonteissa ole. Päätämme, että U+002D HYPHEN-MINUS on
se virallisempi ja ehdotuksissa tarjotaan aina sitä.
(Puolinukuksissa höpisin tällaista. Täytyy huomenna vielä lukea oma
teksti ja miettiä, mitä tuli kirjoitettua :-) )
More information about the devel
mailing list