Klient wybiera font. Zwykle coś, co widać na koszulkach sportowych: grube, wąskie, o ostrych krawędziach. I prawie zawsze jest to pismo z zagranicy. Ma A do Z, zero do dziewięć i może znak euro. Potem przychodzi lista drużyny, a na niej ŠŤASTNÝ, MÜLLER i ŁUKASZ.
Co zrobi sam program
Illustrator i CorelDRAW robią to tak samo. Brakujący znak po cichu składają z innego pisma. Nazwisko wyświetli się w całości, ale jedna litera jest z zupełnie innego fontu. Nikt nie zapyta, nic nie wyskoczy. Na monitorze można tego nie zauważyć, na plecach koszulki zauważy to każdy.
I w obu programach ginie przy tym pierwotny font z tego tekstu. Nie jest tak, że cofniesz to jednym krokiem.
Wspólne jest to, że nikt cię nie zatrzyma. Plik się wyeksportuje, pójdzie do druku i wyjdzie to na gotowej sztuce.
Ręcznie zapewne rzuciłoby ci się to w oczy, bo zmianę pisma widać. Automat jej nie zauważy i jedzie dalej. I nie jest to problem jednego nazwiska: gdy raz dojdzie do podmiany, kolejne sztuki składane są już tym zastępczym pismem. Efekt jest taki, że część zlecenia jest dobrze, a od jednego nazwiska dalej jest zupełnie inna, choć w danych nic się nie zmieniło.
A gdy taki plik zapiszesz, nadpiszesz w nim także pierwotne fonty. Bez kopii zapasowej trudno potem dojść, co tam właściwie miało być. Dlatego kontrolę brakujących znaków robi się z góry i dlatego nie jest to luksus, tylko konieczność.
Dlaczego nie da się tego załatwić innym fontem
Bo font jest częścią projektu, który klient zatwierdził. Wymienić go z powodu jednego zawodnika znaczy, że ta jedna koszulka będzie wyglądać inaczej niż reszta drużyny. A wymienić go dla całej drużyny znaczy przerobić projekt.
Zostaje kupić rozszerzoną wersję pisma. Czasem istnieje, często nie, a gdy istnieje, to trwa i kosztuje. Przy zleceniu na dziesięć koszulek nie opłaca się to w ogóle.
Osadzone fonty w CorelDRAW: jeszcze jedna pułapka
Dokument CorelDRAW może nieść font w sobie. Wygląda to jak zabezpieczenie, dopóki nie chcesz w takim pliku niczego zmieniać. Osadza się bowiem tylko ta część pisma, która została użyta, i takiemu tekstowi fontu już się nie przypisze. Ani ręcznie, ani skryptem.
Dla personalizacji to koniec drogi, bo nazwiska i numery są dokładnie tymi miejscami, gdzie tekst się zmienia. Skrypt sprawdza więc ramki, które ma wypełnić, czyli NumerText, NazwiskoText i ich odpowiedniki. Gdy znajdzie w nich takie pismo, zgłasza to zaraz po zatwierdzeniu głównego okna, jeszcze zanim dojdzie do wyboru tabeli.
I nie mówi tylko, że coś jest nie tak. Wypisuje, o które pismo chodzi oraz na których obszarach roboczych i w których polach siedzi, więc od razu wiadomo, gdzie to naprawić. Wyjścia są dwa: zainstalować to pismo w systemie albo w tych polach użyć innego.
Jak robi się to ręcznie
Znak trzeba skądś wziąć, a mam na to trzy drogi w tej kolejności. Najpierw patrzę, czy font nie ma go nad jakąś inną literą: jeśli umie na przykład Ä, można z niej zdjąć umlaut i użyć nad czymkolwiek innym. Gdy w foncie nie ma nic, pożyczam znak z podobnego pisma i dopasowuję go. A gdy i to nie wychodzi, rysuję go.
Potem sadzasz go nad literą, dopracowujesz rozmiar i pozycję i przechodzisz do następnego nazwiska.
W praktyce przygotowujesz zestaw znaków dla jednego rozmiaru koszulki. Przy każdym nazwisku wyłączasz te, które akurat nie pasują, a resztę przesuwasz nad właściwe litery. Dla innego rozmiaru zmniejszasz je i przesuwasz od nowa. Dziesięć nazwisk w trzech rozmiarach to trzydzieści takich poprawek i przy każdej można się rozminąć o dwa milimetry.
Cztery rzeczy, których w tym nie widać
To jest ta część, którą zlekceważyłem, gdy zacząłem wpisywać ją do skryptu. Z zewnątrz wygląda jak „przesuń daszek nad literę”. Nie jest.
1. Nie wszystko jest nad literą. Polskie Ł ma kreskę przez literę, duńskie Ø ukośnik przez całe koło, czeskie Ů kółko u góry, a polskie Ą ogonek pod linią. A Ð, Þ, Æ czy niemieckie ß to w ogóle nie są litery ze znakiem. To osobne litery, więc nie da się ich złożyć ze zwykłej litery i znaku, trzeba je zastąpić w całości.
2. Rozmiar zmienia się z koszulką. Znak nad literą na rozmiarze dziecięcym i na XXL nie może być tej samej wielkości, bo na jednym sterczy, a na drugim ginie. Musi skalować się razem z pismem.
3. Obrócony tekst. Pliki do druku składa się tak, jak się szyje, więc tył bywa obrócony o sto osiemdziesiąt stopni, a numery na rękawach leżą na boku. A gdy tylko tekst jest obrócony, „do góry” przestaje być do góry. Znak musi obrócić się tak samo jak tekst, a przesunięcie trzeba przeliczyć, inaczej ucieka na bok. Skrypt radzi sobie z zerem, dziewięćdziesięcioma, stu osiemdziesięcioma i dwustu siedemdziesięcioma stopniami, czyli z kątami, które w plikach do druku naprawdę występują. To kosztowało mnie najwięcej czasu.
4. Litery nie idą po kolei. Gdy rozłożysz słowo na pojedyncze znaki, żeby móc z nimi pracować, nie wrócą w kolejności, w jakiej są w nazwisku. A spacja nie tworzy zupełnie niczego. Więc „trzeci kształt to trzecia litera” nie działa, a przypisywanie znaków według kolejności kończy się znakiem nad niewłaściwą literą.
Jak robi to exportPDF
Te znaki nadal przygotowujesz sam, w sposób opisany wyżej. Różnica polega na tym, że przygotowujesz je raz, a od tej chwili skrypt bierze je sam. Pracuje na dwa sposoby, zależnie od znaku:
- Znak na wierzchu. Litera zostaje, jaka jest, a nad nią, pod nią lub w poprzek kładziony jest symbol. Tak powstaje daszek, kreska, kółko, umlaut, ogonek, kropka i przekreślenie.
- Zastąpienie całego znaku. Pierwotna litera zostaje ukryta i zastępuje ją symbol. Tak rozwiązane są ß, Æ, Ð i Þ, bo tych nie da się z niczego złożyć.
Pokrycie to trzydzieści sześć znaków i dziesięć języków. Czeskie Á Č Ď É Ě Í Ň Ó Ř Š Ť Ú Ů Ý Ž, słowackie dodatkowo Ä Ĺ Ľ Ô Ŕ, niemieckie Ä Ö Ü ß, polskie Ą Ć Ę Ł Ń Ś Ź Ż, do tego nordyckie Å Ø Æ Ð Þ dla szwedzkiego, fińskiego, duńskiego, norweskiego, islandzkiego i farerskiego.
Konfiguracja jest jednorazowa i trwa parę minut. Wybierasz rozmiar, dla którego rysowałeś znaki, według niego przeliczane są pozostałe, a pozycje dla poszczególnych liter skrypt tworzy sam. Ty tylko je przeglądasz i poprawiasz te, które nie siedzą. Za drugim razem szablon już tylko otwierasz.
Jedno z tego wynika i dobrze wiedzieć to z góry: przy ręcznie składanej diakrytyce nazwiska zawsze składane są wielkimi literami. Znaki zaprojektowano dla wersalików i skrypt przełącza to sam.
Co z tego zostaje tekstem
Nazwisko w gotowym PDF nadal jest żywym tekstem, tylko bez znaków, a znaki nad nim są krzywymi. MÜLLER można więc znaleźć w pliku jako MULLER, a umlaut nad nim jest osobnym obiektem. Dla drukarni nic to nie zmienia, ale przy sprawdzaniu pliku jest to praktyczne.
Wyjątkiem są te cztery litery, które zastępowane są w całości. Tam także litera jest krzywą, bo w foncie po prostu jej nie ma.
Kiedy nic z tego nie potrzebujesz
Gdy twój font te znaki ma. Wiele zwykłych pism je ma i wtedy nie ma czego rozwiązywać. Dlatego skrypt przed eksportem porównuje znaki z tabeli z tym, co font potrafi, i mówi z góry, gdy czegoś brakuje. Kontrolę da się wyłączyć, ale czasu tym nie zaoszczędzisz, bo nie kosztuje praktycznie nic. To opcja na wyjątkowe przypadki.
Czym jest exportPDF
Skrypt do masowego eksportu spersonalizowanych plików PDF z Illustratora i z CorelDRAW. Piszę go od 2025 roku dla własnej produkcji i używam go codziennie. Demo jest bezpłatne, ograniczone liczbą uruchomień i liczbą wierszy w tabeli.
Szczegóły: wersja dla Illustratora · wersja dla CorelDRAW · cennik i licencje. Powiązane: jak wygląda całe zlecenie od tabeli po pliki PDF i gdzie kończy się panel Zmienne.