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 APPX 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.
  • Reboot the server!! The font might not be recognized by the PDF printing software until after a reboot.
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 Named Resources and define a resource with:
    • Select the ROLLOVER SELECTED state. If you are using Appx 5.2 or later, choose FONT instead.
    • 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.

We have found that not all fonts work on Windows using the above approach. In that case, you can try an alternative approach which will allow APPX to directly access the font file in the directory where it is located. You will need to add an entry to the Windows registry which will provide a search path that APPX will use to find your font files. The following steps should be used to add the necessary registry entry:

  • On your APPX server, open a command prompt or Run dialog box and run regedit (be very, very careful when editing the Windows registry as mistakes can possibly 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 directory on Windows XP the entry would be c:\WINDOWS\Font. Multiple directories can be entered by separating them with a semicolon.
    • Exit regedit
  • You will also need to define a Named Resource for each font file with the following attributes:
    • Select the ROLLOVER SELECTED state. If you are using Appx 5.2 or later, choose FONT instead.
    • Set the Location Type to SERVER FILE
    • Enter the name of the font file without an extension in the Location Data field (free3of9, for example).
  • On your output process image define a field and set these GUI Attributes:
    • Select the Widget Control Type of Label
    • In the Resource field, enter the application and the name of the Named Resource that 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

    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. If you are using Appx 5.2 or later, choose FONT instead.
      • 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 names 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 environment variable prior to starting an APPX session:

    Example; copy this to appx.env (windows) before invoking Appx;

    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 process when reporting PDF output issues.

    If the log shows that PDFlib is unable to find your installed font, try rebooting the server.

    Comments:

    Read what other users have said about this page or add your own comments.



    -- GaryRogers - 2010-06-01

    Edit | Attach | Watch | Print version | History: r20 | r14 < r13 < r12 < r11 | Backlinks | Raw View | Raw edit | More topic actions...
    Topic revision: r12 - 2014-05-18 - KorryD
     
    • Edit
    • Attach
    This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
    Ideas, requests, problems regarding TWiki? Send feedback