XmFontSelector(3X)

πŸ“¦
version 2.3.8 Β· 3 versions
, in arch rolling, centos-stream 9, epel 10, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0

✨ XmFontSelector ✨

okay so bestie, welcome to the manual page for the Font Selector widget β€” it's a real one from the 3X corner of the world, and it's lowkey iconic πŸ’–


🌸 NAME 🌸

The Font Selector widget. That's her. That's the whole name. Periodt. πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <Xm/FontS.h>

πŸ’… DESCRIPTION πŸ’…

The Font Selector widget lets users pick a font so easily β€” they just choose the font family and the size, and boom, done. The bold and italic attributes can also be set for any font where they're actually available. And if your app already has a font in mind, it can pass any font to the font selector as the initial value shown to the user. The advanced features? They greatly extend the widget's functionality. No cap. πŸ”₯

🌈 Basic Features 🌈

So the font selector presents the user with two combination box widgets β€” one with a list of choices for the font family, and the other with the choices for the font size. Plus there are two independent toggle buttons that let the user make the font bold or italic or bold/italic. Underneath the font choice area there's a text widget that shows sample text of the chosen font. And that text area is editable, bestie β€” the user can add or remove text to see how various characters look in the chosen font. πŸŽ€

For the novice user, this set of features gives access to all standard fonts on the system. And the font selector dynamically removes choices that are inappropriate, so the user can freely play around with different combinations and can always be assured that once they've selected a font, it will exist on the machine the font selector is running on. Fr fr. πŸ’―

For example: if there's no Times Roman 14 point font available, and the user selects a point size of 14, then Times Roman will not be available in the family combination box. Likewise, if the user had chosen Times Roman from the family dialog box, then a size of 14 would not be shown. To have all choices available, simply choose a size and family of Any. ✨

🧚 Advanced Features 🧚

For the advanced user, the font selector provides tremendous flexibility in font choices. By activating the options button, an additional panel of controls is presented to the user. This allows the user to:

  • gain access to non-XLFD fonts
  • control the resolutions of the fonts chosen
  • choose from fixed or proportional fonts only
  • remove the use of font scaling
  • allow non iso8859-1 fonts to be viewed
  • see the XLFD name the font selector is constructing

Slay. πŸ’…

πŸ“ Non XLFD Fonts πŸ“

By choosing the "Other Fonts" toggle from the option panel, the family and size lists β€” as well as the bold and italic toggles β€” are replaced with a combo box containing all non-XLFD fonts available on your system. This feature allows users to select non-XLFD fonts with the FontSelector. The text field of the combination box may be edited by the user, and any string entered will be interpreted as a font name. And note this: XLFD names can be typed in by hand here. This feature allows the font selector to be used to get any font on the entire system. 🀯

πŸ’œ Resolution Control πŸ’œ

The font selector finds which of the two standard resolutions the current display is closest to and uses that as its default. To allow a wider range of choices, a user may choose to access fonts of a different resolution, or both 75 and 100 dpi resolutions.

🌸 Fixed or Proportional 🌸

In most cases, the fact that a font is fixed width or proportional is of no great interest to the user. But some applications require a fixed width font β€” like terminal emulators β€” and most people find that proportional fonts look better. The Font selector allows users to limit the font choices to fixed width or proportional, or to allow both. 🫢

✨ Font Scaling ✨

The font scaling technology that is available in X11R5 uses bitmap scaling which, although useful in some cases, generally results in very ugly fonts. 😭 We noticed that users often wanted to know which fonts are scaled and which ones exist as hand crafted bitmaps. To remove the scaled fonts from the list of choices, toggle the "Use Font Scaling" button off. This value is resource controllable and defaults to on, which uses font scaling.

πŸŽ€ Encoding πŸŽ€

The programmer can specify which encidings are valid selctions. These encoding choices appear in an option menu. The list of font choices is restricted to those which use the current selected coding.

πŸ‘‘ XLFD Name Display πŸ‘‘

Clicking the Show toggle displays the current font's XLFD name is shown at the bottom of the font selector.


⭐ Normal Resources ⭐

Here's the whole roster, bestie β€” every name, every class, every type, every initial value. Nothing skipped, iykyk. πŸ’–

All resource names begin with XmN and all resource class names begin with XmC.

  • 100DPIstring β€” class 100DPIString β€” type XmString β€” initial value "100 dpi"
  • 75DPIstring β€” class 75DPIString β€” type XmString β€” initial value "75 dpi"
  • anyLowerString β€” class AnyLowerString β€” type XmString β€” initial value "any"
  • anyString β€” class AnyString β€” type XmString β€” initial value "Any"
  • boldString β€” class BoldString β€” type XmString β€” initial value "Bold"
  • bothString β€” class BothString β€” type XmString β€” initial value "Both"
  • currentFont β€” class String β€” type String β€” initial value NULL
  • defaultEncodingString β€” class DefaultEncodingString β€” type String β€” initial value "iso8859-1"
  • encodingList β€” class EncodingList β€” type StringTable β€” initial value "iso8859-1"
  • encodingString β€” class EncodingString β€” type XmString β€” initial value "Encoding"
  • familyString β€” class BothString β€” type XmString β€” initial value "Family"
  • italicString β€” class ItalicString β€” type XmString β€” initial value "Italic"
  • marginHeight β€” class Margin β€” type Dimension β€” initial value 0
  • monoSpaceString β€” class MonoSpaceString β€” type XmString β€” initial value "Fixed Width Fonts"
  • optionString β€” class OptionString β€” type XmString β€” initial value "Options ..."
  • otherString β€” class OtherString β€” type XmString β€” initial value "Other Fonts"
  • propSpaceString β€” class PropSpaceString β€” type XmString β€” initial value "Proportional Fonts"
  • sampleText β€” class SampleText β€” type XmString β€” initial value "abcdef..."
  • scalingString β€” class ScalingString β€” type XmString β€” initial value "Use Font Scaling"
  • showFontName β€” class ShowFontName β€” type Boolean β€” initial value False
  • showNameString β€” class ShowNameString β€” type XmString β€” initial value "Show Font Name"
  • sizeString β€” class SizeString β€” type XmSring β€” initial value "Size"
  • spacing β€” class Spacing β€” type Dimension β€” initial value 2
  • textRows β€” class TextRows β€” type Dimension β€” initial value 8
  • useScaling β€” class Boolean β€” type Boolean β€” initial value True
  • valueChangedCallback β€” class Callback β€” type XtCallbackList β€” initial value NULL
  • xlfdString β€” class XlfdString β€” type XmString β€” initial value "Xlfd Fonts"

πŸ’– 100DPSString πŸ’–

The label for the 100 DPI radio button.

🌸 75DPSString 🌸

The label for the 75 DPI radio button.

πŸ¦‹ anyLowerString πŸ¦‹

The label for the any button.

⭐ anyString ⭐

The label for the Any button.

πŸŽ€ boldString πŸŽ€

The label for the Bold toggle button.

πŸ’œ bothString πŸ’œ

The labels for the Both radio buttons controlling both the dpi and width of the fonts displayed. The same resource is used to ensure consistent labels.

πŸ”₯ currentFont πŸ”₯

This resource provides the main application input and output to the font selector. If the programmer sets the value at creation time or with XtSetValues, then the currently displayed family, size, bold and italic will be changed to correspond to the values shown in the current font. Otherwise, the name of the font will be shown. The Font Selector's mode will be set to correspond to the type of font passed.

Note: currentFont must contain 14 hyphens (-) to be considered an XLFD font. This resource is also used to retrieve the font the user has selected from the font selector. The value returned is only valid until the next time XtGetValues is called on this instance of the font selector widget. πŸ‘€

✨ defaultEncodingString ✨

This resource is the default selection from the Encoding options menu.

🧚 encodingList 🧚

This resource is the list of encodings available from the FontSelector Encoding options menu.

🌈 encodingString 🌈

This resource is the default selection from the Encoding options menu.

πŸ“ familyString πŸ“

This resource is the default selection from the Family options menu.

πŸ‘‘ isoFontsOnly πŸ‘‘

This resource controls and maintains the state of the iso8859-1 fonts only toggle button.

πŸ’… italicString πŸ’…

This resource is the default selection from the Italic toggle button.

🫢 marginHeight 🫢

The margin height for all subwidgets of the Font Selector.

🌸 monoSpaceString 🌸

The label of the Fixed Width Fonts radio button.

⭐ optionString ⭐

The label for the Options... push button.

πŸ¦‹ otherString πŸ¦‹

The label for the Other Fonts radio button.

πŸ’œ propSpaceString πŸ’œ

The label for the Proportional Fonts radio button.

πŸŽ€ sampleText πŸŽ€

The string which appears in the sample text area.

πŸ”₯ scalingString πŸ”₯

The label for the Use Font Scaling toggle button.

✨ showFontName ✨

This boolean resource controls and maintains the state of Show Font Name toggle button.

🧚 showNameString 🧚

The label of the Show Font Name toggle button.

🌈 sizeString 🌈

The label for the Size option menu.

πŸ“ spacing πŸ“

The space between the toggle indicator and the toggle label.

πŸ‘‘ textRows πŸ‘‘

This resource controls the number of rows that are shown in the text widget that displays sample text in the currently selected font. Since this is a scrolled text widget it will never dynamically change size, regardless of the font displayed. Unless the initial font is large, this value should be at least 4, or the user interaction may be poor. 😭

πŸ’… useScaling πŸ’…

This resource controls and maintains the state of the Use Font Scaling toggle button.

🫢 valueChangedCallback 🫢

The list of callbacks called when the XmNcurrentFont value is changed.

🌸 xlfdString 🌸

The label for the Xlfd Fonts radio button.


πŸ’– Convenience Routine πŸ’–

XmCreateFontSelector β€” Widget creation convenience routine

Widget XmCreateFontSelector(
     Widget parent,      /* Widget id of parent for FontSelector */
     String name,        /* Name of the created widget */
     ArgList args,       /* argument list */
     Cardinal num_args   /* number of items in argument list */
     )

πŸ‘Ά Children πŸ‘Ά

okay so bestie, this widget is literally a whole friend group of sub-widgets πŸ’…. Just like every widget ever, most values you pass in through the argument list at creation time β€” or via set values β€” get passed down to each of this widget's children. But get values? Nope, you gotta ask each child one by one, no group chat for that. The children of the font selector are listed below. And bestie, check the docs for each child to see its own resource list, because they each have their own thing going on.

       XiFontSelector<named by application>

            XiPanedtopPane

            XmComboBoxfamilies

            < See XmComboBox for list of children >

            XmSeparatorseparator

            XiComboBoxsizes

            < See XmComboBox for list of children >

            XmSeparatorseparator

            XmButtonBoxboldItalicBox

            XmToggleButtonboldButton

            XmToggleButtonitalicButton

            XmSeparatorseparator

            XmToggleButtonoptionButton

            XmSeparatorseparator

            XmPanedmiddlePane

            XmPanedleftPane

            XmButtonBoxchoiceBox

            XmToggleButtonxlfdButton

            XmToggleButtonotherButton

            XmSeparatorseparator

            XmButtonBoxresolutionBox

            XmToggleButtondpi75Button

            XmToggleButtondpi100Button

            XmToggleButtonanyButton

            XmSeparatorseparator

            XmSeparatorseparator

            XmButtonBoxspacingBox

            XmToggleButtonproportionalButton

            XmToggleButtonmonoButton

            XmToggleButtonbothButton

            XmSeparatorseparator

            XmButtonBoxotherChoiceBox

            XmToggleButtonscalingButton

            XmToggleButtonisoButton

            XmToggleButtonshowNameButton

            XmRowColum      encodingOptionMenu

            XmLabelGadget OptionLabel

            XmCascadeButtonGadget OptionButton

            XmMenuShell    menuShell

            XmRowColum      pulldownMenu

            <dependent on XmNencoding>

            XmSeparatorseparator

            XmSeparatorseparator

            XmButtonBoxbox

            XmScrolledWindowtextSW

            XmScrollBarvbar

            XmTexttext

            XmSeparatorseparator

            XmLabelnameLabel

            XmSeparatorseparator

and that's the whole squad, no cap πŸ’–. Each one has its own docs, so go read them if you need the tea on resources.


Copyright (c) 1992 by Integrated Computer Solutions, Inc.

periodt, that's the legal tea β˜•.


source/version: XmFontSelector(3X) β€” and yeah, no date line in this part, but it's giving classic man page energy ✨🫢