for built-in named fonts
# File tk/lib/tk/font.rb, line 2234
def TkNamedFont.find(name)
name = name.to_s
unless (obj = Tk_FontNameTBL[name])
obj = self.new(name) if TkFont.is_system_font?(name)
end
obj
end
# File tk/lib/tk/font.rb, line 2242
def TkNamedFont.new(name, keys=nil)
name = name.to_s
obj = nil
Tk_FontNameTBL.mutex.synchronize{
unless (obj = Tk_FontNameTBL[name])
(obj = self.allocate).instance_eval{
@id = @compoundfont = name.to_s
@latinfont = nil
@kanjifont = nil
@descendant = [self, self] # [latin, kanji] : dummy
Tk_FontNameTBL[@id] = self
}
end
}
obj.instance_eval{ initialize(name, keys) }
obj
end
# File tk/lib/tk/font.rb, line 2263
def initialize(name, keys=nil)
@id = @compoundfont = name.to_s
# if not exist named font, create it.
begin
if keys
tk_call('font', 'configure', @compoundfont, keys)
else
tk_call('font', 'configure', @compoundfont)
end
rescue
# the named font doesn't exist -> create
if keys
tk_call('font', 'create', @compoundfont, keys)
else
tk_call('font', 'create', @compoundfont)
end
end
end