The first step is to create a logical font (you may start with the predefined names though - see the font_Init routine) with Font def. From now on you can use the logical font name wherever you would normally use an X font name (eg in all -font options. Changing one or more attributes of a font is done with either Font set for permanent changes or Font get for temporary changes to a font.
Font copy copies one font to another name so that you can change the appearance of the new font without affecting the old defintion.
Font names returns all logical names that are currently defined and Font info fontname returns the attributes of a given font.
Font exists checks if a logical font name is defined. Note that this does not currently check if the name refers to a legal or existing X font.
Font def LabelFont \ {-foundry adobe -family helvetica -charset iso8859 \ -encoding 1 -spacing proportional -pixel 0 } \ {-slant normal -width normal -weight normal -size 14}
To use the newly created label font say
button .b -text "huhu?" -font [Font get LabelFont]
To give the button a bold appearance you can define a new logical font or (if this is just a onetime change) do this
button .b config -font [Font get LabelFont -weight bold]
Of course you can do more complicated things:
button .b -font [Font get LabelFont -weight bold \ -slant italic -size 24]