Czcionki są, bywają, albo ich nie ma…

kacik.gif (1933 bytes)

PORADY I SZTUCZKI

Problem braku czcionek

Zróbmy trzy założenia: 1) robimy aplikacje w Developerze/2000, 2) aplikacja będzie
uruchamiana na wielu stacjach roboczych, 3) chcemy wykonać efektowny interfejs i
wykorzystać czcionki, które nie są standardowo dostarczane z Windows. Czy to nie brzmi
znajomo? I być może znany jest również problem. Praktyka pokazuje (zgodnie z tym co
pisał Murphy w swoich prawach), że nawet jeśli dostarczymy w pakiecie instalacyjnym
wszystkie używane w aplikacji czcionki, to zawsze znajdzie się komputer (lub kilka),
gdzie zamiast oczekiwanych ładnych czcionek będą wyświetlane jakieś literki-brzydule
albo będą tak małe, że nic nie da się przeczytać. Przyczyną jest oczywiście brak
czcionek, które użyliśmy w aplikacji, na skutek jakichś zabiegów administracyjnych
lub ciekawskiego użytkownika.
Możemy się oczywiście zgodzić na rozwiązanie, że użytkownik dzwoni do
administratora i mówi, że nie może pracować, a ten przybiega i w podskokach instaluje
brakujące czcionki. Gorzej, gdy klient, u którego wdrażamy aplikację znajduje się
paręset kilometrów od nas. Możemy zabezpieczyć się przed taką sytuacją lub
zminimalizować jej skutki. Rozwiązaniem jest zastosowanie aliasów czcionek, czyli
wskazania czcionek zastępczych, które mają być użyte gdy nie będą zainstalowane te
właściwe. Wówczas jedyny problem jaki zgłosi użytkownik będzie taki, że na jego
komputerze napisy wyglądają nieco inaczej niż na sąsiednim komputerze
kolegi/koleżanki. Użytkownik może pracować dalej, a administrator doinstaluje
właściwe czcionki w dogodnej dla niego chwili.

Aliasy czcionek

Alias czcionki jest alternatywną nazwą czcionki, jaka ma być użyta w sytuacji gdy
wymagana czcionka nie została zainstalowana w Windows. Na przykład, jeśli wartości
pól są wyświetlane czcionką Verdana, to możemy zdefiniować dla tej czcionki
alias Arial, czyli zastępczą czcionkę. Aliasy czcionek mogą być ustawione w
długie łańcuszki, na przykład: zamiast Verdana użyj Univers, zamiast Univers
użyj Tahoma, zamiast Tahoma użyj Albertus Medium, a jeśli nie ma Albertus
Medium
to użyj Arial, który jest zawsze w MS Windows.

UIFONT.ALI

Aliasy czcionek definiuje się w tekstowym pliku UIFONT.ALI, którego domyślna
lokalizacja to katalog <HOME>toolscommon (np. c:orawin95toolscommon) – w
przypadku Developera 1.x lub <HOME>toolscommon20 – w wersji 2.x.
W pliku można dopisywać szereg linii odwzorowujących daną czcionkę na inną
czcionkę. Na przykład, aby zamiast Verdana została użyta czcionka Univers,
należy wpisać linię:
Verdana = Univers
Jeśli nazwa czcionki zawiera spacje to należy użyć cudzysłowu:
"MS Sans Serif" = "Courier New"
Istnieje również możliwość odwzorowania czcionek o określonych rozmiarach. Na
przykład, teksty o rozmiarze 12 pisane czionką Univers mogą być zastępowane
tekstami o rozmiarze 10 pisanymi czcionką Tahoma. Należy w tym celu zrobić
następujące odwzorowanie:
Univers.12 = Tahoma.10
W analogiczny sposób można definiować bardziej rozbudowane odwzorowania
uwzględniające również pogrubienia, kursywy, szerokość i zestaw znaków. Na
przykład, czcionkę Fixed możemy odwzorować jako bardzo szczególne wystąpienie
czcionki Courier New:
Fixed = "Courier New".8.Plain.Medium.Normal
Nie wszystkie własności czcionek, które w ten sposób możemy odwzorować znajdują
zastosowanie pod MS Windows; pewne własności można wykorzystać tylko pod X Window.

Uwagi

Niestety, zdarza się, że aliasy czcionek nie chcą działać, albo działają
wybiórczo. Na przykład, zastępowanie czcionek działa w ograniczonym zakresie w Oracle
Forms 4.5.5. W tej wersji podmieniane są tylko czcionki w tekstach tła (np. etykiety
pól), a nie są podmieniane czcionki w polach. W wersji 4.5.6 podmieniane są już
wszystkie czcionki, w tym czcionki pól. W Developer 2.x działa to bez zarzutu.
Przyczyną ewentualnych problemów może być też jednoczesne użycie UIFONT.ALI i
zmiennej środowiskowej FORMS50_DEFAULTFONT (lub FORMS45_DEFAULTFONT) na skutek
zaistniałego konfliktu czcionek. Najlepiej stosować tylko jeden z tych dwóch
mechanizmów.
Plik UIFONT.ALI zawierający wiele aliasów i odwzorowań czcionek powoduje nieznaczne
spowolnienie uruchamiania aplikacji. Jeśli mechanizmu podmiany czcionek nie chcemy
stosować to najlepiej jest w ogóle usunąć ten plik lub zmienić mu nazwę.

Maciej Matysiak
maciej.matysiak@cs.put.poznan.pl
Instytut Informatyki Politechniki Poznańskiej