Życie pisze najbardziej oryginalne, najbardziej komiczne, a jednocześnie najbardziej dramatyczne scenariusze.
W rzeczywistości pole przyjmuje wartość 400 w wypadku czcionki normalnej, a 700 - pogrubionej. ů TmOverhang Rozmiar dodatkowej odległości między znakami czcionki rastro- wej stosowanej przez Windows w celu symulowarua efektu kursywy lub po- grubienia. Kiedy czcionka rastrowa ulega pochyleruu, wartość pola tmAveChar- Width nie zmienia się, ponieważ nie zmienia się długość łańcucha znaków zapisanego kursywą w porównaniu z długością tego samego łańcucha zapi- sanego czcionką normalną. W wypadku pogrubienia Windows musi nieco powiększyć szerokość każdego znaku. Wartość pola tmAveCharWidth pomruej- szona o tmOverhang jest równa wartości tmAveCharWidth dla tej samej czcion- ki bez pogrubierua. ů tmDigitizedAspectX i tmDigitizedAspectY Współczynruki skalowania właściwego wyglądu czcionki. Są to odpowiedniki wartości otrzymanych po wywołaniu funkcji GetDeviceCaps z argumentami LOGPIXELSX i LOGPIXELSY. Rozdział 17: Tekst i czcionki g1g ů tmFirstChar Kod pierwszego znaku danej czcionki. ů tmLastChar Kod ostatniego znaku czcionki. Jeżeli strukturę TEXTMETRIC otrzymano po wywołaniu GetTextMetricsW (wersja funkcji dla znaków szero- kich), pole to może mieć wartość większą niż 255. ů TmDefaultChar Kod znaku stosowany przez Windows do wyświetlenia zna- ków nie należących do czcionki (zwykle chodzi o prostokąt). ů TmBreakChar Znak stosowany przez Windows i aplikacje do określania poło- żenia przerw między słowami podczas justowania tekstu. O ile nie używasz jakiś dziwnych znaków (takich jak czcionka EBCDIC), TmBreakChar będzie miał kod spacji, czyli 32. ů Tmltalic Przyjmuje wartość ruezerową w wypadku kursywy. ů TmUnderlined Przyjmuje wartość ruezerową dla czcionki podkreślonej. ů TmStruckOut Przyjmuje wartość niezerową dla czcionki przekreślonej. ů TmPitchAndFamily Cztery mniej znaczące bity tej zmiennej są znacznikami określającymi niektóre własności czcionki, zdefiniowane przez następujące identyfikatory stałych w pliku WINGDI.H: Wartość Identyfikotor stałej 0x01 TMPF FIXED PITCH 0x02 TMPF VECTOR 0x04 TMPF TRUETYPE 0x04 TMPF DEVICE Pomimo mylącej nazwy znacznika TMPF FIXED PITCH najmniej znaczący bit ma wartość 1 przy czcionce o zmiennej szerokości. Drugi bit (TMPF VECTOR) przyjmie wartość 1 dla czcionki TrueType i innych, które stosują dowolną techni- kę skalowania konturów, na przykład PostScript. Znacznik TMPG I7EVICE zwią- zany jest z czcionką sprzętową (tzn. wbudowaną drukarki) w przeciwieństwie do czcionek GDI. Bardziej znaczące 4 bity omawianego pola odpowiedzialne są za opis rodziny czcionki i przyjmują takie same wartości, jak w polu lfPitchAndFamily struktury LOGFON'T. ů tmCharSet Identyfikator zestawu znaków. Zestawy znaków i Unicode Koncepcja zestawów znaków w Windows omawiana była w rozdziale 6, w któ- rym zetknąłeś się z niuansami ustawień międzynarodowych, m. in. klawiatury. W wypadku struktur LOGFONT i TEXTMETRIC zestaw znaków czcionki pożą- danej (lub rzeczywistej) jest identyfikowany przez liczbę jednobajtową z zakresu od 0 do 255. Identyfikatory te są następująco zdefiniowane w pliku WINGDI.H: lldefine ANSI_CNARSET 0 lldefi ne DEFAULT CHARSET 1 920 Część II: Gţafika (ciąg dalszy ze strony 921) ţţdefine SYMBOL CHARSET 2 4tdefine MAC_CHARSET 77 ţţdefine SHIFTJIS_CHARSET 128 itdefine HANGEUL CHARSET 129 ţţdefine HANGUL_CHARSET 129 ţţdefine JOHAB_CHARSET 130 ţţdefine G82312_CHARSET 134 4ţdefine CHINESEBIG5_CHARSET 136 ţţdefine GREEK CHARSET 161 ţţdefine TURKISH_CHARSET' 162 ildefine VIETNAMESE_CHARSET 163 ţţdefine HEBREW_CHARSET 177 ţţdefine ARABIC CHARSET 178 ţţdefine BALTIC CHARSET 186 ţţdefine RUSSIAN_CHARSET 204 ţţdefine THAI CHARSET 222 4ţdefine EASTEUROPE_CHARSET 238 itdefine OEM CHARSET 255 Koncepcja zestawu znaków jest podobna do strony kodowej, ale ściśle powiąza- na z Windows, identyfikatory zaś przyjmują wartości z zakresu od 0 do 255. Podobnie jak w wypadku pozostałych programów przedstawionych w tej książ- ce, możesz skompilować kod źródłowy PICKFONT niezależnie od ustawienia identyfikatora UNICODE. Na dołączanym do książki CD-ROM-ie znajdziesz obie wersje programów wynikowych w katalogach DEBUG i RELEASE. Zauważ, że łańcuch znaków wyświetlany przez program PICKFONT ma więk- szą długość w wersji Unicode. W obu wersjach ciąg rozpoczyna się tą samą se- kwencją kodów znakowych: od 0x40 do 0x45 oraz od 0x60 do 0x65. Bez względu na wybór zestawu znaków (z wyjątkiem SYMBOL-CHARSET) na ekrarue poja- wi się pięţ pierwszych wielkich liter alfabetu łacińskiego, a następnie pięć ma- łych (tzn. od A do E a następnie od a do e). Po uruchomieniu programu PICKFONT w wersji non-Unicode kolejne 12 zna- ków - kody znaków od OxCO do OxC5 oraz OxEO do OxE5 - będzie zależne od wybranego zestawu. W wypadku ANSI CHARSET będą to znaki niemal iden- tyczne jak poprzednio, wzbogacone jedynie o kreskę akcentową. Dla zestawu GREEK CODE wspomniane kody odpowiadają literom alfabetu greckiego, a dla RUSSIAN CHARSET będą to litery cyrylicy. Zmieniając zestaw znaków możesz jednak spowodować zmianę czcionki, jeśli czcionka rastrowa nie ma znaków, do- stępnych w TrueType. Przypomnij sobie, że większość czcionek TrueType jest typu Big Fonts i zawiera znaki charakterystyczne dla wielu zestawów. Jeśli używasz dalekowschodniej wersji Windows, znaki takie będą interpretowane jako dwu- bajtowe i wyświetlane w postaci ideografów. Po uruchomieniu programu PICKFONT w wersji Unicode w środowisku Win- dows NT, kody od OxCO do OxC5 oraz od OxEO do OxE5, będą zwykle (z wyjąt- kiem zestawu SYMBOL CHAlZSET) widoczne w wersji akcentowanej, ponieważ tak zostały zdefiniowane. Program wyświetla również znaki o kodach od 0x0390 do 0x0395 oraz od 0x03B0 do 0x03B5, które ze względu na zdefiniowarue w for- macie Unicode będą zawsze widoczne jako litery alfabetu greckiego. Analogicz- nie znaki o kodach od 0x0410 do 0x0415 oraz od 0x0430 do 0x0435 będą wyświe- Rozdział 17: Tekst i czcionki g2ţ tlane w postaci cyrylicy, choć mogą być niedostępne w wypadku czcionki do- myślnej. Chcąc uzyskać je w tradycyjny sposób musiałbyś wybrać odpowiedni zestaw znaków, jak GREEK CHARSET lub RUSSIAIVţCHARSET. W opisywa- nym wypadku kod zestawu znaków znajdujący się w strukturze LOGFONT jest wciąż ten sam - Unicode - i nie musisz go zmieniać w celu uzyskania znaków międzynarodowych. Zamiast tego identyfikator zestawu znaków sygnalizuje po- trzebę pobrania znaków z określonego zestawu