Illegal Characters in Path

When printing a card from either CardExchange® Producer or CardExchange® Visitor, you may get the following error.

Error:

Error while printing the card.

Error while printing the card.

Could not print the card graphically.

Illegal characters in path.

This exception occurs because of corrupt fonts values in the following registry key: (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts). When using WPF printing (System.Printing), it builds a list of fonts by combining the font names from registry and Windows Font Directory path. If there are any illegal characters in the path, we know there are, then the WPF application throws the exception that we see in the stack traces above.

The fix for this issue is pretty straight forward. We can find the corrupt font values in registry and fix them by opening and saving the key. When we open, and then save the key, it seems to remove the bad character(s) from the string. However, finding the corrupt fonts manually is not so easy as you could have hundreds of font entries in the registry.

To make it easier Bradford Systems has written a small .NET (4.0) application that will loop through all the font entries in the registry, identify the bad one(s) and fix them automatically. The utility can be downloaded here.

Please, note that the utility may not always solve the problem. In that case, you will have to remove the fonts that cause the problem manually from the registry. Often, you can recognize these fonts by their name (strange names) or by the fact that they are stored on a non-default locations.