Drukowanie przestało działać w jednym programie, a winna jest czcionka
Oto dziwna sprawa warta znajomości, bo objaw kieruje was w całkowicie złą stronę. Jeśli któryś program na waszym komputerze od połowy sierpnia odmawia drukowania albo wysypuje się, gdy każecie mu zapisać PDF, a drukarka ze wszystkiego innego działa bez zarzutu, sprawdźcie czcionkę.
Microsoft potwierdził błąd w sierpniowych aktualizacjach .NET Framework. Niektóre programy kończą teraz działanie błędem System.IO.FileFormatException w chwili, gdy próbują wydrukować lub wyeksportować cokolwiek napisane czcionką Calibri. Pełna lista to Calibri, Cambria, Constantia i Corbel, łącznie piętnaście odmian i kursyw. Wszystkie cztery są dostarczane z Windowsem, a Calibri było domyślną czcionką Office'a znacznie dłużej niż dekadę, więc ogromna liczba dokumentów jest złożona jedną z nich.
Przyczyną jest bardzo stare niedbalstwo w samych plikach czcionek. Każdy zawiera tabelę odstępów, która zapisuje własną długość w polu za małym na prawdziwą liczbę, więc wartość się przekręca. Tabela Calibri Bold ma w rzeczywistości 160 164 bajty; plik twierdzi, że 29 088. Nikt tego nie zauważał, bo Windows normalnie ignoruje tę tabelę. Sierpniowa aktualizacja dodała sprawdzanie zakresu, które zamyka dwie prawdziwe dziury bezpieczeństwa, i to sprawdzanie odrzuca teraz całą czcionkę, zamiast pominąć jedną wadliwą tabelę. Chodzi o KB5120708 w Windows 11 i KB5120709 w Windows 10, obie z 11 sierpnia, plus odpowiedniki dla starszych systemów.
Oficjalne obejście Microsoftu to zmiana konfiguracji przeznaczona dla autora programu, a przy okazji wyłącza nowe zabezpieczenie, co na domowym komputerze nie jest dobrą wymianą. Cicha poprawka jest lepsza: ustawcie w dokumencie, raporcie albo szablonie Arial lub Segoe UI i drukujcie. A jeśli naprawdę nie wiecie, czy winna jest aktualizacja czy sprzęt, kreator naprawy drukarki w Tendvane sprawdza bufor wydruku i kolejkę, co przynajmniej powie wam, po której stronie szukać.