|
Jak skonfigurować wygładzanie czcionek na pulpicie Autor: Danny, obiwan@mailmij.org, oryginał: http://dot.kde.org/989808269 Wersja polska: Łukasz Bromirski v2, 16 maj 2001, 18:25:40 GMT+1, oryginał tłumaczenia: http://www.prosys.com.pl/~szopen/tlumaczenia/antyaliasing_xf403.html Wielu różnych ludzi pytało jak skonfigurować czcionki z nowym rozszerzeniem Xft, które między innymi włącza wygładzanie (anty-aliasing). Poniżej prezentuję krótkie wprowadzenie do tego tematu. Konfiguracja rozszerzenia Xft razem z wygładzaniemXft to interfejs do rasteryzera freetype napisany przez Keitha Packarda, członka Projektu XFree86 Inc. Umożliwia on używanie nowego rozszerzenia renderującego w X'ach dla czcionek, przy użyciu ujednoliconego schematu nazewnictwa. W pliku /etc/X11/XftConfig (lub /usr/X11R6/lib/X11/XftConfig) znajdziesz konfigurację którą następnie musisz dostosować do swojego osobistego gustu. W tym dokumencie wyjaśnię składnię i zademonstruję niektóre rzeczy które możesz z nim zrobić. StrukturaZasadnicza struktura opiera się na 'wzorcu'. Wzorzec to zestaw par: nazwa/lista wartości, w których każda lista wartości zawiera jedną lub większą ilość wartości. Aplikacja żąda jakąś czcionki, na przykład: family:
"Arial" size: 12 encoding: "iso8859-1". Czyli czcionka o
rozmiarze 12 arial, z kodowaniem latin-1. Rozszerzenie Xft spróbuje teraz zastosować to
wywołanie do wszystkich czcionek dostępnych w systemie i wybierze tą, która najlepiej
pasuje. Zanim wykonane zostanie takie porównanie, Xft sprawdza plik XftConfig. Żadane
wywołanie może być tutaj rozszerzone wprost, na przykład:
match any family == "Arial" edit antialias = true;
Co włączy wygładzanie dla wszystkich czcionek z rodziny Arial. O dostępne czcionki odpytywany jest również serwer X'ów; XLFD zawiera tylko tyle informacji by dopasować czcionki mniej-więcej. Poniżej lista argumentów używanych w listach używanych do dopasowywania czcionek (w kolejności priorytetu, może już nie być aktualna!): foundry - rodzaj czcionki (string, np. "monotype")
Składniadir Dodaje katalog do listy przeszukiwań Xft w przypadku szukania czcionek. Kolejność wpisów nie jest istotna, Xft traktuje wszystkie czcionki tak samo. include i includeif Sprawia że Xft ładuje dodatkowe parametry konfiguracyjne ze wskazanego pliku. "includeif" nie spowoduje problemów jeśli wskazany plik nie istnieje. Jeśli nazwa pliku zaczyna się od "~", oznacza to że położenie pliku jest relatywne do katalogu domowego użytkownika - jest to przydatne we wszystkich sytuacjach z różnymi konfiguracjami dla różnych użytkowników. match edit ; Jeśli wzorzec z aplikacji pasuje do ciągu znaków po słowie "match", jest edytowany odpowiednio do instrukcji podanych po słowie "edit". Sprawdzanie zgodności wzorca odbywa się w ten sposób: match qual FIELD-NAME COMPARE CONSTANT gdzie qual to "any" (pasuje do jednej podanej czcionki) lub "all" (który pasuje do wszystkich czcionek). Na przykład: match all foundry=="monotype"
Sprawi że pasować będą wszystkie czcionki z rodzaju monotype (i tylko one zostaną wyedytowane). match any family=="arial"
Sprawi że pasować będą wszystkie czcionki z rodziny arial (i tylko one zostaną wyedytowane). FIELD-NAME to jedna z właściwości wymienionych wyżej w sekcji "Struktura". COMPARE to znaki <,> lub ==. CONSTANT to wartość pola do porównania, również wymienionych dla poszczególnych pól powyżej w sekcji "Struktura" Możesz podać wiele porównań zanim podasz słowo "edit". edit FIELD-NAME ASSIGN EXPR SEMI FIELD-NAME to jedna z powyższych (sprawdź sekcję "Struktura") plus dodatkowe: weight - waga czcionki (integer lub: light, medium(100),
ASSIGN może być znakiem: =, += lub =+. Znak =, pasująca wartość we wzorcu zostanie zastąpiona przez podane wyrażenie. Znaki += i =+ dodadzą odpowiednio na początku i na końcu listy wartości nową, do wskazanego pola. EXPR ustawia FIELD-NAME na wskazaną wartość SEMI to średnik. Możesz podać kilka instrukcji oddzielanych średnikiem. PrzykładyA teraz postaram się podać parę użytecznych konfiguracji i je wyjaśnić. Weź pod uwagę że są to konfiguracje mojego systemu i mogę używać innych czcionek niż ty, w związku z tym być może będziesz musiał adoptować przykłady do swoich potrzeb. 1) Jak sprawić by czcionki były dostępne dla Xft? Wylistuj swoje katalogi zawierające czcionki Type1 i TrueType przy użyciu polecenia dir. Na moim systemie (Mandrake 7.2) wygląda to tak: dir "/usr/X11R6/lib/X11/fonts/Type1"
2) Jak zastosować różne pliki konfiguracyjne XftConfig dla każdego użytkownika? Dodaj plik .xftconfig do katalogu domowego użytkownika, a do głównego pliku konfiguracyjnego (XftConfig) dopisz includeif "~/.xftconfig"
Teraz każdy użytkownik może mieć swoje specyficzne ustawienia, ale jednocześnie jeśli nie zostaną one zdefiniowane i pliku nie będzie - system nie będzie narzekał. 3) Jak zrobić aliasy dla czcionek? Zauważyłem że moja konsola z KDE szuka czcionek 'mono' kiedy chodzi jej o czcionki o stałej wielkości (fixed font). Z kolei 'console' używa gdy wybiorę z menu czcionek opcję 'linux'. W związku z tym, dodałem dwa aliasy dla czcionek, które nazwałem 'fixed': match any family == "fixed" edit family =+
"mono";
4) Wygładzanie powoduje że moje czcionki się rozmywają! Mimo że jest dużo szumu wokół wygładzania w X'ach, dobre czcionki wyglądają lepiej gdy nie są wygładzane. Proces ten powoduje dodanie szarych pikseli na obrzeżach, co może męczyć twoje oczy jeśli pracujesz z nimi odpowiednio długo. (Twoje oczy będą starały się wyostrzyć obraz, co oczywiście nie będzie działało bo będzie on nieostry). Z drugiej strony, dla bardzo małych czcionek wygładzanie może zwiększyć ich czytelność, ponieważ jeśli są one ostre, twój mózg musi się więcej namęczyć próbując dopasować obraz z paru pikseli do znanych znaków. Również dla bardzo dużych czcionek wygładzanie spowoduje że "porwane" czcionki będą wyglądały ładniej. Można oczywiście wyłaczyć wygładzanie dla wskazanych czcionek. W innych systemach operacyjnych, większość czcionek truetype nie jest wygładzana przy rozmiarach od 8 do 12, natomiast Type1 tak. Użyj poniższej sekwencji w swoim XftConfig by zastosować wygładzanie tylko dla czcionek o określonych rozmiarach: match5) Moje czcionki o stałych rozmiarach (fixed fonts) w ogóle się nie pojawiają lub wyglądają _bardzo_ źle w konsoli KDE i podobnych programach! Zauważyłem że większość czcionek fixed wcale nie informuje Xft że są fixed i w związku z tym traktuje on je jako czcionki mono spaced. Właśnie dlatego wyświetlane są tylko fragmenty znaków. Można ustawić dla tych czcionek ręcznie odstępy (zakładam że zastosowałeś już aliasy dla typu mono tak jak w pytaniu 3): match
6) Nie pojawiają się moje czcionki Symbol, Webdings itd.! Z jakiś powodów niektóre czcionki (symbole) nie są poprawnie rozpoznawane, i Xft pokaże w ich miejsce czcionkę domyślną, lub taką dla której znajdzie największe podobieństwo (co zwykle absolutnie nie jest tym o czym myślałeś). Dla czcionek Adobe Symbol i MS-webdings dopisałem następujące linijki by zaczęły działać: match
Wygodnym sposobem by sprawdzić te ustawienia, jest włączenie debugingu poleceniem: export XFT_DEBUG=1024
Wygeneruje to dużo danych wyjściowych, szczególnie jeśli masz wiele czcionek, ponieważ debug generuje listę wszystkich właściwości danej czcionki. Możesz również użyć innych wartości. By uzyskać ładne podsumowanie tego co się dzieje (czcionki która została zażądana, przypisania wykonanego przez XftConfig, dodatków serwera X i w końcu tego co zostało wybrane), możesz użyć XFT_DEBUG=2. 7) Dlaczego moje programy pod KDE startują tak wolno? Aktualnie, mechanizm Xft z XFree 4.0.3 musi przejrzeć plik XftConfig dla każdego startu programu. W dodatku, musi również odczytać informacje dla wszystkich czcionek. Nowsze wersje (z CVS) używają cache i są dużo szybsze. Problem ten może być szczególnie dotkliwy jeśli masz dużo czcionek, a jedynym sensownym rozwiązaniem wydaje się upgrade z CVS projektu XFree. 8) Mam wyświetlacz LCD, mogę używać techniki subpixel hinting zamiast zwykłego wygładzania? Możesz. Technika subpixel hinting używa kolorów zamiast szarych pikseli by wykonać wygładzanie. Nie posiadam takiego ekranu, więc nie mam pojęcia jak to wygląda, ale możesz pobawić się ustawieniami rgba. Spróbuj dodać match edit rgba=bgr;
lub "rgba=rgb" jeśli masz inny typ monitora. Dla pionowego wygładzania możesz próbować "rgba=vbgr" lub "rgba=vbgr". 9) Moje czcionki nadal wyglądają źle! Jeśli nie masz żadnych dobrych czcionek truetype, warto poszukać ich w internecie. Innym powodem dla którego twoje czcionki mogą nadal wyglądać źle, jest nieodpowiednia wersja programu freetype2. Wersja snapshot przed 2.0.2 została skompilowana z opcją która miała jakieś problemy z patentami. W związku z tym, standardowa wersja 2.0.2 kompilowana jest bez tej opcji. By to poprawić, ściągnij źródła do freetype2 i zmien plik include/freetype/config/ftoption.h w lini 314: #undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
na: #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
i przebuduj program ze źródeł. Sprawdź jeszcze plik README dołączony do paczki jeśli chciałbyś szczególy. Czcionka Adobe Courier wygląda koszmarnie na moim komputerze, więc wykonałem dla niej alis na czcionkę Lucida. Jeśli komukolwiek udałoby się uzyskać ładniejszy wygląd, byłbym wdzięczny za informacje. 10) Inne źródła w sieci... Pod poniższymi linkami możesz znaleźć więcej inforamcji o renderowaniu i rozszerzeniu Xft: SuSE HowTo: http://www.nadmm.com/show.php?story=articles/aafonts-HOWTO.inc Lars Knoll HowTo http://trolls.troll.no/~lars/fonts/qt-fonts-HOWTO.html Oczywiście, wszystkie uwagi będą mile widziane. |
|