Tcl/Tk Insight: 字体

风行水上 @ 2009-07-04 09:56:29
标签:
    «目录»

    字符编码是字符在计算机内部的表示。字体是字符在Tk组件中显示时的风格。

    要字符正确显示,首先要编码正确,其次要字体正确。一个程序中字符编码通常只有一种,字体则允许同时有多种。

    创建widget时指定字体

    button .btn -text "你好" -font "宋体 15"
    pack .btn
    

    设定全局字体

    为每一个组件指定字体太麻烦,全局指定的方法是在程序开始时加上

    option add *font "Helvetica 10"
    # 或者
    option add *font "宋体 15"
    

    描述字体的方式

    Tk按照如下5种规则按顺序尝试解析字体。

    1. 字体的名字(fontname)

    字体的名字由命令 font create指定或返回。

    比如:-font [font create -family 宋体 -size 13 -underline true]

    2. 系统平台相关的字体(systemfont)

    比如Windows平台上就有下面几种字体:ansi、ansifixed、device、oemfixed、system、systemfixed

    3. 由空格分开的描述字符串

    其格式为:family ?size? ?style? ?style ...?
    比如:-font “宋体 13 italic”

    可以使用的格式有 bold、italic、normal、overstrike、roman

    4. X-font names

    其形如://-foundry-family-weight-slant-setwidth-addstyle-pixel-point-resx-resy-spacing-width-charset-encoding//

    5. 字体格式列表

    比如:-font "-family 宋体 -size 13 -underline true"

    实用例程

    选择第一个存在的字体(Avaiable Font)

    • http://wiki.tcl.tk/19725
     proc firstfont {fontlist default} {
        set avail {}
        foreach f [font families] {
            lappend avail [string tolower $f]
        }
        foreach try $fontlist {
            if {[lsearch $avail [string tolower $try]] != -1} {
                return $try
            }
        }
        return $default
     }
    
     set fontfam [firstfont {{Palatino Linotype} {Times New Roman}} \
            Times]
     font create body -family $fontfam -size 11
     font create title -family $fontfam -size 16
    

    Font Chooser

    • http://wiki.tcl.tk/3896

    字体选择实践

    • http://wiki.tcl.tk/451
         switch $tcl_platform(platform) "unix" {
            set font times-roman-10
         } "macintosh" {
            set font {-size 9}
         } "windows" {
            set font {-family {MS Sans Serif} -size 7}
         }
      
    标签:

      分享到:
      comments powered by Disqus

      28/31ms