CZ | EN | DE | SK | PL

FROM PRODUCTION

A font with no diacritics. What to do when the player is called ŠŤASTNÝ

Most sports fonts were made where accents are not needed. Capitals, digits, and that is it. Here is what can be done about it, including the things I only found out while writing the script.

The client picks a font. Usually something you see on sports jerseys: bold, narrow, with sharp edges. And almost always it is a typeface from abroad. It has A to Z, zero to nine and maybe a euro sign. Then the team list arrives and on it are ŠŤASTNÝ, MÜLLER and ŁUKASZ.

What the program does on its own

Illustrator and CorelDRAW handle it the same way. The missing character is quietly set in a different typeface. The name comes out whole, but one letter is from a completely different font. Nobody asks, nothing pops up. On a monitor you may not notice, on the back of a jersey everyone will.

And in both programs the original font is lost from that text. It is not something you undo in one step.

What they have in common is that nobody stops you. The file exports, goes to print, and it is discovered on the finished piece.

By hand it would probably catch your eye, because you notice the typeface changed. An automated run does not notice and carries on. And it is not a problem of one name: once the swap happens, the following pieces are set in the substitute font as well. The result is that part of the order is right and from one name onwards it is entirely different, even though nothing changed in the data.

And once you save that file, you overwrite the original fonts in it too. Without a backup it is then hard to work out what was supposed to be there. That is why the check for missing characters is done up front and why it is not a luxury but a necessity.

Why you cannot just use a different font

Because the font is part of a design the client approved. Swapping it for one player means that one jersey looks different from the rest of the team. And swapping it for the whole team means redoing the design.

That leaves buying an extended version of the typeface. Sometimes it exists, often it does not, and when it does, it takes time and costs money. On an order of ten jerseys it does not pay off at all.

Embedded fonts in CorelDRAW: one more trap

A CorelDRAW document can carry the font inside it. That looks like insurance, right up until you want to change something in such a file. Only the part of the typeface that was used gets embedded, and that text cannot have its font reassigned. Not by hand, not by script.

For personalization that is the end of the road, because names and numbers are exactly the places where the text changes. The script therefore checks the frames it is meant to fill, that is NumberText, NameText and their equivalents. When it finds such a typeface in them, it says so right after you confirm the main dialog, before it even gets to picking the spreadsheet.

And it does not just say something is wrong. It lists which typeface it is and on which artboards and in which fields it sits, so it is immediately clear where to fix it. There are two ways out: install that typeface in the system, or use a different one in those fields.

How it is done by hand

You have to get the mark from somewhere, and I have three routes in this order. First I look whether the font has it above some other letter: if it can do Ä, the umlaut can be taken off it and used above anything else. If there is nothing in the font, I borrow a mark from a similar typeface and adjust it to fit. And if even that fails, I draw it.

Then you sit it above the letter, fine-tune the size and position, and move on to the next name.

In practice you prepare a set of marks for one jersey size. Then for every name you switch off the ones that do not apply and move the rest above the right letters. For a different size you scale them down and move them again. Ten names in three sizes is thirty such adjustments and each one can be off by two millimetres.

Four things you do not see

This is the part I underestimated when I started putting it into the script. From outside it looks like “move the caron above the letter”. It is not.

1. Not everything sits above the letter. Polish Ł has a line through it, Danish Ø a slash across the whole circle, Czech Ů a ring on top and Polish Ą a tail below the baseline. And Ð, Þ, Æ or German ß are not accented letters at all. They are letters in their own right, so they cannot be assembled from a plain letter plus a mark, they have to be replaced whole.

2. The size changes with the jersey. The mark above a letter on a child size and on an XXL cannot be the same size, or it sticks out on one and disappears on the other. It has to scale along with the type.

3. Rotated text. Print files are laid out the way the garment is sewn, so the back panel is usually rotated by a hundred and eighty degrees and sleeve numbers lie on their side. And once the text is rotated, “up” stops being up. The mark has to rotate with the text and the offset has to be recalculated, otherwise the accent slides off to the side. The script handles zero, ninety, a hundred and eighty and two hundred and seventy degrees, that is the angles that actually occur in print files. This cost me the most time.

4. Letters do not come in order. When you break a word down into individual characters so you can work with them, they do not come back in the order they have in the name. And a space produces nothing at all. So “the third shape is the third letter” does not hold, and assigning marks by order puts the accent above the wrong letter.

How exportPDF does it

You still prepare those marks yourself, the way described above. The difference is that you prepare them once and from then on the script takes them by itself. It works in two ways depending on the character:

  1. A mark on top. The letter stays as it is and a symbol is placed above it, below it or across it. That is how the caron, acute, ring, umlaut, ogonek, dot and stroke are made.
  2. Replacing the whole character. The original letter is hidden and a symbol takes its place. That is how ß, Æ, Ð and Þ are handled, because they cannot be assembled from anything.

The coverage is thirty-six characters and ten languages. Czech Á Č Ď É Ě Í Ň Ó Ř Š Ť Ú Ů Ý Ž, Slovak adds Ä Ĺ Ľ Ô Ŕ, German Ä Ö Ü ß, Polish Ą Ć Ę Ł Ń Ś Ź Ż, plus the Nordic Å Ø Æ Ð Þ for Swedish, Finnish, Danish, Norwegian, Icelandic and Faroese.

The setup is a one-off and takes a few minutes. You pick the size you drew the marks for, everything else is recalculated from it, and the positions for individual letters are created by the script itself. You just go through them and adjust the ones that do not sit right. The second time round you only open the template.

One thing follows from this and it is good to know up front: with manually assembled diacritics the names are always set in capitals. The marks are designed for capitals and the script switches to them by itself.

What stays as text

The name in the finished PDF is still live text, just without the accents, and the marks above it are curves. MÜLLER can therefore be found in the file as MULLER, with the umlaut above it as a separate object. It makes no difference to the print shop, but it is handy when checking the file.

The exception is those four letters that get replaced whole. There the letter itself is a curve, because it simply is not in the font.

When you need none of this

When your font has those characters. Plenty of ordinary typefaces do and then there is nothing to solve. That is why the script compares the characters from the spreadsheet with what the font can do before exporting, and says up front if something is missing. The check can be switched off, but you will not save any time, because it costs practically nothing. It is an option for exceptional cases.

What exportPDF is

A script for batch export of personalized PDFs from Illustrator and from CorelDRAW. I have been writing it since 2025 for my own production and I use it daily. The demo is free, limited by the number of runs and the number of rows in the spreadsheet.

More: the Illustrator version · the CorelDRAW version · pricing and licenses. Related: what a whole order looks like from spreadsheet to PDFs and where the Variables panel stops.

I have been developing the exportPDF script since 2025. It came out of my own need and I use it daily in my own production. If you are dealing with the same thing, write to me, a consultation is free and I reply within 24 hours. The whole story

Aleš Ulrych
info@exportpdf.cz