[ Pobierz całość w formacie PDF ]
.X Output Method (XOM).Podobnie jak X11R6, tak¿e istandard XOM stanowi czêœæ definicji X11.Jest on wygodnym punktem zaczepieniadla specjalistów opracowuj¹cych metody obs³ugi danych wyjœciowych pomocnym wobs³udze skryptów prawoczytelnych i glifów zale¿nych od kontekstu.W normalnychsytuacjach problemy te nie s¹ dostrzegalne dla programisty tworz¹cegoaplikacje, jeœli podsystem XOM zostanie zainicjowany.Rozwa¿a siê wprowadzenietego w takich pakietach narzêdziowych, jak Motif i GTK+.Wprowadzanie danych przez u¿ytkownikaKa¿dy, kto walczy³ ze standardowymi funkcjami scanf(3), wie, ¿e obs³uga danychwyjœciowych to po prostu bu³ka z mas³em.Prawdziwy programista musi po prostumieæ smyka³kê do obs³ugi wejœcia.Dotyczy to równie¿ wejœcia I18N.Mówi¹cdok³adnie, to nie samo wejœcie stwarza problemy; problemem jest rozpoznawanieznaczenia strumienia danych.Wczytanie danych wejœciowych do bufora jestwykonywane tylko raz, ale program mo¿e potrzebowaæ kilku przejœæ przezposzczególne segmenty strumienia wejœciowego, aby odpowiednio go przetworzyæ.Dlatego w³aœnie zaprzysiêgli programiœci jêzyka C nie martwi¹ siêograniczeniami fscanf(3), ale po prostu korzystaj¹ albo z fgets(3), albo zfread(3).Dziêki temu program mo¿e wypróbowaæ kilka ró¿nych konwersji danychwprowadzonych przez u¿ytkownika, a nie od razu zak³adaæ np.poprawnoœækonwersji za pomoc¹ formatu %d.Angielskojêzyczni programiœci próbuj¹cyodczytaæ liczbê mog¹ byæ ca³kowicie pewni, czy jest ona zakodowana jako ASCII.W wielu innych jêzykach istnieje jednak np.kilka metod zakodowania liczby„jeden” (Japoñczycy stosuj¹ co najmniej trzy sposoby).W najprostszej sytuacji obs³uga „miêdzynarodowych” danych wejœciowych jestzadaniem banalnym, poniewa¿ realizuje j¹ sprzêt.Istniej¹ przecie¿ specjalneklawiatury dla jêzyka francuskiego lub hebrajskiego.Po naciœniêciuodpowiedniego klawisza taka klawiatura wysy³a do procesora kod znaku z zestawuISO-8859-1 (w przypadku klawiatury francuskiej) lub ISO-8859-8 (dla klawiaturyhebrajskiej).Prawie na najni¿szym poziomie odwzorowanie kodów klawiatury mo¿ezostaæ zmienione przez serwer X, dziêki czemu mo¿na uzyskaæ nawet odwzorowaniekombinacji klawiszy daj¹ce znak sk³adany (np.w „trybie francuskim” naciœniêciea i nastêpnie ' da akcentowany znak á).Po stronie aplikacji obs³uga tego rodzaju wejœcia tak¿e jest banalnym zadaniem.W najgorszym przypadku program musi przekszta³ciæ napisy zakodowane zgodnie zumiejscowieniem u¿ytkownika na napisy z kodowaniem Unicode.Wszystko to da siê³atwo zrobiæ za pomoc¹ funkcji iconv(3) dostêpnej w bibliotece libc w wersjiGNU.Tak siê jednak sk³ada, ¿e dla wiêkszej czêœci ludnoœci œwiata (jeœli nie dlawiêkszoœci u¿ytkowników komputerów) po prostu niewygodne jest pos³ugiwanie siêklawiatur¹ umo¿liwiaj¹c¹ wprowadzenie ka¿dego potrzebnego znaku.Wykszta³conyChiñczyk ma w swoim repertuarze od piêciu do dziesiêciu tysiêcy znaków Han, zaœKoreañczyk potrafi algorytmicznie skonstruowaæ 11172 znaki Hangul.Istniejekilka sposobów wprowadzania tekstu wymagaj¹cego tak obszernego zestawu znaków,a najpopularniejszym jest wprowadzanie tekstu w zapisie fonetycznym (czêsto zapomoc¹ alfabetu ³aciñskiego).Nastêpnie zapis ten jest porównywany zes³ownikiem (a czêsto tak¿e „przerzedzany” lub przemieszczany na podstawieznanych zastosowañ w zdaniach i znajomoœci zasad gramatycznych, a tak¿eprzyzwyczajeñ u¿ytkownika).Na tej podstawie wytwarzana jest lista znaków,które mog¹ byæ ostatecznie umieszczone w tekœcie.Manipulowanie reprezentacj¹fonetyczn¹ przez u¿ytkownika nazywa siê preedycj¹, dla odró¿nienia tego procesuod ogólnego procesu edycji polegaj¹cego na wstawianiu, usuwaniu iprzemieszczaniu znaków oraz bloków znaków.Oczywiœcie, opisywana tu metoda wymaga znacznego wsparcia programistycznego.Tak kosztowny proces wymagaj¹cy u¿ycia baz danych i algorytmów sztucznejinteligencji jest czêsto uruchamiany oddzielnie.Oznacza to, ¿e aplikacjaprzetwarzaj¹ca tekst i serwer obs³uguj¹cy wejœcie musz¹ siê ze sob¹ komunikowaæzarówno przy obs³udze zawartoœci, jak i przy prezentacji u¿ytkownikowi danych„sprzê¿onych”.W X11R5 wprowadzono standard obs³ugi wejœcia (tzw.X Input Method), którynastêpnie zosta³ zmodyfikowany i sta³ siê obowi¹zkowy w X11R6.Umo¿liwia onkorzystanie z kilku alternatywnych sposobów prezentacji.W najprostszym z nichsam program zarz¹dzaj¹cy wejœciem bêdzie wyœwietla³ oddzielne okno preedycji.Po³o¿enie tego okna jest kontrolowane przez mened¿era okien (czyli ostatecznieprzez u¿ytkownika).Taka metoda jest oczywiœcie niezrêczna i rozpraszaj¹cauwagê, szczególnie wtedy, gdy program zarz¹dzaj¹cy wejœciem jest u¿ywanysporadycznie (tak by³oby np.przy pisaniu programu w jêzyku C z komentarzami wjêzyku japoñskim).Pozosta³e metody s¹ bardziej elastyczne, ale jednoczeœniebardziej skomplikowane.Wszystko kulminuje siê w metodzie dzia³aj¹cej „wlocie”, w której aplikacja przekazuje wywo³anie zwrotne do programuzarz¹dzaj¹cego wejœciem, umo¿liwiaj¹c mu przes³anie tekstu powsta³ego w wynikupreedycji i statusu sprzê¿enia zwrotnego ponownie do siebie.Dziêki temuaplikacja mo¿e np.prezentowaæ tekst po preedycji za pomoc¹ takiego samegokroju pisma, ale np
[ Pobierz całość w formacie PDF ]