通过使用"式样管理器"或者通过用户化附加字体和颜色资源,可为显示器选择广泛的颜色和字体范围。 本章讨论如何用户化字体和颜色资源。
本章还描述如何指定 DtEditor 附加工具应用程序的式样转换, 这些应用软件包括桌面文本编辑器 (dtpad) 和邮寄程序 (dtmail),以及和这些转换冲突的 DtEditor 附加工具应用程序的菜单加速器的替代式样转换。
资源是应用程序用以设置外观和特性的某种特征的。 例如,"式样管理器"(dtstyle) 提供这样的资源,它使您可以指定系统在何处寻找包含颜色 调色板信息的文件:
dtstyle*paletteDirectories: /usr/dt/palettes/C HomeDirectory/.dt/palettes
桌面应用程序的 App-default 文件位于/usr/dt/app-defaults/language 目录中。
例如,如果在 /etc/dt/config/C/sys.resources 中指定:
AnApplication*resource: 值
则在下次登录时,资源 AnApplication*resource 将在每个用户的 RESOURCE_MANAGER 属性中设置。
关于"式样管理器"的详细信息,请参阅 dtstyle 的手册页。关于"邮寄程序"资源的详细信息,请参阅 dtmail 的手册页。
资源在"会话管理器"起动会话时装入。关于会话管理器如何将资源装入到 RESOURCE_MANAGER 中的详细信息,请参阅"装入会话资源"。
下列进程管理器资源可用:
sampleNowTR
postPopupMenuTR
selectNextProcessTR
selectPrevProcessTR
selectFirstProcessTR
selectLastProcessTR
killSelectedProcessTR
缺省时 UNIX 绑定不可用。
下列过程指定了:
DtEditor 附加工具应用程序的 EMACS 式样转换, 例如桌面文本编辑器 (dtpad) 和邮寄程序 (dtmail)
与这些转换冲突的 DtEditor 附加工具应用程序菜单 加速器的替代转换。
在文件 HomeDirectory/.Xdefaults 中添加下行:
#include "/usr/dt/app-defaults/language/UNIXbindings"
其中 language 是 LANG
环境变量的值。
重新启动会话。
将文件 /usr/dt/app-defaults/language/UNIXbindings 的内容插入 HomeDirectory/.Xdefaults 中。
在.Xdefaults 文件中编辑绑定。
完成后重新启动会话。
/usr/dt/app-defaults/language/UNIXbindings 文件提供的 绑定如下表所述。
当 UNIX 绑定启用时,"Delete"键删除前一个字符,而"Shift-Delete"键删除下一个字符。
表 17-1 列出和 UNIX 绑定冲突的菜单加速器和加速器文本的dtpad 复位。
表 17-1 dtpad 复位
菜单加速器和加速器文本 |
复位 |
---|---|
Dtpad*fileMenu.print.acceleratorText: |
|
Dtpad*fileMenu.print.accelerator: |
|
Dtpad*editMenu.undo.acceleratorText: |
Ctrl+_ |
Dtpad*editMenu.undo.accelerator: |
Ctrl<Key>_ |
Dtpad*editMenu.paste.acceleratorText: |
Shift+Insert |
Dtpad*editMenu.paste.accelerator: |
Shift<Key>osfInsert |
Dtpad*editMenu.findChange.acceleratorText: |
Ctrl+S |
Dtpad*editMenu.findChange.accelerator: |
Ctrl<Key>s |
表 17-2 列出和 UNIX 绑定冲突的菜单加速器和加速器文本的 dtmail 创作窗口的复位。
表 17-2 dtmail 创作窗口复位
菜单加速器和加速器文本 |
复位 |
---|---|
Dtmail*ComposeDialog*menubar*Edit.Undo.acceleratorText: |
Ctrl+_ |
Dtmail*ComposeDialog*menubar*Edit.Undo.accelerator: |
Ctrl<Key>_ |
Dtmail*ComposeDialog*menubar*Edit.Paste.acceleratorText: |
Shift+Insert |
Dtmail*ComposeDialog*menubar*Edit.Paste.accelerator: |
Shift<Key>osfInsert |
Dtmail*ComposeDialog*menubar*Edit.Find/Change.acceleratorText: |
Ctrl+S |
Dtmail*ComposeDialog*menubar*Edit.Find/Change.accelerator: |
Ctrl<Key>s |
下列转换提供(GNU 式样)EMACS 控制和元键绑定以及一些附加绑定。 在适当的时候,它们也允许"Shift"键和正常绑定进行组合使用,以便反转操作的方向。例如,"Ctrl+Shift+F" 键将使光标后移一个字符,而正常情况下, "Ctrl+F" 键 使光标前移一个字符。
附加绑定是:
Ctrl+comma-后移一个单词
Ctrl+Shift+comma-前移一个单词
Ctrl+period-前移一个单词
Ctrl+Shift+period-后移一个单词
Ctrl+Return-文件结尾
Ctrl+Shift+Return-文件开头
GNU EMACS 将 delete-previous-character(),而不是 delete-next-character() 绑定到"Delete"键。正常情况下,"Meta+F"是文件菜单的符号,所以将忽略 forward-word() 的绑定。使用另一绑定 来进行 forward-word(例如,Ctrl+period)。
表 17-3 列出 DtEditor.text 转换
表 17-3 DtEditor.text 转换
修饰符键 |
键 |
动作例程 |
---|---|---|
c ~s |
<Key>a: |
行开头()\n\ |
c s |
<Key>a: |
行结尾()\n\ |
c ~s |
<Key>b: |
向后一个字符()\n\ |
c s |
<Key>b: |
向前一个字符()\n\ |
c ~s |
<Key>b: |
向后一个字符()\n\ |
c s |
<Key>b: |
向后一个词()\n\ |
m ~s |
<Key>b: |
向后一个词()\n\ |
m s |
<Key>b: |
向前一个词()\n\ |
c ~s |
<Key>d: |
删除下一个字符()\n\ |
c s |
<Key>d: |
删除前一个字符()\n\ |
m ~s |
<Key>d: |
kill(删除)下一个词()\n\ |
m s |
<Key>d: |
kill(删除)前一个词()\n\ |
c ~s |
<Key>e: |
行结尾()\n\ |
c s |
<Key>e: |
行开头()\n\ |
c ~s |
<Key>f: |
向前一个字符()\n\ |
c s |
<Key>f: |
向后一个字符()\n\ |
m ~s |
<Key>f: |
向前一个词()\n\ |
m s |
<Key>f: |
向后一个词()\n\ |
c |
<Key>j: |
新行并缩进()\n\ |
c ~s |
<Key>k: |
kill(删)到行结尾()\n\ |
c s |
<Key>k: |
kill(删)到行开头()\n\ |
c |
<Key>l: |
重画显示()\n\ |
c |
<Key>m: |
新行()\n\ |
c s |
<Key>n: |
进程继续()\n\ |
c ~s |
<Key>n: |
进程关闭()\n\ |
c |
<Key>o: |
新行并备份()\n\ |
c ~s |
<Key>p: |
进程继续()\n\ |
c s |
<Key>p: |
进程关闭()\n\ |
c ~s |
<Key>u: |
kill(删)到行开头()\n\ |
c s |
<Key>u: |
kill(删)到行结尾()\n\ |
c ~s |
<Key>v: |
下一页()\n\ |
c s |
<Key>v: |
前一页()\n\ |
m ~s |
<Key>v: |
前一页()\n\ |
m s |
<Key>v: |
下一页()\n\ |
c |
<Key>w: |
kill(删除)选择部分()\n\ |
c ~s |
<Key>y: |
unkill(不删除)()\n\ |
m |
<Key>]: |
向前一段()\n\ |
m |
<Key>[: |
向后一段()\n\ |
c ~s |
<Key>comma: |
向后一词()\n\ |
c s |
<Key>comma: |
向前一词()\n\ |
m |
<Key>\\<: |
文件开头()\n\ |
c ~s |
<Key>period: |
向前一词()\n\ |
c s |
<Key>period: |
向后一词()\n\ |
m |
<Key>\\>: |
文件结尾()\n\ |
c ~s |
<Key>Return: |
文件结尾()\n\ |
c s |
<Key>Return: |
文件开头()\n\ |
~c ~s ~m ~a |
<Key>osfDelete: |
删除前一字符()\n\ |
~c s ~m ~a |
<Key>osfDelete: |
删除下一字符() |
使用"式样管理器字体"对话框,可以选择所有应用程序 的字体组和字体大小。也可以在命令行中指定字体,或使用资源来:
设置单个应用程序的字体资源
指定不同字体供字体对话框使用
字体是一种文本字符被打印和显示的铅字式样。 桌面包含各种不同式样和大小的字体。
位图字体是由点的矩阵组成。(缺省情况下, "式样管理器"只配置位图字体)字体全部包含在一个文件中。 需要许多文件来规定一整套不同的大小、 倾斜度和磅值。
字体被指定为资源的值和命令的参数。"X 逻辑字体描述" (XLFD) 名称是请求所需字体的方法。系统查找到与它所给 的描述最匹配的字体。
"式样管理器字体"对话框使您可为类似文本输入和标签这样的事物选择字体(多达七种大小)。也可使您添加 或删除字体组。
当选中字体时,下列资源被写入 RESOURCE_MANAGER 属性中:
系统字体用于系统区,象菜单条、菜单格、按钮、 切换按钮以及标签。下列资源由系统字体设置:
*FontList
-显示在桌面客户和使用 OSF/Motif 工具包创建的其它客户的系统区中。
用户字体用于窗口的文本输入。下列资源由 用户字体设置:
*Font
-支持 X 应用程序的较早版本
*FontSet
-主设置
*XmText*FontList
-显示在文本输入框中
*XmTextField*FontList
-显示在文本输入框中
用于字体对话框中每个选项的字体在 /usr/dt/app-defaults/Dtstyle 资源文件中指定。最多可指定七种大小。
NumFonts
-字体对话框中字体大小的数字。
SystemFont[1-7]
-最多七种资源将专用字体指定给字体对话框中某一选项,以作为 系统字体。
UserFont[1-7]
-最多七种资源 将专用字体指定给字体对话框中某一选项,以作为 用户字体。
已选择了这些资源的缺省字体,以便满足在各种显示器上的可读性。如果要在应用程序中使用专用字体,请使用应用程序 字体资源设置字体,而不要更改这些桌面字体。
关于应用程序字体的详细信息,请参阅 DtStdAppFontNames(5) 和 DtStdInterfaceFontNames(5) 的手册页。
键入下列命令:
xlsfonts [-options] [-fn pattern]
显示了系统中可用的 XLFD 名称和字体别名的列表。位图字体在全部 14 个 XLFD 字段中显示值。可缩放字样在 PixelSize、 PointSize、ResolutionX 以及 ResolutionY 位置显示 0 。
要检查专用字体,请使用 xlsfonts 的模式匹配能力。 在不打算匹配处使用通配符来代替。
如果 xlsfonts 未显示任何以 dt 开头的字体名,则字体路径未包含桌面字体。键入下列命令,将桌面字体包含 到可用字体中:
xset +fp 目录名
其中目录名是包含桌面字体的目录。会话起动所设置的缺省位置为 /usr/dt/config/xfonts/language。
关于附加信息:
xset 和 xlsfonts 的手册页列出可用的选项。
使用 X Window 系统解释字体别名和 xset 客户。
使用 -xrm 命令行选项来指定专门客户的字体资源。例如:
application name -xrm "*bitstream-charter-medium-r-normal-8-88-75-75-p-45-iso8859-1"
通过列出 14 个不同的字符来指定字体,每个字符间用破折号 (-) 隔开。这称作 X 逻辑字体描述 (XLFD)。在某些情况下,列表中的属性可由一个 * 通配符代替, 并且,属性中的一个字符可由一个 ? 通配符代替。表 17-4 列出字体属性字符串说明。
"-Foundry-FamilyName-WeightName- Slant-SetwidthName-AddStyleName-PixelSize- PointSize-ResolutionX-ResolutionY-Spacing- AverageWidth-CharSetRegistry-CharSetCoding"
表 17-4 字体属性字符串说明
属性字符串 |
定义 |
---|---|
Foundry(铸造) |
标识字体设计器的字符串 |
族名 |
标识字体的注册商标名称的字符串 |
磅名 |
给出字体,例如粗体的相对磅值的字符串 |
倾斜方向 |
描述倾斜方向的代码: R(Roman-无倾斜) I(斜体-向右倾斜) O(倾斜-向右倾斜) RI(反转斜体-向左倾斜) RO(反转倾斜-向左倾斜) |
SetwidthName |
描述宽度,例如压缩或扩展的字符串 |
AddStyleName |
提供唯一标识字体所需要的任何 附加信息 |
PixelSize |
以象素为单位,给出 em-square 大小的整数 |
PointSize |
以小数点为单位,给出 em-square 大小的整数 |
ResolutionX |
以象素为单位,给出水平分辨率的整数 |
ResolutionY |
以象素为单位,给出垂直分辨率的整数 |
间隔 |
指定单元间的间隔的代码: M(等间隔--固定间距) P(比例间隔--变化间距) C(字符单元) |
AverageWidth |
以 1/10 个象素为单位,给出平均宽度的整数 |
CharSetRegistry |
标识已注册了字体编码的注册许可 的字符串 |
CharSetEncoding |
在指定注册中标识字符集的字符串 |
下列 XLFD 名称描述了名为 charter 的字体,它是由支持 ISO8859-1 标准编码的 Bitstream 生成的:
-bitstream-charter-medium-r-normal--8-80-75-75-p-45-iso8859-1
它具有中等磅值,没有特殊倾斜,并且为正常宽度。字体是成比例的,边框为 8 个象素或 8 个点的 em-square 。水平和垂直分辨率都是 75 个象素。字符的平均宽度为 45 个 1/10 象素或 4.5 个象素。
此字符串的一部分可由通配符代替。系统使用第一个与您指定的部分相匹配的字体。
如果您需要的只是 8 象素的 charter 字体,可使用:
*-charter-*-*-*-*-8-*
通过从"式样管理器字体"对话框中选择"属性"按钮,可以查看下列字体组的属性:
字体组
大小
别名
别名 XLFD
别名位置
字体
字体 XLFD
当用户添加字体组时,它被存储在下列位置:
HomeDirectory/.dt/sdtfonts/host/locale/typeface-nnnnnn
host 是本地工作站的宿主机名
locale 是用户的当前语言环境,象"C"或 "ja"
typeface-nnnnnn 是由选中的字体和唯一生成的数字派生的名称
此字体组目录包含下列三个文件
fonts.alias
fonts.dir
sdtfonts.group
fonts.alias 和 fonts.dir 文件是正常 X11 字体文件,其适合于添加到 Xerver 的字体路径中。sdtfonts.group 文件包含用户指定的字体组的名称。
这样其他的用户可以访问工作站上的字体组,系统管理员可将字体组复制到 /etc/dt/sdtfonts/locale 目录或复制到 /usr/openwin/lib/X11/stdfonts/locale 目录。"会话管理器"首先在 HomeDirectory/.dt/stdfonts/host/locale 中查找,接着在 /etc/dt/sdtfonts/locale 中查找,最后是在 /usr/openwin/lib/X11/stdfonts/locale中查找。
本节描述:
式样管理器如何设置显示颜色。
式样管理器用于控制桌面颜色所使用的资源。
调色板由一组颜色集组成。当前调色板所使用的颜色集显示在"式样管理器颜色"对话框中
每个调色板都对应一个文件。paletteDirectories 资源 指定了包含调色板文件的目录。缺省情况下,此资源包含:
内置调色板:/usr/dt/palettes
系统范围调色板:/etc/dt/palettes
个人调色板:HomeDirectory/.dt/palettes
在"式样管理器颜色"对话框中,当前调色板中的每个颜色集由一个颜色按钮代表。每种颜色由一个颜色集 ID-从 1 到 8 的数字,来标识。
每个颜色集最多由五种颜色组成。每个颜色按钮显示颜色集的背景颜色。每个颜色集中五种颜色代表下列显示组件资源:
前景-应用程序窗口或窗框的前景。它通常是黑色或白色。这一般是用于窗口和标题内的文本。
背景-应用程序或窗框的背景。
topShadowColor-应用程序控制(象按钮)和窗口框架的左上bevel(斜面)的颜色。
bottomShadowColor-应用程序控制(象按钮)和窗口框架的右下bevel(斜面)的颜色。
selectColor-指示某些控制活动的活跃状态的颜色,象活动的切换和按钮。
每个调色板所使用的颜色集的数目取决于 colorUse 资源,用户可以使用"式样管理器所用颜色数目"对话框来设置其数目。
在向其调色板文件写入颜色信息时,"式样管理器"使用 RGB 值。RGB 数字的语法为:
#RedGreenBlue
Red、Green 和 Blue 是十六进制数,每个 1 到 4 位长,这表示所使用的颜色的数目。每个颜色必须具有相同的位数。这样,有效的颜色值由 3、6、9 或 12 个十六 进制位。
例如,白色可用下列任一方式来指定:
#fff #ffffff #fffffffff #fffffffffffff
如果直接设置颜色资源,可使用颜色名称或 RGB 值。文件 /usr/lib/X11/rgb.txt 列出了全部已命名的颜色。
桌面通过资源将颜色集映射到各种显示单元,并作出如表 17-5中所示的指定。
表 17-5 将颜色集映射到资源的
资源 |
显示单元 |
---|---|
应用程序的菜单条、菜单、和对话框 |
这些资源将颜色集 ID 作为它们的值。当使用"式样管理器"选定新的调色板时,带有颜色集 IDs 的彩色显示单元允许单元动态地更改为新的颜色方案。
可将这些资源用于个人应用程序。例如,下行显示如何通过使用颜色集 8 作为窗口的主颜色,将所有的 dtterm 窗口可视地分组。
dtterm*primaryColorSetId: 8
用于显示单元的颜色集 IDs 取决于 在"式样管理器"中设置的颜色集数目:
表 17-6 显示高显色(8 个颜色集)的颜色集 IDs-"式样管理器"设置为"桌面使用更多颜色"。
表 17-6 高显色
颜色集 ID |
显示单元 |
---|---|
1 |
活动窗框颜色 |
2 |
非活动窗框颜色 |
3 |
未用(缺省情况下) |
4 |
文本输入区 |
5 |
应用程序的主背景区 |
6 |
应用程序的菜单条、菜单和对话框 |
7 |
缺省情况下未用 |
8 |
"前面板"背景 |
表 17-7 显示中显色(4 个颜色集)的颜色集 IDs-"式样管理器"设置为"应用程序使用更多颜色"。
表 17-7 中显色
颜色集 ID |
显示单元 |
---|---|
1 |
活动窗框颜色 |
2 |
非活动窗框颜色 |
3 |
"应用程序"和"前面板"背景颜色 |
4 |
文本输入区 |
表 17-8 显示低显色(2 个颜色集)的颜色 IDs-"式样管理器"设置为"应用程序使用大多数颜色"。
表 17-8 低显色
颜色集 ID |
显示单元 |
---|---|
1 |
活动窗框,工作区选择按钮 |
2 |
所有其它显示单元 |
可以通过"式样管理器"动态地更改桌面应用程序和其它合作应用程序的颜色。由"式样管理器"设置的前景和背景颜色可用于非合作应用程序。
对于客户程序而言,要响应"式样管理器"的颜色更改,客户程序必须在使用桌面 Motif 库。用其它工具包写入的客户程序无法动态地更改颜色来响应"式样管理器"的更改。 对于客户程序的颜色更改只有在重新启动客户程序后才生效。
客户程序必须未应用其它专用的颜色资源。这包括指定用户的资源、appdefaults(应用缺省)和在应用程序中内置的资源。
客户程序可指定 primaryColorSetId 和 secondaryColorSetId 资源在桌面调色板中使用某些颜色。
"式样管理器"所使用的颜色数取决于下列资源的值:
colorUse-配置桌面所使用的颜色数
shadowPixmaps-指示桌面用象素图来替换 这两种阴影颜色
foregroundColor-指定前景颜色是否动态地更改
dynamicColor-当切换调色板时控制 应用程序是否更改颜色
表 17-9 列出由桌面分配的最大颜色数。
表 17-9 桌面颜色的数目
显示 |
最大颜色数 |
数字采自 |
---|---|---|
B_W |
2 |
黑色和白色 |
LOW_COLOR |
12 |
两个颜色集乘以五种颜色,再加上黑色和白色 |
MEDIUM_COLOR |
22 |
四个颜色集乘以五种颜色,再加上黑色和白色 |
HIGH_COLOR |
42 |
八个颜色集乘以五种颜色,再加上黑色和白色 |
要决定最大颜色数:
将调色板中颜色集的数目与每个颜色集中的颜色数相乘。
加上 2(代表黑色和白色)。
但是,在下列配置情况下,在调色板中将只有十种颜色:四个颜色集乘以每个集中的两种颜色 (background 和 selectColor),再加上黑色和白色:
*colorUse: MEDIUM_COLOR *shadowPixmaps: True *foregroundColor: White
多重颜色图标使用 14 种附加颜色。
colorUse 资源的缺省值为 MEDIUM_COLOR。此资源的值影响在调色板中使用的颜色集的数目。其它资源影响用于制造阴影的颜色数。colorUse 资源的值也影响多重颜色图标的使用。
值 |
描述 |
---|---|
B_W |
"黑色和白色""式样管理器"将"显示"设置为 1 到 3 个颜色平面颜色集的数目:2 最大颜色数: 2 缺省颜色数:2 无多重颜色图标 |
LOW_COLOR |
"应用程序使用大多数颜色""式样管理器"将"显示"设置为 4 到 5 个颜色平面颜色集的数目:2 最大颜色数:12 缺省颜色数:12 无多重颜色图标 |
MEDIUM_COLOR |
"应用程序使用更多颜色""式样管理器"将"显示"设置为 6 个颜色平面 颜色集的数目:4 最大颜色数:22 缺省颜色数:22 多重颜色图标 |
HIGH_COLOR |
"桌面使用更多颜色""式样管理器"将"显示"设置为 7 个或更多个颜色平面颜色集的数目:8 最大颜色数:42 缺省颜色数:42 多颜色图标 |
缺省 |
桌面为那个显示选择正确的值。(要减少桌面用于高显色显示的颜色数,请将缺省的colorUse 资源设置成 MEDIUM_COLOR。) |
shadowPixmaps 资源指示桌面用象素图来代替两个阴影颜色。这些象素图将黑色或白色与背景颜色相混合,以便模拟顶部或底部阴影值。这将需要的颜色数减少了两个,因为不需要为阴影 颜色分配颜色单元。
值 |
描述 |
---|---|
真 |
桌面创建 topShadowPixmap 和 bottomShadowPixmap 来代替阴影颜色使用。 |
假 |
使用调色板的 topShadowColor 和 bottomShadowColor 。 |
shadowPixmaps 的缺省值取决于所具有的 colorUse 资源和显示器的硬件支持。
foregroundColor 资源指定在调色板中前景是如何配置的。
设置 |
结果 |
---|---|
白色 |
前景设置为白色。 |
黑色 |
前景设置为黑色。 |
动态(缺省) |
前景被动态地设置为黑色或白色,这取决于 background的值。例如,白色字母在黄色背景上很难阅读,所以系统选择黑色。 |
如果 foregroundColor 被设置为黑色或白色,则颜色集中的颜色数将减少一个,并且前景将不随背景颜色的更改而更改。
foregroundColor 的缺省值是"动态", colorUse 的值是 B_W 的位置除外。
dynamicColor 资源控制应用程序是否动态地更改颜色;就是说,当切换调色板时,客户程序是否更改颜色。
值 |
描述 |
---|---|
真 |
当选中新的调色板时,客户程序动态地更改颜色。 这是缺省值。 |
假 |
客户程序不动态地更改颜色。当选中了新的调色板时, 客户程序将在会话重新启动时,使用新的颜色。 |
当 dynamicColor 资源的值为"真"时,与能够动态地更改颜色的客户程序相比,无法动态地更改颜色的客户程序(non-Motif 应用程序)分配颜色图中不同的单元,即使您看到的颜色是相同的。
由于所有的客户程序可以共享相同的颜色单元,将 dynamicColor 设置为"假"将减少桌面消耗的颜色数。
桌面定义在应用程序窗口中的组件的缺省阴影厚度为一个象素,这些组件包括按钮阴影和焦点高亮。 Motif 1.2 应用程序使用此资源值;其它应用程序可能未获得此资源值,因而在显示上将有所不同。
将 non-Motif 1.2 应用程序的阴影厚度设置为一个象素:
以超级用户登录。
创建 /etc/dt/config/language/sys.resources 文件。
在/etc/dt/config/language/sys.resources中指定应用程序专用的资源如下:
application_class_name*XmCascadeButton*shadowThickness: 1
关于为所有桌面用户复位系统缺省资源和指定附加资源的详细信息,请参阅"装入会话资源"