Defining Custom Fonts

How to use custom fonts in PDF outputs

Disclaimer: While these steps work in most cases this implementation of custom fonts is not supported in APPX (not in 4.x or 5.x). Not all True Type fonts will work with PDF output. You may need to try different fonts to find one that works.


Overview

When designing graphical images in APPX there are 9 fonts pre-configured with the Desktop Client that are part of the Java installation within the client. In order to use custom fonts not included with the installation, such as bar codes, there are a few steps that must be taken. Follow these steps and you should be able to make use of custom fonts on your PDF outputs. Again, not all custom fonts will work and you may have to try more that one font to find one that does work

Custom Fonts on a Windows Server

The easiest way to include a custom font is to install the font on your Windows server. The steps to install the font will be different depending on the desktop OS release. The steps below are for Windows XP Professional.

  • Save the font to somewhere on your server
  • Open the Windows Control Panel
  • Open the Fonts folder
  • From the File menu, choose "Install New Font..."
  • Use the Add Fonts selector to find the font
  • Click on OK. This will install the font.


After you have installed a font you must tell Appx the name of the font, not the name of the font file. For example, the "Free 3 of 9" font is distributed in a file named "free3of9.ttf", but the name of the font is actually "Free 3 of 9 Regular". (you can also use "Free 3 of 9"). To find the font name, open the font file (free3of9.ttf) with Font Viewer (the easiest way to do that is to simply double-click on the font file in the Windows file manager).

  • Log into APPX and select Application Design for the app you where you will be using the custom font.
  • Select Name Resources and define a resource with:
    • Select the ROLLOVER SELECTED state
    • Set the Location Type to SERVER FILE
    • Enter the font name (not .ttf file name) as the Location Data (Free 3 of 9 Regular, for example). Important: The font name is case sensitive, and it is cached in your session. If you need to correct the name, log off & on again so Appx will pick up the new name.
  • On your image define a field and set these GUI Attributes:
    • Select the Control Type of Label
    • In Resource enter the application and name you set in the above step
    • Leave the Font blank
    • Enter a name in the Name field (VENDOR BAR CODE in this example)
  • In the Pre-Display event point enter the following code:
      SET      --- WIDGET NAME                =      VENDOR BAR CODE
      READ     --- WIDGET                 HOLD 1 FT 0 BY WIDGET NAME
T     SET      --- II                         =      10
T     SET      --- WIDGET FONT                =  --- II
T     REWRITE  --- WIDGET                 FAIL 0

The font will be embedded in the PDF document so the custom font should be viewable and printable on all systems whether the font is installed on the system or not.

Alternative Windows Font Installation

If you followed the instructions above and the font failed to print this alternative set if installation instructions may work.

  • Place the font somewhere on your server. The default for Windows XP is C:\WINDOWS\Fonts for example.
  • From the cmd prompt or Run dialog box enter regedit (be very, very careful here, mistakes can disable your computer)
    • Navigate to HKEYS_LOCAL_MACHINE\SOFTWARE
    • Add new keys for PDFlib\PDFlib\7.0.3
    • Add a new string for searchpath
    • Double-click searchpath and enter the path to the directory where you placed the font file. If the font is placed in the default font file on Windows XP the entry would be c:\WINDOWS\Font. Multiple directories can be entered by separating them with a semicolon.
    • Exit regedit
  • Set the APPX environment variable APPX_USER_FONT_2 to the name of the font file without the .ttf extension. For example, to use the Free 3 of 9 barcode font the variable would be set to APPX_USER_FONT_2=free3of9
  • Log into APPX and select Application Design for the app you where you will be using the custom font.
  • On your image define a field and set these GUI Attributes:
    • Select the Control Type of Label
    • Leave the Font blank
    • Leave the Resource blank
    • Enter a name for the widget in the Name field (VENDOR BAR CODE in this example)
  • In the Pre-Display event point enter the following code:
      SET      --- WIDGET NAME                =      VENDOR BAR CODE
      READ     --- WIDGET                 HOLD 1 FT 0 BY WIDGET NAME
T     SET      --- II                         =      11
T     SET      --- WIDGET FONT                =  --- II
T     REWRITE  --- WIDGET                 FAIL 0

Please note that using this approach the value --- II is set to 11 rather than 10.

Custom Fonts on a Unix or Linux Server

Follow these instructions to install a custom font. This should also work in APPX 4.2.x. This example will refer to the Free3of9.ttf bar code font.

  • Place the font file (Free3of9.ttf) in the Resource directory for one of your applications.
  • Log into APPX and select Application Design for the app you where you will be using the custom font.
  • Select Name Resources and define a resource with:
    • Select the ROLLOVER SELECTED state
    • Set the Location Type to DESIGN FILE
    • Enter the font file name without the extension as the Location Data (free3of9, for example). Remember that file name are case sensitive. The font name is cached in your session. If you need to correct the name, log off & on again so Appx will pick up the new name.
  • On your image define a field and set these GUI Attributes:
    • Select the Control Type of Label
    • In Resource enter the application and name you set in the above step
    • Leave the Font blank
    • Enter a name in the Name field (VENDOR BAR CODE in this example)
  • In the Pre-Display event point enter the following code:
      SET      --- WIDGET NAME                =      VENDOR BAR CODE
      READ     --- WIDGET                 HOLD 1 FT 0 BY WIDGET NAME
T     SET      --- II                         =      10
T     SET      --- WIDGET FONT                =  --- II
T     REWRITE  --- WIDGET                 FAIL 0

The font will be embedded in the PDF document so the custom font should be viewable and printable on all systems whether the font is installed on the system or not.

PDF Debug Logging

If you are having trouble getting a custom font to print you can gather debugging information by setting the following environmment variable prior to starting an APPX session:

set PDFLIBLOGGING=filename=c:\pdf.log enable remove classes={filesearch=9 api=2 resource=9}

"enable" means that you want to enable logging
"remove" means that you want PDFlib to remove any log file (of the same name) before starting
The "classes" clause specifies the information you want to log (and the level of detail for each category)

It would be helpful to include the log generated by this processs when reporting PDF output issues.

-- GaryRogers - 2010-06-01

Edit | Attach | Watch | Print version | History: r20 | r7 < r6 < r5 < r4 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r5 - 2011-03-09 - GaryRogers
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback