jfig.gui
Class JFontConfigurationDialog

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjava.awt.Window
              extended byjava.awt.Dialog
                  extended byjavax.swing.JDialog
                      extended byjfig.gui.JFontConfigurationDialog
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.event.ActionListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.swing.RootPaneContainer, java.io.Serializable, javax.swing.WindowConstants

public class JFontConfigurationDialog
extends javax.swing.JDialog
implements java.awt.event.ActionListener

See Also:
Serialized Form

Nested Class Summary
(package private)  class JFontConfigurationDialog.AntiAliasComboBox
           
(package private)  class JFontConfigurationDialog.ComboBoxRenderer
          inner class used to render the font selection combo boxes with different fonts for each cell.
(package private)  class JFontConfigurationDialog.FontChanger
          FIXME: doesn't seem to work with all JVMs...
 
Nested classes inherited from class javax.swing.JDialog
javax.swing.JDialog.AccessibleJDialog
 
Nested classes inherited from class java.awt.Dialog
java.awt.Dialog.AccessibleAWTDialog
 
Nested classes inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
(package private)  javax.swing.JButton applyButton
           
(package private)  java.awt.Font[] availableFonts
           
(package private)  javax.swing.JPanel buttonPanel
           
(package private)  javax.swing.JButton cancelButton
           
(package private)  javax.swing.JPanel comboPanel
           
(package private)  boolean debug
           
(package private)  javax.swing.JPanel deltaPanel
           
(package private)  javax.swing.JComboBox[] fontComboBoxes
           
(package private)  java.awt.Image[] fontIconImages
           
(package private)  javax.swing.JLabel[] fontNameLabels
           
(package private) static java.awt.RenderingHints hints
           
(package private)  javax.swing.JPanel labelPanel
           
(package private)  javax.swing.JPanel mainPanel
           
(package private)  float[] psFontMetrics
           
(package private)  java.lang.String[] psFontNames
           
(package private)  java.lang.String qbf
           
(package private)  java.awt.Font[] scaledFonts
           
(package private)  javax.swing.JScrollPane scroller
           
(package private)  javax.swing.JLabel[] widthLabels
           
 
Fields inherited from class javax.swing.JDialog
accessibleContext, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Dialog
 
Fields inherited from class java.awt.Window
 
Fields inherited from class java.awt.Container
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JFontConfigurationDialog(java.awt.Frame frame)
          dialog window to select the mapping from FIG font index to one of the available TrueType fonts.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent evt)
           
 void buildGUI()
           
 void createRenderingHints()
           
 void doApplySelectedMapping()
          retrieve the currently selected font mapping and apply to FontCache.
 void doInitializeFontMappingFromFontCache()
           
 float getFoxScaleFactor(int fontIndex)
          calculate an estimated "string width" factor from the Java Font currently selected for FIG font index i, and the actual measured values from a FIG printout, both at 12pt size.
 float getFoxScaleFactor1(int fontIndex)
           
 void listAllFonts()
           
 void loadFontIconImages()
          (re)create our image array, one 220x20 pixel image per font.
static void main(java.lang.String[] argv)
          simple selftest
static void msg(java.lang.String s)
           
static void usage()
           
 
Methods inherited from class javax.swing.JDialog
addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Dialog
addNotify, dispose, getTitle, hide, isModal, isResizable, isUndecorated, setModal, setResizable, setTitle, setUndecorated, show
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, finalize, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, isActive, isFocusableWindow, isFocusCycleRoot, isFocused, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationRelativeTo, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, removeNotify, setFocusTraversalKeys, setFocusTraversalPolicy, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

debug

boolean debug

hints

static java.awt.RenderingHints hints

fontIconImages

java.awt.Image[] fontIconImages

availableFonts

java.awt.Font[] availableFonts

scaledFonts

java.awt.Font[] scaledFonts

psFontNames

java.lang.String[] psFontNames

psFontMetrics

float[] psFontMetrics

qbf

java.lang.String qbf

fontNameLabels

javax.swing.JLabel[] fontNameLabels

fontComboBoxes

javax.swing.JComboBox[] fontComboBoxes

widthLabels

javax.swing.JLabel[] widthLabels

cancelButton

javax.swing.JButton cancelButton

applyButton

javax.swing.JButton applyButton

mainPanel

javax.swing.JPanel mainPanel

labelPanel

javax.swing.JPanel labelPanel

comboPanel

javax.swing.JPanel comboPanel

buttonPanel

javax.swing.JPanel buttonPanel

deltaPanel

javax.swing.JPanel deltaPanel

scroller

javax.swing.JScrollPane scroller
Constructor Detail

JFontConfigurationDialog

public JFontConfigurationDialog(java.awt.Frame frame)
dialog window to select the mapping from FIG font index to one of the available TrueType fonts.

This dialog window can be used to select the mapping from FIG font numbers to actual TrueType fonts.

Background and Motivation


The default mapping from font index to TrueType fonts in jfig still uses the three fonts ("times", "helvetica" "courier") guaranteed to be available on all Java2 platforms. Unfortunately, current JDKs use their own TrueType fonts from the Lucida font family, whose font metrics differ radically from the Postscript fonts expected by the FIG format. This often leads to annoying effects, like fonts protruding beyond boxes, etc.

However, modern JDKs (version 1.3+) are able to load other TrueType fonts installed on the target workstation, which might include the fonts expected by the FIG format or at least several of the readily available substitutes. Most of these fonts have FontMetrics which are much more compatible with the FIG/xfig values.

Using extra fonts in jfig requires adding a font mapping description to the jfig configuration files, e.g. jfig.gui.FontCache.Bookman-LightItalic ItcBookman Light,italic This dialog window lists all TrueType fonts found on your system and lets you select the mapping for each of the 35 Postscript fonts defined in the FIG file format.

NOTE: The TeX/LaTeX fonts are currently not supported by jfig.

Method Detail

createRenderingHints

public void createRenderingHints()

loadFontIconImages

public void loadFontIconImages()
(re)create our image array, one 220x20 pixel image per font. This method loads the "/jfig/images/fontmenu.gif" resource image(s).


listAllFonts

public void listAllFonts()

buildGUI

public void buildGUI()

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent evt)
Specified by:
actionPerformed in interface java.awt.event.ActionListener

getFoxScaleFactor

public float getFoxScaleFactor(int fontIndex)
calculate an estimated "string width" factor from the Java Font currently selected for FIG font index i, and the actual measured values from a FIG printout, both at 12pt size. The data relies on a single sample string (quick brown fox) and is only a coarse estimate.


getFoxScaleFactor1

public float getFoxScaleFactor1(int fontIndex)

doApplySelectedMapping

public void doApplySelectedMapping()
retrieve the currently selected font mapping and apply to FontCache. You should probably save the jfig properties to make your changes persistent...


doInitializeFontMappingFromFontCache

public void doInitializeFontMappingFromFontCache()

msg

public static void msg(java.lang.String s)

usage

public static void usage()

main

public static void main(java.lang.String[] argv)
simple selftest