Ogonek 64 — font Commodore 64, który umie po polsku

*** 18 na 18 polskich liter, wolna licencja, do pobrania ***

Zaczęło się od komentarza pod naszym postem. Ktoś napisał, że szkoda, iż tej czcionki nie da się tak po prostu wziąć i użyć — na telefonie też wyglądałaby zacnie. Miał rację i wskazał palcem dokładnie to miejsce, w którym cała zabawa w retro rozbija się o prozę: font, który wygląda jak ekran Commodore 64, jest nie do poprawienia i nie do rozdania dalej — a polskich liter i tak w nim nie ma.

Więc zrobiliśmy własny. Ogonek 64 to font Commodore 64 z polskimi znakami — cztery odmiany, komplet ą ć ę ł ń ó ś ź ż, wolna licencja i pobieranie za darmo. Od 19 sierpnia czeka w kolejce do katalogu Google Fonts.

Najpierw pomiar, nie wrażenie

Uczciwie: pikselowe fonty z polskimi znakami istnieją. VT323, Pixelify Sans, Handjet czy Press Start 2P mają w katalogu Google Fonts komplet osiemnastu naszych liter. Kto potrzebuje „jakiegoś pikselowego" kroju z ogonkami, ma z czego wybierać i nie musi czytać dalej.

Dziura jest węższa i dokładnie tam, gdzie boli nas: w krojach odwzorowujących zestawy znakowe ośmiobitowych komputerów domowych. Policzyliśmy to programowo — na plikach pobranych z repozytorium Google, porównując pokrycie z oficjalną listą GF Latin Core:

  • Sixtyfour — 2 polskie litery na 18, Latin Core 201/319
  • Workbench — 2/18, Latin Core 199/319
  • Silkscreen — 2/18, Latin Core 209/319
  • DotGothic16 — 4/18, Latin Core 220/319
  • Ogonek 64 Mono18/18, Latin Core 319/319

Pierwszy wiersz jest najciekawszy. Sixtyfour jest w katalogu opisany przez samo Google jako przeróbka starych pikselowych wersji fontów Commodore 64 i Amigi Workbench — czyli dokładnie ta tradycja, z której wychodzimy — i ma dwie polskie litery na osiemnaście.

Gotowe konwersje TrueType, po które sięga scena — te z poradników i z plakatów ze zlotów — mają zero z osiemnastu, a ich licencje zabraniają modyfikacji i udostępniania zmienionej wersji. Nikt nie może tego naprawić, choćby bardzo chciał. To nie jest problem wyłącznie polski: Czesi, Węgrzy i Turcy siedzą w tej samej dziurze.

Dlatego Ogonek 64 nie jest przeróbką żadnej z nich. Wyszliśmy od źródła: od zestawu znakowego zapisanego w pamięci ROM samego komputera. Jak dokładnie — niżej.

Osiem na osiem to za mało

Znak w Commodore 64 mieści się w ośmiu pikselach na osiem i ani piksela więcej. Robiliśmy już raz polskie ogonki w tej siatce — przy okazji terminala w stylu C64 na Linuksie. Da się, ale za cenę: akcent siada wtedy na literze bez odstępu i Ż czyta się jak Z z guzem.

Gorzej robi się przy akcentach spoza polszczyzny. Daszek, haczek, brewis, kółko, umlaut i tylda w jednym wierszu pikseli stają się tą samą plamką — siedem różnych znaków wygląda identycznie.

Dlatego Ogonek 64 dostał komórkę 8×12: dwa wiersze na akcent, jeden na odstęp od litery, siedem na korpus i dwa pod linią bazową. Same litery są takie jak w pierwowzorze — urosło wyłącznie to, co nad nimi i pod nimi. Cena jest jedna i mówimy ją wprost: interlinia półtora raza większa niż w oryginalnej siatce.

Cztery decyzje, o których nikt nie myśli, dopóki nie zobaczy tego na ekranie

Font pikselowy wygląda na prostą robotę — do chwili, w której trzeba w ośmiu kolumnach zmieścić różnicę między Ź a Ż:

  • Ź i Ż różnią się grubością, nie pozycją. Pierwsza wersja odróżniała je przesunięciem akcentu o jeden piksel w bok. Na powiększeniu różnica jest. Na ekranie w normalnym rozmiarze — żadna. Teraz kreska ma dwa piksele i idzie w prawo, a kropka jeden i siedzi na środku.
  • Pozycja akcentu wynika z górnej krawędzi litery, nie ze sztywnej reguły. Wielkie litery, wznoszące (d, k, l, t) i małe mają trzy różne wysokości; sztywny podział wywracał się na trzynastu znakach. Nad „i" oraz „j" akcent zastępuje kropkę — inaczej wychodzi wieża.
  • Kreska w Ł i ł wynika z położenia trzonu. Trzon wielkiego L stoi w kolumnach 1–2, a małego l w 3–4. Kreska wpisana na sztywno wyjeżdżała z małej litery w powietrze.
  • Samodzielne znaki akcentów podniesione na wysokość akcentu. Wcześniej wisiały w połowie wysokości litery i akcent ostry postawiony obok Á czytało się jak inny znak.

Wspólny mianownik: wszystkie cztery błędy przechodziły przez testy. Kontrola sprawdza, czy znak istnieje i czy metryki się zgadzają — nie czy to wygląda dobrze. Rozstrzygało dopiero oko na wydruku kontrolnym całego alfabetu.

Cztery odmiany jednego kroju

  • Ogonek 64 Mono Regular — terminal, kod, wszystko o stałej szerokości
  • Ogonek 64 Mono Bold — pogrubienie w tej samej rodzinie, terminal weźmie je sam
  • Ogonek 64 Sans — teksty ciągłe, szerokość liczona per litera
  • Ogonek 64 CRT — linie wygaszenia kineskopu, do nagłówków i plakatów

Każda ma 321 znaków: pełne ASCII, osiemnaście polskich diakrytów, komplet GF Latin Core (akcenty francuskie, niemieckie, czeskie, węgierskie, skandynawskie, Æ Ø Þ Ð Œ ß, waluty €, ¢, ¥), czternaście akcentów składających, polską interpunkcję z prawdziwymi cudzysłowami oraz znaki z oryginalnego zestawu: £, strzałkę w górę i strzałkę w lewo.

Skąd biorą się kształty liter

Nie z cudzego pliku. Baza łacińska powstała z jednorazowego odczytu zestawu znakowego zapisanego w pamięci ROM ośmiobitowca z 1982 roku — tej samej pamięci, z której komputer rysował litery na ekranie. Odczyt zamieniliśmy od razu na zwykły plik tekstowy, w którym „#" to piksel zapalony, a kropka zgaszony, i od tamtej chwili to jest nasze źródło. W repozytorium nie ma żadnej binarki ROM — jest ten plik. Można go otworzyć w notatniku i policzyć piksele palcem.

Polskie diakryty, interpunkcja i osiem znaków ASCII, których pierwowzór nigdy nie miał, są zaprojektowane w tym projekcie od zera.

Kwestia prawna, bo pada za każdym razem: w Stanach kształty liter nie podlegają prawu autorskiemu (37 CFR § 202.1(e), sprawa Eltra Corp. v. Ringer), a przy siatce ośmiu na osiem pikseli na twórczy wybór po prostu nie ma miejsca — czytelna wielka litera alfabetu łacińskiego ma w tej rozdzielczości jedno sensowne rozwiązanie. Opis z odnośnikami leży w repozytorium.

Font Commodore 64 z polskimi znakami — jak pobrać i co wolno z nim robić

Pliki są na GitHubie: github.com/arekbr/ogonek64 — gotowe TrueType do zainstalowania w systemie i woff2 na stronę WWW. Nic nie trzeba budować, ale można: jedno polecenie zakłada środowisko i składa wszystkie cztery odmiany z plików tekstowych.

Licencja to SIL Open Font License 1.1, bez zastrzeżonej nazwy. Po ludzku: wolno używać komercyjnie, wolno wkładać w stronę, w grę i w druk, wolno modyfikować i rozpowszechniać zmienioną wersję. Nie trzeba nas pytać o zgodę ani nic płacić. Warunek jest jeden i wynika wprost z licencji: nota o autorstwie jedzie razem z plikami. O to w tym wszystkim chodziło — żeby następna osoba, której zabraknie ogonków, nie musiała zaczynać od zera.

Font stoi już pod naszym terminalem w stylu C64, który od wersji 2.0 nie pobiera niczego z sieci — wszystko jest w paczce, na wolnej licencji.

Co dalej: kolejka do Google Fonts

19 sierpnia zgłosiliśmy Ogonek 64 Mono do katalogu Google Fonts (zgłoszenie nr 10822). Kontrola jakości, przez którą przechodzi każdy krój w tym katalogu, daje dla naszych rodzin zero błędów krytycznych na 455 sprawdzeń. Zgłoszenie jest otwarte, opiekunka katalogu potwierdziła, że mu się przyjrzy — i tyle na dziś uczciwie wiadomo. Jeśli przejdzie, font będzie do wzięcia jednym kliknięciem w dowolnym projekcie na świecie. Jeśli nie przejdzie — i tak jest publiczny i i tak jest na wolnej licencji.

Sans i CRT zgłosimy osobno. Trzy rodziny naraz od nieznanego autora to trzy okazje do odmowy zamiast jednej.

Robimy takie rzeczy przy okazji innych

SMOK to stowarzyszenie: pokazy, renowacje sprzętu, wynajem retro komputerów na imprezy i projekty takie jak ten — po godzinach, z ciekawości. Jeśli chcesz, żeby było ich więcej, najprościej wesprzeć nas na Patronite: regularna, choćby najmniejsza kwota daje nam to, czego nie da jednorazowa wpłata — możliwość planowania. Wszystkie sposoby zebraliśmy na jednej stronie.

A jeśli zastanawiasz się, skąd się bierze robienie fontów po nocach dla ludzi, których się nie zna — zacznij od wpisu co to jest demoscena.