Named fonts are a great way to create and modify fonts on an application-wide basis. Just create a named font with
font create, then use that font name to create widgets or text elements. Then later you can use
font configure to modify the named font, and all the text elements will be automagically updated. Here is a little code example, showing named fonts used both in a widget and on a canvas.
package require Tk
font create titleFont -family Helvetica -size 12
font create subtitleFont -family Helvetica -size 10
canvas .c -borderwidth 3 -relief sunken
.c create text 20 30 -anchor w -text "This is the Title" -font titleFont
.c create text 20 50 -anchor w -text "This is the subtitle" -font subtitleFont
checkbutton .cb -text "Title Bold" \
-variable titleBold -offvalue normal -onvalue bold \
-command {font configure titleFont -weight $titleBold}
label .l1 -text "Family"
entry .e1 -textvariable subFamily
label .l2 -text "Size"
entry .e2 -textvariable subSize
button .b3 -text "Apply" -command applySub -font titleFont
grid .c - -sticky news
grid x .cb -sticky w
grid .l1 .e1 -sticky e
grid .l2 .e2 -sticky e
grid x .b3
set subFamily [font configure subtitleFont -family]
set subSize [font configure subtitleFont -size]
proc applySub {} {
global subFamily subSize
font configure subtitleFont -family $subFamily -size $subSize
}
See also
font,
Introduction to Fonts and
Changing all fonts in an applicationBryan Oakley has written an article titled "An Introduction to Named Fonts" archived at
http://web.archive.org/web/20090302082049/http://www.tclscripting.com/articles/jun06/article1.html