Prerequirements: The fonts are needed in the downloadable soft font format, either as bitmaps, Intellifont, PostScript or TrueType. In most cases any PostScript / TrueType fonts can be converted pretty easily into the PCL download format.

The PCL5 Technical Reference manual from Hewlett-Packard explains how soft fonts are built. In order to work properly together with ELP, a downloadable soft font needs to have a proper ID sequence in front, \x1B*c###D and at the end of the font file, the font resident sequence \x1B*c5F, which makes the loaded font resident against any software reset.
After the font is loaded, it can be addressed either by the ID or using the full escape sequence.
However, your local distributor (PPAdmin info box) is very happy to help you getting your downloadable fonts out of a library of more than 8000 fonts.

There are several ways using ELP to automate the soft font download into the printer's memory, before they are used in the data stream.

To download the file(s) there are quite some ways to go:

    1. Store the single download file in the forms directory (Working directory) using the file name: job_init.mac. This file is then automatically downloaded for every job. The disadvantage is the possible file size, as it is sent together with every job to the printer it may cause a lot of additional and unneeded network traffic.
    2. The same can be done also with the basic ELP system, assuming all jobs start with a special sequence like Escape%-12345X and the font download file is named in our example case 2000.mac

[Add Font file to each job]

; Add those 2 keys search key for the escape sequence

SEARCH_BINARY=\x1B%-12345X

; Adds the form 2000 which is the font file in the forms directory named 2000.mac

INSERT_BINARY=\x1B&f2000Y

; Speed up process

READONLYSEARCHKEYS=ON

; Only once per job needed

Search_Only_Once=ON

The exact same result, but independent from the initialization of the data stream is using an ELP_COMMAND and also the fonts in one single mac file: ELP_COMMAND=C1:1G###; where ### is replaced by the macro number.

Activating the ELP_Command in the section GLOBAL or any automatically executed sections like Printer, Driver- or User named sections will lead to the same result as the job_init.mac method, but at least user or driver restricted.

[GLOBAL]

; Add fonts to each job search key for the escape sequence

ELP_Command=C1:1G1000;

The same can be achieved using of of the other ELP_Commands sending forms or sequences in front of any data stream.

The most elegant way of course is to load the fonts dynamically when they are addressed. Let us assume, the special font is addressed first time in the data stream using this escape sequence: Esc(10UEsc(s1p11vsb1001T
Then open PPAdmin configuration tab and add those three lines to the convert.ini, starting with the creation of a new rule:

 

[Add Font 2]

; Search key for special font escape sequence

SEARCH_BINARY=\x1B(10U\x1B(s1p11vsb1001T

; Insert the font file via macro just before the call

INSERT_BINARY=\x1B&f2000Y

READONLYSEARCHKEYS=ON

Read_Only_Once=ON

Note:The font will be sent only once per job to the printer, although the escape sequence occurs multiple times.

Another way could also be that you add a trigger in the beginning of the data stream, indicating ELP to download some special fonts or macros.

[Add Font 3]

; Add those 2 keys

; Search key for the trigger

Search_BINARY=GreekFontsNeeded

; Replace the trigger with the font mac file[s]

Replace_Binary=\x1B&f2000Y\x1B&f2001Y\x1B&f2002Y

ReadOnlySearchKeys=ON

; Using this method allows to download only the fonts needed, as you may generate a second rule for a needed bold font, etc.. If the Insert_Binary key is replaced with the ELP_COMMAND lead into a combination of described methods 2 and 3

; By the way, in this application the following 3 ELP commands lead to the exact same result, loading at the beginning of the job a file:

ELP_Command=C1:1G1000;

ELP_Command=EB1000;

ELP_Command=EAF1000;

The benefit of the EA key is the possibility of being repeatable within the ELP_COMMAND syntax example: EAF1000F1100; is the same as EAF1000;EAF1100;

 

With the ELP_COMMAND_ADD you can add new statements to an existing ELP_Command:

[Send Greek courier font normal]

Search_Binary=\x1B(2G\x1B(s0p10h0s0b4099T

ELP_COMMAND_ADD=EAF1000;

Search_Only_Once=ON

[Send Greek courier font bold]

Search_Binary=\x1B(2G\x1B(s0p10h0s3b4099T

ELP_COMMAND_ADD=EAF1100;

Search_Only_Once=ON

Using trigger, but trigger for example on the symbol set and only on the type face number:

[Send Greek courier font]

Trigger_Binary=\x1B(2G

Trigger_Binary=b4099T

; If both triggers are found

ELP_COMMAND_ADD=EAF1000;

[Send Greek Univers font]

Trigger_Binary=\x1B(2G

Trigger_Binary=b4148T

ELP_COMMAND_ADD=EAF1200;

;So in this case the final ELP_Command for both fonts will be this: EAF1000;EAF1200;

 

Related articles: Rules theory, Rule assistant, Add key to rule