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 application
Bryan 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