BBSˮľÇ廪վ¡Ã¾«»ªÇø
¼ÄÐÅÈË: <bbs@captain.net.tsinghua.edu.cn>
±ê Ìâ: 4 -- Alex ÕûÀí
·¢ÐÅÕ¾: »ªÄÏÀí¹¤´óѧ BBSľÃÞÕ¾
ÈÕ ÆÚ: Tue Aug 20 08:33:48 1996
½×²ãµÄ×ÊѶ£ºÄã¿ÉÒÔ¿´µ½Õâ¸öÊÓ´°µÄ¸¸ÊÓ´°µÄid£¬¼¸¸ö×ÓÊÓ´°µÄid£¬ÒÔ¼°
¸ùÊÓ´°µÄid£¬ÔÚxlswins Öпɵõ½ÏàͬµÄ×ÊѶ£¬µ«ÔÚÕâÀïÖ»Äܵõ½×î
½üÒ»²ã×ÓÊÓ´°µÄid£¬²¢·ÇÕû¸ö×ÓÊ÷¡£
¼¸ºÎϸ½Ú£ºÊÓ´°µÄ´óСºÍλÖã¬ÒÔ¼°ËüµÄËĸö½ÇµÄλÖá£
ºÍserverÓйصÄÖØ½¨¹¹²ÎÊý£ºÏñ¡±gravity ¡±ºÍ¡±backing store ¡±Õâ
Щ״̬(state) £¬µ±ÊÓ´°¸Ä±ä´óС»ò´Ó±»ÕڸǵÄ״̬ÏÂÖØÐÂÏÔ
¶³öÀ´Ê±£¬serverÐèÒªÓõ½ÕâЩ²ÎÊý£¬ÕâЩ²ÎÊýÄã×Ô¼º²»»áÓõ½£¬
µ«¿É½åËüÁ˽âϵͳÈçºÎÔË×÷¡£
ʼþ²ÎÊý£ºÕâЩ²ÎÊýÒ²ÊǸøserver¶ø·Ç¸øÊ¹ÓÃÕßÓõġ£
ÊÓ´°¹ÜÀíÆ÷×ÊѶ£ºÔÚϵͳ¸Å¹ÛÖУ¬ÎÒÃÇÔø¾Ìá¹ýÓ¦ÓóÌʽ½åÖø¸øÊÓ´°¹ÜÀí
Æ÷һЩÌáʾ¡±hints ¡±À´´ï³ÉͨѶ£¨ÕâЩÌáʾ°üÀ¨Ó¦ÓóÌʽËùÏ£ÍûÊÓ
´°µÄ´óС£¬ÒÔ¼°Öض¨´óСʱµÄÏÞÖÆµÈ¡££©£¬xwininfoÔÚÕâ¸ö²¿·ÝµÄÊä
³ö±ãÊǸæËßÄãÕâЩ¡±Ìáʾ¡±µÄ×ÊÁÏ¡£Program supplied location Ϊ
Ó¦ÓóÌʽ½¨ÒéËü×Ô¼ºÓ¦¸Ã°ÚÄÄÀï¡£Èç¹ûÄãÔø¸ø¹ýλÖ㬲»ÂÛÊÇÔÚÃüÁî
Áлòresource file £¬¶¼»áÔÚ User supplied location ³öÏÖ£¬ÔÚÊÓ
´°´óС·½ÃæÍ¬Àí¿ÉÍÆ£¬resize increments ½âÊÍÁËΪʲ÷áÓÐЩÊÓ´°£¨
ÀýÈçxterm ºÍxfd £©²»ÄܰѴóС¶¨ÎªÈÎÒâÊýÄ¿µÄÏñËØ£¬ÒòΪӦÓóÌʽ
ÒѾ¸æËßÁËÊÓ´°¹ÜÀíÆ÷ÔÚÖØ¶¨´óСʱ°´¶àÉÙ¸öÏñËØµÄ±¶Êý·Å´ó»òËõС
£¨xterm ºÍxfd ËüÃǵĴóСºÍËùʹÓõÄ×ÖÐÍÓйأ©£¬ÄãÒ²¿ÉÒÔÓÉÕâ¸ö
²ÎÊýÖªµÀĿǰÊÓ´°µÄλÖã¬ËùÒÔÉÔááÄã¿ÉÒÔÔÚͬһλÖÃÉÏÖØ½¨Ëü¡£
12.2.3 ÁгöÊÓ´°µÄÐÔÖÊ -- xprop
ÈçͬÎÒÃÇÔÚϵͳ¸Å¹ÛËùÌá¼°µÄ£¬Ò»¸ö¡±ÐÔÖÊ¡±(property)ÊÇָһС¶ÎÓйØ
ÊÓ´°µÄ×ÊÁÏ£¬xprop ÈÃÄãÁгöÒ»¸öÌØ¶¨ÊÓ´°µÄËùÓС±ÐÔÖÊ¡±£¬ÄãÒ²¿ÉÒÔÁÐÓ¡
Ò»¸ö×ÖÐ͵ÄÐÔÖÊ¡£
¡¡¡¡Äã¿ÉÒÔ¾Óɳ£Óõķ½Ê½À´Ñ¡ÔñÊÓ´°£¨Åö´¥»¬Êó°´Å¥»òʹÓÃ-root »ò-id Ñ¡Ï
£¬Èç¹ûÊÇÖ¸¶¨×ÖÐÍ£¬ÔòÓÃÑ¡Ïî-font fontname¡£
ÏÔʾ³öÀ´µÄ¸ñʽΪ£º¶Ôÿһ¸öÐÔÖÊ£¬¾ùÓÐÒ»¸öÐÔÖÊÃû³Æ£¬ÔÚÆäááÓÃСÀ¨»¡
À¨×¡µÄΪÐÔÖʵÄÐÍ̬»ò¸ñʽ£¬×îááÔòΪÐÔÖʵÄÖµ¡£´ó²¿·ÝÄãËù¿´µ½µÄÐÔÖÊÐÍ̬
ΪSTRING£¬ÐÔÖʵÄÖµÓᱡ¡¡±À¨ÆðÀ´£¬ÆäËüµÄÐÔÖÊÐÍ̬µÄ¸ñʽÊÇרÊôµÄ£¬´Ó
ÐÔÖʵÄÖµºÜÈÝÒ×Á˽âËüµÄÒâÒ壬¶Ô×ÖÐÍÏÔʾµÄ¸ñʽÉÔÓв»Í¬£¬ËüûÓÐÐÔÖÊÐÍ̬£¬
µ«ÐÔÖʵÄÖµÒâÒåÒ²ºÜÃ÷ÏÔ¡£
×¢Ò⣺xprop µÄÊä³öÏ൱µÄ¸´ÔÓ£¬ÎÒÃDz¢²»ÐèÒªÁ˽âÆäËùÓеÄÄÚÈÝ£¬¶ËÊÓÐèÒª¶ø
¶¨¡£
ÒÔÏÂÈÃÎÒÃÇ¿´¿´´ÓÓ¦ÓÃÊÓ´°¡¢¸ùÊÓ´°¡¢×ÖÐÍËù»ñµÃ²»Í¬µÄÊä³ö£º
Ó¦ÓÃÊÓ´°µÄÐÔÖÊ
ͼ12-4Ϊxprop ¶ÔÒ»¸öÓ¦ÓÃÊÓ´°µÄÊä³ö£¬ÓÐЩ×ÊѶÄãÒѾÔÚxwininfoÖп´
µ½¹ý£¬ÔÚ´Ë´¦Äã¿ÉÒÔÔÚÃûΪWM_NORMAL_HINTS ºÍWM_HINTSµÄÐÔÖÊÖп´µ½¡£
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p140 fig 12.4 ©¦
©¦ ©¦
©¦ ͼ12-4 Ò»¸öÓ¦ÓÃÊÓ´°µÄÐÔÖʱíÁÐ ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
ÆäËüµÄÐÔÖÊÈçÏ£º
WM_COMMAND£ºÖ´ÐÐÆô¶¯Õâ¸öÓ¦ÓóÌʽµÄÃüÁîÁУ¬±»ÇгÉÒ»¸ö¸öÓÃË«ÒýºÅÀ¨ÆðÀ´µÄ
¡¡¡¡¡¡¡¡¡¡¡¡µ¥×Ö¡£
WM_CLIENT_MACHINE £ºÖ´ÐÐÕâ¸öclientÓ¦ÓóÌʽµÄ»úÆ÷Ãû³Æ£¨Õâ¸öÀý×ÓÓ¦ÓóÌ
ʽºÍserverÔÚͬһ²¿»úÆ÷ÉÏÖ´ÐУ¬ËùÒÔ»úÆ÷Ãû³ÆÎªvenus ¡££©¡£
WM_CLASS£ºÏÔʾӦÓóÌʽµÄinstant nameºÍclass name£¬instant nameÊÇÃüÁî
ÁÐÖÐ-name Ñ¡ÏîµÄÖµ¡£
WM_ICON_NAME£ºÓ¦ÓóÌʽµÄ±íáçͼËùÒªÏÔʾ³öÀ´µÄÃû³Æ£¨ÄãµÄÊÓ´°¹ÜÀíÆ÷±ØÐë
Äܹ»Ö§Ô®·½¿É£©¡£
WM_NAME £ººÜÆæ¹ÖµÄ£¬Õâ²»ÊÇÓ¦ÓóÌʽµÄÃû³Æ£¬¶øÊÇÓÉ-titleÑ¡ÏîÖ¸¶¨µÄÊÓ´°
±êÌâÃû³Æ£¬ÓÐЩÊÓ´°¹ÜÀíÆ÷»á°Ñ±êÌâÃû³ÆÏÔʾÔÚÓ¦ÓÃÊÓ´°µÄ±êÌâ
°ôÉÏ¡£
×¢Ò⣺ÉÏÊöÃüÁîÁÐÖÐ-name ºÍ-titleÁ½¸öÑ¡ÏîʹÓõúܹ㣬µ«Ëü²¢·ÇͨÓÃ
(universal) µÄÑ¡ÏӦÓóÌʽÔÚ׫дʱ±ØÐèҪʹÓõ½£Ø Toolkit£¨¹¤
¾ßÏ䣩²ÅÄܰÑÕâÁ½¸öÑ¡Ïîµ±³É±ê׼ѡÏîÀ´Óᣣ¨²Î¼ûµÚ£±£µÕ£©
¸ùÊÓ´°µÄÐÔÖÊ
ͼ12-5ÊÇxprop ¶Ô¸ùÊÓ´°µÄÊä³ö£¬ÏÔ¶øÒ×¼ûµÄÊÇ£¬Ëü²»»áº¬ÓÐÈκÎÊÓ´°¹Ü
ÀíÆ÷µÄÐÔÖÊ£¬ÒòΪÊÓ´°¹ÜÀíÆ÷¾ø²»¿ÉÄÜÖØÐ½¨¹¹¸ùÊÓ´°¡£
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p141 fig 12.5 ©¦
©¦ ©¦
©¦ ͼ12-5 ¸ùÊÓ´°µÄÐÔÖʱíÁÐ ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
ÓÐȤµÄÑ¡ÏîÈçÏ£º
RESOURCE_MANAGER£ºÕâ¸ö¸ùÊÓ´°ÐÔÖÊÊÇresource½á¹¹µÄÊäÈëÔ´Ö®Ò»£¬ÎÒÃǽ«ÔÚ
µÚ£±£±ÕÂÏêϸµØÌÖÂÛËü¡£
¼¸¸öCUT_BUFFER£ºµ±ÄãÇÐȡһ¶Î±¾ÎÄ£¨×ö¼ôÌù¶¯×÷³£Óã©£¬Õâ¶Î±»ÇÐÈ¡µÄ±¾ÎÄ
±»·ÅÔÚÒ»¸öÇÐÈ¡»º³åÆ÷(cut buffer)ÖУ¬ÕâЩ»º³åÆ÷±»µ±×÷ÊǸù
ÊÓ´°µÄÐÔÖÊÀ´´¢´æ£¬¶Ôì¶ÇÐÈ¡£¬»º³åÆ÷ÊÇÑ»·Ê¹Óõģ¬ÀýÈçÉÏ´Î
ÓÃ5 ºÅ»º³åÆ÷£¬ÔòÏ´ÎÓÃ6 ºÅ£¬½ÓÏÂÀ´7 ºÅ¡¢0 ºÅ¡¢1 ºÅµÈµÈ£¬
µ«ÊÇð¤ÌùÔòÒ»¶¨Ê¹ÓÃÉÏ´ÎÇÐÈ¡¶¯×÷ËùÓõĻº³åÆ÷¡£
×ÖÐÍÐÔÖÊ
ͼ12-6Áгöµ±ÎÒÃÇÖ¸¶¨*times*bold*-i-*-180-*µÄ×ÖÐÍÐÔÖÊ£¬´ó²¿·ÝµÄ×Ê
ѶÎÒÃǶ¼²»Ðè¹ØÐÄ£¬Äã¿ÉÄÜÖ»¶ÔFULL_NAME ºÍPOINT_SIZEÓÐÐËȤ¡£
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p142 fig 12.6 ©¦
©¦ ©¦
©¦ ͼ12-6 ×ÖÐ͵ÄÐÔÖʱíÁÐ ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
12.3 ¹Û²ì£ØµÄʼþ -- xev
¡±Ê¼þ¡±»ò¶à»òÉÙÇý¶¯ÖøÕû¸öÊÓ´°ÏµÍ³£¬ËùÓеÄÊäÈ룬²»ÂÛÊÇ»¬Êó»ò¼üÅÌ£¬
¾ùÓÉ¡±Ê¼þ¡±À´ÕÆÎÕ£¬¡±Ê¼þ¡±Ò²±»ÓÃÀ´Çý¶¯ÊÓ´°µÄÖØÐ½¨¹¹ºÍÕ¹ÏÖ¡£xev ³Ì
ʽÈÃÄã¿´µ½µ±²»Í¬µÄ¶¯×÷·¢Éúʱ£¬»á²úÉúʲ÷ᡱʼþ¡±£¬ÒÔ¼°ºÍ¡±Ê¼þ¡±ÓйØ
µÄ×ÊѶ¡£
µ±xev Æô¶¯£¬Ëü»á½¨Ò»¸öÀàËÆÍ¼12-7µÄÊÓ´°£¬¶øÔÚÕâÊÓ´°ÖУ¬»á¿ªÊ¼Áгö
ÀàËÆÍ¼12-8µÄÓйØÊ¼þµÄϸ½Ú²¿·Ý¡£
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p143 fig 12.7 ©¦
©¦ ©¦
©¦ ͼ12-7 xev ÊÓ´° ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p143 fig 12.8 ©¦
©¦ ©¦
©¦ ͼ12-8 xev µÄÊä³ö ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
ÓÉì¶ xevÌṩ´óÁ¿µÄϵͳÄÚ²¿²Ù×÷ϸ½Ú£¬ÄãÈç¹ûÏëÒª¡±ÊµÑ顱ϵͳ£¬ÕâÊÇÒ»¸ö
ºÜÓÐÓõijÌʽ£¬ÓÐÁ½¸ö˵Ã÷ÊÖ²áÉÏδÌáµ½µÄÑ¡Ïî¿ÉÒÔÓ°Ïìµ½xev µÄÐÐΪ£º
-bs option£º´ËÑ¡Ïî¸Ä±äxev ¶ÔserverÊÇ·ñʹÓÃbacking store £¨¼ûµÚ£²Õ£©£¬
ʹÓÃbacking store ½«¼õÉÙÆØ¹â¡±Ê¼þ¡±µÄ´ÎÊý£¨Ò²¾ÍÊǼõÉÙÓ¦
¡¡¡¡¡¡¡¡¡¡¡¡ÓóÌÊ½ÖØÐ¸üÐÂËü×Ô¼ºÊÓ´°µÄ´ÎÊý£©£¬ÕýÈ·µÄÑ¡ÏîÄÚÈÝΪalways£¬
¡¡¡¡¡¡¡¡¡¡¡¡whenmappedºÍnotuseful ¡£
-s£ºÊ¹ÓÃsave-unders £¨¼ûµÚ£²Õ£©£¬Ò²¾ÍÊÇ˵£¬ÒªÇóserver±£´æÄÇЩ±»xev
µÄÊÓ´°ÕÚ¸ÇÖ®ÊÓ´°µÄÄÚÈÝ¡£
12.3.1 xev ºÍ¼üÅÌ
Èç¹ûÄ㽫ָ±êÒÆÈëxev ÊÓ´°ÇÒ°´ÏÂÄãµÄ¼üÅÌÉϵÄijһ¸ö¼ü£¬ÔòÒ»¸ö£¨»ò¶à
¸ö£©¼üÅÌ¡±Ê¼þ¡±»á·¢Éú£¬¡±Ê¼þ¡±µÄ×ÊѶ°üº¬ÁËkeycode ºÍkeysym£¬ÕâÊÇ×î
ÈÝÒ×¹Û²ìÄãµÄ»úÆ÷ÉÏijһ¸ö¼üÊÇʲ÷á¼üÂë(keycode) µÄ·½·¨£ºÖ´ÐÐxev £¬°´Ò»
¸ö¼ü£¬xev ±ã»á¸øÄã×ÊѶ£¬Õâ¶Ô¶¨ÖÆÄãµÄ¼üÅ̷dz£ÓÐÓ㬼û£±£¸Õ¡£
12.4 ½áÂÛ
±¾ÕÂËùÊöµÄÕâЩ³Ìʽ£¬ÈÃÄã¹Û²ìϵͳµÄÄÚ²¿£»»ñµÃËüµÄ²Ù×÷ϸ½Ú£»ºÍËüµÄ
ÊÓ´°¼°ÆäËü³ÉÔ±ÌØ¶¨µÄ×ÊѶ£®¶ÔÕâЩ³Ìʽ±¾Éí¶øÑÔ£¬ËüÃÇÄܰïÖúÄãÁ˽âϵͳ£¬
µ«ËüÃÇ×î´óµÄÓÃ;¿ÉÄÜÊÇÓÃÀ´Á¬½ÓÄÇЩ¶¨ÖÆÏµÍ³µÄ³Ìʽ¡£ÒÔϵļ¸ÕÂÔÚ˵Ã÷Èç
ºÎ¶¨ÖƺÍÉ趨ÄãµÄϵͳ£¬ºÃÈÃϵͳ¸üÊʺÏÄ㹤×÷µÄϰ¹ß¡£
ÏÂÒ»ÕÂÌÖÂÛ´¦Àí×ÖÐͺÍÑÕÉ«£¬¼°ÈçºÎʹÓÃËüÃÇ¡£
=====
µÚ£±£³Õ ʹÓãصÄ×ÖÐͺÍÉ«²Ê
£ØÖ§Ô®¶àÖÖµÄ×ÖÐͼ°¼¸ºõÎÞÏÞ¶àÖֱ仯µÄÉ«²Ê£¬´ó¶àÊýµÄÓ¦ÓóÌʽÔÊÐíÄãÖ¸
¶¨Ó¦ÓÃÊÓ´°Öи÷¸ö²»Í¬²¿·ÝµÄÑÕÉ«£¬¶ø¼¸ºõËùÓеģسÌʽ¾ùÔÊÐíÄãÖ¸¶¨ÄãÏëҪʹ
ÓõÄ×ÖÐÍ¡£
ÔÚ£ØÖеÄ×ÖÐÍ(fonts)£º
£®Óй̶¨µÄ¿í¶È£¨ÏñÑÆÖÕ¶Ë»úµÄ×ÖÔª£©»ò³É±ÈÀýµÄ¼ä϶¡£
£®Óɱ¾ÎÄ×ÖÔª(text characters) »ò·ûºÅ×é³É£¬»òÒÔÉÏÁ½Õß¾ùÓС£
£®¾ßÓжàÖֵĵã³ß´ç(point size)¡£
£®¿ÉÒÔÐÞ¸ÄÒÔÊÊÓ¦ÌØ¶¨µÄÓ©Ä»½âÎö¶È£¨ÀýÈç¶Ôì¶Í¬Ò»µã³ß´çµÄijһÖÖ×ÖÐÍ£¬
Äã¿ÉÄܶÔ75 dpi (dots-per-inch ÿ´çÈô¸Éµã) µÄÓ©Ä»ÓÐÒ»ÖÖ°æ±¾£¬¶Ô
100 dpi µÄÓ©Ä»ÓÐÁíÒ»ÖÖ°æ±¾£©¡£
£®ÓÐÒ»ÖÖ±ê×¼ÃüÃûµÄ´«Í³¡£
£®¿ÉÒÔÒÔÈ«Ãû´æÈ¡£¬Ò²¿ÉÒÔÓÃͨÓÃ×ÖÔª(wildcard)¡£
£®´¢´æÔÚÌØ¶¨½¨¹¹µÄĿ¼Ê÷ÖУ¬Ö»ÒªserverÔÚÖ´ÐÐʱ£¬×ÖÐͱã¿ÉÒÔ¼ÓÈë»ò
ÒÆ³ö¡£
ÔÚϵͳ¼ä½øÐÐ×ÖÐ͵Ľ»»»ÓÐÒ»Ì×±ê×¼µÄ¸ñʽ£¬²¢ÇÒÓй¤¾ß³Ìʽ¿ÉÒÔ½«Õâ¸ö
¸ñʽת»»³ÉÄãµÄserverÄÜÁ˽âµÄ¸ñʽ£¬¹¤¾ß³ÌʽҲ°üº¬ÁËÁгö¿ÉÓÃ×ÖÐ͵ÄĿ¼
¡¢¹Û²ìÄ³Ò»ÌØ¶¨×ÖÐÍÄÚÈݵȹ¦ÄÜ¡£
±¾ÕÂÏȶÔ×ÖÐÍ×÷Ò»¼ò¶ÌµÄ½éÉÜ£¬ÈÃÄãÄܾ¡¿ìµÄʹÓÃËüÃÇ£¬È»áá²Åת¶øÏêϸ
µØ½âÊÍ×ÖÐ͵Ľṹ¡¢¸ñʽ¡¢¹¤¾ß³ÌʽµÈ£¬×îááÒ»½ÚÌÖÂÛÉ«²Ê£ºÈçºÎÉ趨ºÍʹÓÃ
ËüÃÇ¡£
13.1 ×ÖÐͳõ²½
±¾½ÚµÄÄ¿µÄÊÇÈÃÄ㾡¿ìµØÄÜʹÓÃ×ÖÐÍ£¬ÎÒÃǽ«¸æËßÄãÈçºÎÕÒ³öÓÐÄÄЩ×ÖÐÍ
¿ÉÓá¢Ö¸¶¨ÄãÓûʹÓõÄ×ÖÐÍÃû³Æ¡¢¿´×ÖÐ͵ÄÍâ¹Û¡¢ÈçºÎÔÚ£ØÓ¦ÓóÌʽÖÐʹÓÃ×ÖÐÍ¡£
13.1.1 Áгö¿ÉÓõÄ×ÖÐÍ
xlsfonts³ÌʽһÐÐÐеÄÁгöserverÉÏ¿ÉÓõÄ×ÖÐÍ£¬Í¼13-1ÏÔʾ²¿·ÝµÄ
xlsfontsµÄÊä³ö£¬ÄÚÈÝΪMIT °æ±ê×¼µÄ×ÖÐÍ¡£
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p146 fig 13.1 ©¦
©¦ ©¦
©¦ ͼ13-1 µäÐ͵Ä×ÖÐÍĿ¼ÁÐ±í ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
13.1.2 ×ÖÐÍÃüÃû
ÓÐЩ×ÖÐ͵ÄÃû³ÆÌ«³¤ÒÔÖÂʹÓò»±ã£¬µ«ºÜÐÒÔ˵ģ¬ËüÃÇÒ²²»³£±»Ê¹Ó㬲¢
ÇÒ£¬£ØÖ§Ô®×ÖÐÍÃû³Æ¿ÉʹÓÃͨ×ÖÔª(wildcard)£º
? ¶ÔÓ¦ÈκÎÒ»¸ö×ÖÔª
* ¶ÔÓ¦´Ó£¨×ÖÔª£©³¤¶ÈΪÁãÖÁ³¤¶ÈÈô¸ÉµÄ×Ö´®
ÕâºÍUnix shell´«Í³µÄͨÓÃ×ÖÔªµµ°¸Ãû³ÆÏàͬ£¬Ê¹ÓÃͨÓÃ×ÖÔª¿ÉʹÄã¸üÈÝ
Ò×Ö¸¶¨×ÖÐÍÃû³Æ¡£
×¢Ò⣺Èç¹ûÄãÔÚshell µÄÃüÁîÁÐÖ¸¶¨Ò»¸öͨÓÃ×ÖÔªµÄ×ÖÐÍÃû³Æ£¬ÐèÒªÔÚÃû³ÆÇ°
áá¼ÓÉÏË«ÒýºÅ ¡£
13.1.3 ¹Û²ìÒ»¸öÌØ¶¨µÄ×ÖÐÍ
xfd (£Ø font displayer µÄËõд) ³ÌʽÓÉÒýÊý(argument)µÃµ½×ÖÐ͵ÄÃû
³ÆÖ®áᣬ½¨Á¢Ò»¸öÊÓ´°²¢ÇÒÔÚÊÓ´°ÖÐÏÔʾ´ËÃû³ÆÖ®×ÖÔª×ÖÐÍ£¬ÀýÈ磺
xfd -fn "*symbol*-180-*"
½«ÏÔʾÈçͼ13-2µÄÊÓ´°¡£
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p147 fig 13.2 ©¦
©¦ ©¦
©¦ ͼ13-2 ×ÖÐ͵Äչʾ ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
13.1.4 ÒԣسÌʽʹÓÃ×ÖÐÍ
´ó¶àÊýµÄ£Ø³ÌʽʹÓÃÎÄ×Ö£¬²¢ÇÒÔÊÐíÄãÖ¸¶¨Ê¹ÓõÄ×ÖÐÍ£¬ÈçºÎʹÓõÄÏêϸ
ϸ½Ú¿ÉÄÜÒò²»Í¬µÄ³Ìʽ¶øÒ죬Èç¹ûÓÐÎÊÌâµÄ»°¿ÉÒÔ¿´Ö¸ÄÏÒ³¡£µ«ÊǼ¸ºõ¶¼ÊÇÒÔ
ÃüÁîÁÐÖÐÑ¡Ïî -fn fontname »ò -font fontname À´Ö¸¶¨×ÖÐÍÃû³Æ£¬bitmap¡¢
xclock¡¢xterm¡¢xload¡¢xmb ºÍ xedit¶¼ÊÇÕâÑù²Ù×÷µÄ¡£ÀýÈç¼ÙÉèÄãÊÇΪÁËÕ¹
ʾµÄÔµ¹Ê£¬ÒԺܴóµÄ×ÖÐÍÖ´ÐÐxterm £¬Äã¿ÉÒÔÓÃÏÂÁÐÃüÁîÁУº
xterm -fn "*courier-bold-r-*-240-*"
×¢Ò⣺Èç¹ûÄã¸ø³ÌʽµÄÖ¸¶¨¶ÔÓ¦µ½Ò»ÖÖÒÔÉϵÄ×ÖÐÍ£¬Ôòserver»áËæ±ãÔÚÆäÖÐÑ¡
ȡһ¸ö£¬ÀýÈ磺Èç¹ûÄãÊ¡ÂÔÁËÉÏÀýÖÐµÄ -r µÄÖ¸¶¨£¬ÔòÄã»áʹÓõ½Òâ´ó
ÀûбÌå(italic)×ÖÐÍ»ò·´Ð±Ìå(reverse oblique) ×ÖÐÍ£¬ºÍÔÀ´ËùÖ¸¶¨
µÄÂÞÂí(roman) ×ÖÐ͵Ļú»áÊÇÒ»ÑùµÄ¡£
ÏÖÔÚÄãÓ¦¸ÃÓÐһЩ¸ÅÄîÁË£¬ÎÒÃǽ«´Ó²»Í¬µÄ¹ÛµãÏêϸµØÌÖÂÛ¡£
13.2 ×ÖÐÍÈçºÎÃüÃû
ÔÚ£ØÖУ¬×ÖÐÍ¿ÉÒÔÈ¡³ÉÈκÎÃû³Æ£¬µ«¼¸ºõËùÓеÄ×ÖÐ;ùÒÀÕÕËüÃǵı¾ÖÊÀ´
ÃüÃû£¬ÕâÑùµÄÃüÃû·½Ê½£¬Ãû×ÖÊÇÓɼ¸¸ö²»Ïà¹ØµÄ²¿·Ý×éºÏ¶ø³É£¬¶øÎÒÃÇÔÚʹÓÃ
Ó¦ÓóÌʽʱ£¬¹âÆ¾Öø×ÖÐÍÃû³Æ±ã¿ÉÒÔ´óÂÔÁ˽â×ÖÐ͵ÄÄÚº¡£
ÎÒÃÇÒÔÒ»¸ö×ÖÐÍÃû³ÆÎª·¶Àý£¬ÖðÒ»½âÊÍËüµÄ×é¼þ£¬×é¼þÖ®¼äÊÇÓɶ̺áÏß(-)
Ëù·Ö¿ªµÄ£¬¶øÇÒ¿ÉÒÔ°üº¬¿Õ°×£¬×ÖÐÍÃû³Æ¶Ô×ÖÔª´óСд²¢²»»áÇø±ð£¬·¶ÀýÈçÏ£º
-adobe-times-bold-normal--12-120-75-75-p-67-iso8859-1
adobe £º×ÖÐ͵ÄÖÆÔì³§ÉÌ¡£
times £ºÐÍ̬¼Ò×å(type family) £¬ÆäËüÉаüº¬courier £¬helvetica ºÍ
new century schoolbook¡£
bold £º´ÖÌå×Ö£¬ÆäËü°üº¬light £¨Ï¸£©ºÍmedium£¨Öеȣ©¡£
r £º×ÖÌåÇãбµÄÐÍ̬£¬r ÊÇroman £¨ÂÞÂíÌ壩£¬ÆäËüÊÇ i£¨italicÒâ
´óÀûÌ壩£¬o £¨oblique ÇãбÌ壩¡£
12 £º×ÖÔªµÄ¸ß¶È£¬µ¥Î»ÎªÏñËØ¡£
120 £º×ÖÐ͵ĵã³ß´ç(point-size)£¬ÎªµãµÄ10±¶£¨120 ÒâΪ12µã£¬Ò»µã
ԼΪ1/72Ó¢¡õ¿í£©¡£
75-75 £º×ÖÐͱ»Éè¼ÆÔÚÏÔʾװÖÃÉϵÄˮƽºÍ´¹Ö±µÄ½âÎö¶È£¨Ã¿¡õÈô¸Éµã£©¡£
p £º×ÖºÍ×ÖÖ®¼äµÄ¼ä϶£¬p ÊÇproportional£¨³É±ÈÀýµÄ£©£¬Ïà¶ÔµÄÊÇ
m £¨monospaced¹Ì¶¨¿í¶È£©¡£
Èç¹ûÄã¶ÔijһÀ¸ÓÐÌØ±ðµÄÐËȤ£¬ÔÚ±¾°æµÄ˵Ã÷Îļþµµ
$TOP/doc/fontnames/fname.txt
ÖУ¬ÓжÔÿһ¸ö×é¼þÍêÕûµÄ˵Ã÷¡£
Äãͨ³£±È½ÏÓÐÐËȤµÄÏîĿΪ¼Ò×åÐÍ̬¡¢×ÖÌå´Öϸ¡¢ºÎÖÖбÌå×ÖÒÔ¼°×ÖÐÍ´ó
С£¬³ýÁËÖ¸¶¨Õ⼸ÏîµÄÖµÍ⣬ÆäËüµÄÏîÄ¿²»·Á½åÖøÍ¨ÓÃ×ÖÔªµÄ·½Ê½È¥Ö¸¶¨¡£
13.2.1 ͨÓÃ×ÖÔªºÍ×ÖÐÍÃû³Æ
ÔÚµÚ13.1½ÚÖУ¬ÎÒÃÇÔø¾½âÊ͹ýͨÓÃ×ÖÔªµÄ¹æÔò£ºÐǺţ¨*£©±íʾ¶ÔÓ¦µ½
Áã»ò¶à¸ö×ÖÔª£¬Îʺţ¨?£©¶ÔÓ¦µ½Ò»¸öÈÎÒâµÄµ¥Ò»×ÖÔª¡£
Äã¿ÉÒÔËæÒâµÄʹÓÃͨÓÃ×ÖÔª£¬µ±ÄãµÄÉ趨¶ÔÓ¦µ½Ò»ÖÖÒÔÉϵĿÉÓÃ×ÖÐÍʱ£¬
server»áËæ±ãÌôÒ»ÖÖ×ÖÐÍÀ´Óã¬Èç¹ûÄãµÄÉ趨ʲ÷á×ÖÐÍҲû¶ÔÓ¦µ½£¬Í¨³£Äã»á
»ñµÃÒ»ÐÐѶϢ£¬¶øserver½«»áʹÓÃÔ¤Éè×ÖÐÍ¡£
Äã¿ÉÒÔ¶Ô×ÖÐ͵ĵã³ß´çʹÓÃͨÓÃ×ÖÔª£¬¶ø²»ÊÇÏñËØ³ß´ç£¬ÒòΪÔÚÏÔʾÆ÷ÉÏ
Ò»¸ö¸ø¶¨µã³ß´çµÄ×ÖÐͶԲ»Í¬µÄ½âÎö¶ÈÓв»Í¬µÄÏñËØ³ß´ç£¬ËùÒÔÓÃͨÓÃ×ÖÔªÖ¸
¶¨µã³ß´ç¿ÉÒÔÔì³ÉÓë×°±¸Î޹صÄЧ¹û£¬ÉÏÊöµÄ·¶ÀýÄã¿ÉÒÔÈç´ËÉ趨£º
*-times-bold-r-*-120-*
Ò²¾ÍÊÇ˵ÒÔ-120-È¡´ú-12-
13.2.2 Áгö¿ÉÓõÄ×ÖÐÍ -- xlsfonts
xlsfontsÁгöÔÚÄãserverÉÏ¿ÉÓõÄ×ÖÐÍ£¨Èç¹ûÄãʹÓÃÓÃÃüÁîÁÐÖÐ-display
Ñ¡Ï±ã¿ÉÁгöÆäËüserverÉÏ¿ÉÓõÄ×ÖÐÍ£©¡£Ô¤ÉèÊÇÁгöËùÓеÄ×ÖÐÍ£¬µ«ÊǾÍ
ÈçͬUnixµÄlsÃüÁîÒ»Ñù£¬Èç¹ûÄã¼ÓÉÏÏÞÖÆ£¬±ãÖ»»áÁгöºÏºõÏÞÖÆµÄÏîÄ¿£¬ÀýÈ磺
xlsfonts "*-times-*-180-*"
ÁгöËùÓÐ18µãTimesµÄ×ÖÐÍ¡£
ÔÔòÉÏ£¬xlsfontsÊÔͼÔÚÿÐÐÁÐÓ¡³ö¾¡Á¿¶àµÄ×ÖÐÍÃû³Æ£¬µ«Êµ¼ÊÉÏ£¬´ó²¿
·ÝµÄ×ÖÐÍÃû³Æ¶¼ºÜ³¤ÒÔÖÂÒ»´ÎÖ»ÄÜÓ¡Ò»¸öÃû³Æ£¬µ«ÊÇҪСÐÄ£¬µ±×ÖÐÍÃû³Æº¬ÓÐ
¿Õ°×ʱ£¬Ò»ÐÐÓÐÊý¸ö×ÖÐÍÃû³Æ³£³£ÈÝÒ×»ìÏý¡£
×¢Ò⣺Ðí¶àµÄ×ÖÐÍÃû³Æ¿ªÍ·ÎªÒ»¶ÌºáÏß(-) £¬ËùÒÔxlsfonts»áÎó°Ñ´ËÖÖ×´¿öµ±
³ÉÃüÁîÁеÄÑ¡ÏîÀ´½âÊÍÒÔÖ·¢Éú´íÎó£¬ÀýÈ磺
xlsfonts "-adobe-*"
»áʧ°Ü£¬Äã¿ÉÒÔÓÃÑ¡Ïî-fn ¼ÓÒÔÇø·Ö£¬»òÕßÖ»ÒªÔÚÉ趨֮ǰ¼ÓÒ»¸öÐǺţ¨*£©
¼´¿É£º
xlsfonts "*-adobe-*"
xlsfonts -fn "-adobe-*"
13.3 ¹Û²ìÌØ¶¨×ÖÐ͵ÄÄÚÈÝ -- xfd
xfd ÊÇÒ»¸ö¡±×ÖÐÍÏÔʾ¡±µÄ³Ìʽ£¬Ëü½¨Á¢Ò»¸öÊÓ´°£¬¶øááÔÚÊÓ´°Öн«×ÖÐÍ
µÄÔªËØÏÔʾÔÚ³¤·½¸ñ×ÓÖС£ÊÓ´°¿ÉÄÜûÓдóµ½Ò»´Î½«×ÖÐÍÖÐËùÓеÄ×ÖÔªÏÔʾ³ö
À´£¨ÓÈÆäÊÇÄã¿ÉÄܶÔËüÖØ¶¨¹ý´óС£©£¬µ«ÄãÈÔÈ»¿ÉÒÔ´æÈ¡ËüÃÇ£º
ÏòÇ°ÒÆ¶¯£ºÔÚxfd ÊÓ´°ÖÐÅö´¥»¬ÊóÓÒ°´Å¥£¬ÊÓ´°µÄÏÂÒ»Ò³½«»á³öÏÖ¡£
ÏòááÒÆ¶¯£ºÅö´¥»¬Êó×ó°´Å¥¡£
»ñÈ¡×ÖÔªµÄ×ÊѶ£ºÔÚ×ÖÔªÉÏÅö´¥»¬ÊóÖа´Å¥£¬xfd »á¸øÄã×ÖÔªºÅÂ룬Èç¹û
ÄãÔÚ³Ìʽһ¿ªÊ¼É趨ÃüÁîÁÐÑ¡Ïî-verbose£¬Ä㽫»ñµÃһЩ¸ü¶àµÄ×ÊѶ£¬Àý
Èç×ÖÔªµÄ´óСÒÔ¼°ËüÔÚ×ÖÔª¡±cell¡±ÖеÄλÖá£
13.4 ÈçºÎ´¢´æ×ÖÐͼ°´æÔںδ¦
ÔÚ±¾½ÚÖУ¬ÎÒÃÇÃèÊö×ÖÐͲ»Í¬µÄ¸ñʽ£¬ÒÔ¼°×ª»»Á½ÖÖ²»Í¬¸ñʽµÄ¹¤¾ß£¬È»
ááÌÖÂÛserverÊÇÈçºÎ´æÈ¡×ÖÐͺÍÄãÈçºÎ¸ü¸Ä¶Ô×ÖÐ͵ÄÑ¡Ôñ¡£×îáᣬÎÒÃÇ»á¸øÒ»
¸öÍêÕûµÄ·¶ÀýÀ´ËµÃ÷ÈçºÎ¼ÓÈëÒ»ÖÖеÄ×ÖÐ͵½ÄãµÄϵͳ¡£
13.4.1 ×ÖÐ͵ĸñʽ -- Server Natural Format (SNF)
×ÖÐÍÔÚserverÉÏÊÇÒÔServer Natural Format (SNF) ·½Ê½´¢´æ£¬ÕâÖÖ¸ñʽ
²¢²»ÊÇÒ»ÖÖ±ê×¼£¬¶øÇÒΪserverËùרÓã¬ËùÒÔÄã²»Äܽ«×ÖÐÍÒÆµ½²»Í¬ÐÍ̬µÄ
server¡£
showsnf ³Ìʽӡ³ö´¢´æÔÚSNF µµÖÐ×ÖÐ͵Ä×ÊѶ£¬¶Ô×ÖÐͱ¾ÉíÖ´ÐÐxprop ¿É
»ñµÃ¸ü¶àÀàËÆµÄ×ÊѶ¡£(showsnfµÄÒýÊýΪµµ°¸Ãû³Æ£¬xprop ÔòΪ×ÖÐ͵ÄÃû³Æ£¬
×ÖÐÍÃû³ÆºÍµµ°¸Ãû³Æ²¢²»Ïà¹Ø¡£)
Bitmap Distribution Format£¨Î»ÔªÓ³Ïñ·Ö²¼¸ñʽ£©-- BDF
ΪÁ˿˷þ×ÖÐÍÁ÷´«µÄÎÊÌ⣬£ØÐ»á¶Ô×ÖÐͽ»»»Ö¸¶¨ÁËÒ»ÖÖ¸ñʽ£¬¾ÍÊÇBitmap
Distribution Format (BDF) £¬BDF ÒÔASCII µÄ·½Ê½±íʾ×ÖÔªµÄλԪӳÏñ£¬²¢
ÇÒÖ»°üº¬¿ÉÓ¡³öµÄ×ÖÔª£¬ËùÒÔËü¾ßÓÐÍêÕûµÄ¿ÉЯÐÔ(portable)¡£
ÔÚ¡±Bitmap Distribution Format¡±ÎļþÖаüº¬Á˶ÔBDF ÍêÕûµÄÃèÊö¡£
´ÓBDF ת»»³ÉSNF - bdftosnf
ΪÁËÈÃBDF Äܹ»ÓÐÓã¬Äã±ØÐèÄܽ«BDF ×ÖÐ͵µ×ª»»³ÉSNF µµ£¬Ä¿Ç°£ØÐ»á
·ÅÆúÈÃÕâ¸öÐèÇó³ÉΪ£ØµÄ³ÉÆ·¡£
ÔÚMIT °æ£¬Äã¿ÉÒÔÓÃbdftosnfÀ´Íê³Éת»»¡£
ÓÉÆäËüµÄ¸ñʽת»»
Ðí¶àµÄ»æÍ¼»úÆ÷ÓµÓÐËüÃÇÖÆÔìÉÌ×Ô¼º·¢Õ¹µÄ×ÖÐÍ£¬Í¨³£ÌرðÊʺÏËüÃǵÄÏÔ
ʾÆ÷¡£Èç¹ûÕâЩ×ÖÐÍÄÜÔÚ£ØÊ¹ÓÃÄÇÊÇÔÙºÃÒ²²»¹ýÁË£¬µ«ÊÇÒòΪ¸ñʽµÄÎÊÌ⣬Äã
²»ÄÜʹÓÃËüÃÇ¡£
MIT core°æ²¢²»¹ÜÕâ¸öÎÊÌ⣬µ«ÊÇcore°æÔòÓÐÐí¶àµÄ¹¤¾ß³Ìʽ½«ÖÆÔìÉÌÌØ
ÖÆµÄ×ÖÐÍת»»³ÉBDF ¸ñʽ£¬´ÓBDF ÄãÓÖ¿ÉÒÔÓÃbdftosnfת»»³ÉÄã×Ô¼ºµÄSNF £¬
±¾ÕÂÉÔááÎÒÃÇ»áÓÐÒ»¸öÕâÑùµÄ·¶Àý¡£
13.4.2 ×ÖÐÍ´¢´æÔںδ¦ -- ×ÖÐÍĿ¼
×ÖÐͱ»´¢´æÔÚserverÉÏijһ¸ö»ò¶à¸ö×ÖÐÍĿ¼(font directory)ÖУ¬×ÖÐÍ
Ŀ¼ÓÉÈý¸ö²¿·Ý×é³É£º
1. Ò»¸öÆÕͨµÄĿ¼£¬Îª°üº¬Öø×ÖÐ͵ÄSNF µµ°¸Ö®ËùÔÚ¡£
2. Ò»¸ö±»£ØÊ¹Ó㬽«SNF µµ°¸Ãû³Æ¶ÔÓ¦µ½×ÖÐÍÃû³ÆµÄ×ÊÁϿ⡣
3. Ò»¸ö¿ÉÑ¡ÔñÐԵıðÃûµµ(aliase file) £¬¿ÉÒÔÈÃÄãÓÃÒ»¸öÒÔÉϵÄÃû³Æ
²Î¿¼µ½Í¬Ò»×ÖÐÍ£¨²»ÂÛÄãʹÓÃÁ˶àÉÙ¸öĿ¼£¬ÄãÖ»ÐèÒªÒ»¸ö±ðÃûµµ£©¡£
ά»¤×ÖÐÍĿ¼ -- mkfontdir
mkfontdir É趨еÄ×ÖÐÍĿ¼²¢ÇÒ¿ÉÒÔÐÞ¸ÄËü£º
1. ÔÚµµ°¸Ä¿Â¼ÖÐËѼ¯ÁËËùÓÐÄãҪʹÓÃ×ÖÐ͵ĵµ°¸£¬µµ°¸¿ÉÒÔÊÇBDF µµ£¨Í¨
³£µµÃû½áβΪ.bdf£©£¬SNF µµ°¸(.snf)»ò±»Ñ¹ËõµÄSNF µµ(.snf.Z)£¬mkfontdir
»á×Ô¶¯½«·ÇSNF µµ°¸×ª»»ÎªSNF µµ°¸¡££¨±»Ñ¹ËõµÄµµ°¸ÊDZ»BSD ѹËõ³ÌʽִÐÐ
¹ýÓÃÒÔ½ÚÊ¡µµ°¸¿Õ¼ä¡££©
2. Èç¹ûÄãҪʹÓñðÃû£¬ÐèÒªÔÚ×ÖÐÍĿ¼Öн¨Á¢£¨»ò±à¼£©Ò»¸öÃûΪ
fonts.aliaseµÄµµ°¸¡£Óйش˵µ°¸¸ñʽµÄϸ½Ú²¿·ÝÔÚÖ¸ÄÏÒ³ÖÐÓÐ˵Ã÷£¬¼òµ¥µØ
˵£¬ËüµÄ¸ñʽΪÿÐÐÒÔ¿Õ°×¼ä¸ô³öÁ½¸öÀ¸Î»£¬µÚÒ»À¸ÊDZðÃûµÄÃû³Æ£¬µÚ¶þÀ¸Ôò
ÊÇ×ÖÐ͵ÄÃû³Æ£¨¿É°üº¬Í¨ÓÃ×ÖÔª£©£¬ÀýÈ磺
tbi12 *-times-bold-i*-120*
×¢Ò⣺Äã¶Ô×ÖÐͶ¨ÒåµÄµÚÒ»¸ö±ðÃû½«Ôì³É¸Ã×ÖÐÍÕæÕýµÄÃû³ÆÎÞ·¨Ê¹Óã¬ÒÔÉÏÀý
¶øÑÔ£¬ÄãÖ»ÄÜÒÔtbi12 À´´æÈ¡×ÖÐÍ£¬ÕâÖÖÇéÐÎÒ²ÐíÏÂÒ»°æ»á¸Ä½ø£¬µ«Ä¿
ǰÄã¿ÉÒÔÔÚµÚ¶þÐн«µÚÒ»Ðз´¹ýÀ´¼´¿É£¨µ«²»¿ÉʹÓÃͨÓÃ×ÖÔª£©¡£
tbi12 *-times-bold-i*-120*
-adobe-times-bold-i-normal--12-120-75-755-p-68-iso8859-1 tbi12
3. Ö´ÐÐmkfontdir £¬Ðè°Ñµµ°¸Ãû³Æµ±³ÉÒýÊýÊäÈ룬ÒÔÄãʹÓÃÔ¤ÉèµÄ£Ø½¨¹¹
ΪÀý £º
mkfontdir /usr/lib/x11/fonts/misc\
/usr/lib/x11/fonts/75dpi\
/usr/lib/x11/fonts/100dpi
£¨Èç¹ûµµ°¸Ä¿Â¼ÖÐûÓаüº¬×ÖÐÍ×ÊÁϿ⣬mkfontdir »áºöÂÔËü¡££©
×¢Ò⣺½¨Á¢Ò»¸ö×ÖÐÍĿ¼²¢²»»áµ¼ÖÂserver¡±×¢Ò⡱Ëü£¬Äã±ØÐèÖØÐÂÆô¶¯server
»òÖØÉè×ÖÐÍËÑѰ·¾¶(search path) £¨ÏÂÃæÃèÊö£©£º
×ÖÐÍËÑѰ·¾¶ -- xset
Äã¿ÉÒÔʹÓÃÈκÎÊýÄ¿µÄ×ÖÐÍĿ¼£¬µ«Èç¹ûËüÃÇÓÐÈκκÍÔ¤É轨¹¹²»Í¬µÄµØ
·½£¬ÄãÐèÃ÷È·µÄ¸æËßserver£¬ÕâЩ×ÖÐÍĿ¼µÄÁÐ±í³ÆÖ®Îª×ÖÐÍËÑѰ·¾¶(font
search path)»ò×ÖÐÍ·¾¶(font path) £¬Äã¿ÉÒÔÉ趨Õâ¸öÒ»Á¬´®ÒÔ¶ºµãÎªÇø¸ô
µÄµµ°¸Ä¿Â¼¡£
²é¿´ÄãĿǰµÄ×ÖÐÍ·¾¶£ºÊ¹ÓÃÃüÁîxset q£¬Èç´Ë»áÓ¡³öÒ»´ó¶Ñ×ÊѶ£¬ÆäÖÐÓÐ
Ò»Ðаüº¬ÖøÄãµÄ×ÖÐÍ·¾¶ÀàËÆÏÂÃæ£º
Font Path : /usr/lib/x11/fonts/misc/,(cond.)
/usr/lib/x11/fonts/75dpi/,/usr/lib/x11/fonts/100dpi/
É趨²»Í¬µÄ×ÖÐÍ·¾¶£ºÊ¹ÓÃÃüÁîxset fp new-path£¬ÀýÈ磬Èç¹ûÄãÓдóÁ¿
µÄ±¾µØ×ÖÐÍÇÒ²»ÓûʹÓöàÊýµÄ±ê×¼×ÖÐÍ£º
xset fp /usr/local/xfonts, /usr/lib/x11/fonts/75dpi
×¢Ò⣺fp֮ǰ²¢ÎÞÒ»¶ÌºáÏß(-) £¬ÊÇfp¶ø·Ç -fp£¨-fp µÄÒâÒ岻ͬ£¬¼ûÏÂÊö£©¡£
µ±ÄãÏëÖØÐÂÉ趨server¶Ô×ÖÐÍ·¾¶µÄÔ¤Éèֵʱ£¬Ê¹ÓÃÃüÁ
xset fp default
¸æËßserverÖØÐ¶ÁÈë×ÖÐ͵ÄĿ¼£¬Ê¹ÓÃÃüÁ
xset fp rehash
Ëü¸æËßserverÄã¿ÉÄÜÒѾ¸Ä±äÁË×ÖÐÍĿ¼µÄÄÚÈݶøºÍËü±ØÐëÖØ¶Á×ÖÐÍ×ÊÁÏ
¿â£¬ÏÖÔÚмÓÈëµÄ×ÖÐÍ¿ÉÒÔ¿ªÊ¼´æÈ¡ÁË¡£
ÔÚÏÖ´æµÄ·¾¶¼ÓÈëеÄ×ÖÐÍĿ¼£¬Ê¹ÓÃÃüÁ
xset +fp dirlist
¼ÓÈëÒ»ÁÐÓɶººÅ·Ö¸ôµÄĿ¼ÁÐ(dirlist) ÔÚÏÖ´æÂ·¾¶Ö®×󣬶ø
xset fp+ dirlist
Ôò½«Ä¿Â¼Áмӵ½Â·¾¶Ö®ÓÒ¡£
½«×ÖÐÍĿ¼×Ô·¾¶ÒÆÈ¥£ºÏÂÁ½¸öÃüÁîÁÐ
xset -fp dirlist
xset fp- dirlist
¾ù¿É½«ÔÚdirlist ÖеÄĿ¼×ÔÏÖÓз¾¶ÒÆÈ¥¡£
×¢Ò⣺×ÖÐÍ·¾¶ÓÉserverËùÕÆÎÕ£¬¶ø±»ËùÓÐʹÓøÃserverµÄclientËùÓ¦Óá£
×ÖÐÍ·¾¶µÄ´ÎÐòÊÇÖØÒªµÄ£¬ÎÒÃÇÔø¾Ìá¹ý×ÖÐÍÉ趨¿ÉÒÔ¶ÔÓ¦ÖÁÒ»»ò¶à¸ö×ÖÐÍ£¬
server»á×ÔÐÐÑ¡Ôñ£¬µ«Èç¹û¶ÔÓ¦µÄ×ÖÐÍÊÇÔÚ²»Í¬µÄĿ¼ÖУ¬Ôòserver»áÑ¡ÔñÔÚ
·¾¶ÖнÏÔç³öÏÖÕß¡£
Äã¿ÉÒÔÀûÓÃÕâ¸öÔÔòÀ´°²ÅÅ×îÊʺÏÄãµÄÏÔʾÆ÷½âÎö¶ÈµÄ×ÖÐÍ¡£¼ÙÉèÄãµÄÏÔ
ʾÆ÷½âÎö¶ÈΪ100dpi£¬Ôò½«100dpi×ÖÐÍÉèÔÚ75dpi ֮ǰ£¬ÀýÈ磺
xset fp /usr/lib/x11/fonts/100dpi/,\
/usr/lib/x11/fonts/75dpi/
Èç¹ûÄãÖ¸¶¨×ÖÐÍΪ£º
* -times-bold-r-*-120-*
ËäÈ»×ÖÐÍÓÐ75dpi ºÍ100dpiÁ½ÖÖ°æ±¾£¬µ«Äã»áÓõ½100dpiµÄ×ÖÐÍ£¬ÕâÕýÊÇÄãËù
ÐèÒªµÄ¡£
13.5 ·¶Àý£ºÔö¼ÓÐÂ×ÖÐÍÖÁÄãµÄserver
ÏÖÔÚÎÒÃǽ«ËµÃ÷ÈçºÎÔö¼ÓÒ»¸öеÄ×ÖÐ͵½ÄãµÄserverµÄÍêÕû·¶Àý£¬ÎªÁË
ÕæÊµÆð¼û£¬ÎÒÃÇÒÔSunËùÌṩµÄ×ÖÐÍΪÀý£¬½«Ëüת»»ÖÁBDF £¬È»áá×°Éè(install)
Ëü£¬×ÖÐÍ¿ªÊ¼Ê±ÔÚ£º
/usr/lib/fonts/fixedwidthfonts/screen.r.7
Óû½«Sun µÄ×ÖÐÍת»»³ÉBDF £¬ÎÒÃÇÐèʹÓÃcontrib °æµÄÈíÌå³Ìʽvtobdf£¨
ÆäËüϵͳҲÓÐÀàËÆµÄ¹¤¾ß£©¡£vtobdfÓÐÁ½¸öÒýÊý£¬·Ö±ðÊÇÊäÈëµµµµÃûºÍÓû½¨Á¢
Ö®BDF µµµµÃû£¬ÎÒÃÇ¿ÉÒÔÊÂÏÈ×Ôcontrib ´Å´øÈ¡µÃ´Ë³Ìʽ£¬±àÒëËü£¬¶øáá¼ÓÈë
ÎÒÃÇ¿ÉÖ´ÐеÄĿ¼ÖУ¬ÎÒÃǾͿÉÒÔʹÓÃËüÁË£¬ÎÒÃǽ«»ò¶à»òÉÙÒÀ¾Ý£ØµÄ±ê×¼À´
ÃüÃûÕâ¸öеÄ×ÖÐÍ£¬ÎÒÃÇϲ»¶°ÑÊä³öµµµÄµµÎ²ÃûÓÃ.bdf£¬µ«ÓÉì¶vtobdf»áÔÚ×Ö
ÐÍÃû³Æáá×Ô¶¯²úÉú.bdf£¬ËùÒÔ¿ÉÒÔÊ¡ÂÔËü£¬µ«ÔÚÉÔááÖ®ÖØ¶¨Ãû³ÆÔò²»¿ÉÊ¡ÂÔ¡£
venus% cd/tmp
venus% vtobdf /usr/lib/fonts/fixedwidthfonts/screen.r.7\
-sun-screen--r-normal---70-75-75-m---
ÏÖÔÚÖØÐÂÃüÃûµµ°¸£¬²¢½«Æä°áÈë×ÖÐÍĿ¼£º
venus% mv- -sun-screen--r-normal---70-75-75-m---\
/usr/lib/x11/fonts/misc/-sun-screen--r-normal---70-75-75-m---.bdf
×îáᣬִÐÐmkfontdir ºÍ¸æËßserverÖØÐ¶ÁÈë×ÖÐÍĿ¼ÒÔ±ãÄÜʹÓôË×ÖÐÍ£º
venus% mkfontdir
venus% xset fp rehash
¼ì²éһϴË×ÖÐÍÊÇ·ñÕæµÄ¿ÉÓãº
venus% xlsfonts "*-sun_screen*"\
-sun-screen--r-normal---70-75-75-m---
×¢Ò⣺ÄãµÄ×ÖÐÍ¿ÉÄÜ¿ÉÒÔÈ¡´úÆäËüµÄÔ¤Éè×ÖÐÍ£¬µ«ÕâЩ×ÖÐ͵µ°¸¿ÉÄÜÒòÓб£»¤
¶øÎÞ·¨¸ü¸Ä£¬±ØÐëÎÊÒ»ÏÂÄãµÄϵͳ¹ÜÀíÕß¡£
13.6 ʹÓãصÄÉ«²Ê
ÎÒÃÇÒѾÓùýһЩɫ²Ê£¬µ«²¢Î´Ï¸ÊöËüÃÇ£¬ÔÒòÊÇ£ØÔÊÐíÄãÓÃÈÕ³£³£ÓõÄ
²ÊÉ«Ãû£¬ÔÚ±¾½ÚÎÒÃÇÃèÊöһЩÆäËüÖ¸¶¨ÑÕÉ«µÄ·½·¨£¬½âÊÍÃüÁî½á¹¹ÈçºÎ¹¤×÷ºÍ
ÄãÈçºÎÉ趨һЩÄã×Ô¼ºÓµÓеÄÉ«²ÊÃû³Æ¡£
13.6.1 RGB É«²ÊÉ趨
»»Ò»ÖÖÖ¸¶¨É«²ÊµÄ·½Ê½£¬Äã¿ÉÒÔÓÃRGB (Red (ºì)¡¢Green (ÂÌ)¡¢Blue (À¶))
ÈýÔªËØÀ´Ö¸¶¨£¬É趨֮ÐÎʽΪ£º
#<r><g><b>
±ØÐëºÏºõÒÔϵÄÔÔò£º
£®É趨±ØÐèÒÔ¾®×ÖºÅ(#) ¿ªÍ·¡£
£®ÔªËØÐèÒÀÕպ졢ÂÌ¡¢À¶µÄ´ÎÐòÒÀÐòÉ趨¡£
£®ÈýÔªËØ¾ù±ØÐëÖ¸¶¨¡£
£®Ã¿Ò»¸öÔªËØÎªÊ®Áù½øÎ»£¬¹²Õ¼Ò»µ½ËĸöλÊý£¬Òò´Ëffff´ú±íÉ«²ÊµÄ×î´ó
Ç¿¶È£¬0000´ú±íûÓиÃÉ«²Ê£¬ÀýÈ磺
#0000ffff0000
ÊÇ×îÁÁµÄÂÌÉ«£¬ºìÉ«ºÍÀ¶É«Ò»µã¶¼Ã»ÓУ¬Í¬ÑùµÄ£º
#000000000000 ºÚÉ«£¨Ê²÷áÉ«²Ê¶¼Ã»ÓУ©
#ffff0000ffff ×ÏÉ«£¨È«²¿µÄºìÉ«¼ÓÀ¶É«£©
#ffffffffffff °×É«£¨È«²¿µÄÉ«²Ê£©
×¢Òâ#rgbºÍ#rrrgggbbb´ú±íµÄÉ«²ÊÇ¿¶ÈÊÇÏàͬµÄ£¬µ«ááÕß½ÏÁÁһЩ¡£
£®Ã¿Ò»¸öÔªËØ¿ÉÓÉÒ»µ½ËĸöλÊý´ú±í£¬µ«Ã¿¸öÔªËØµÄλÊýÔòÏàͬ£¨ÀýÈçÄã
²»¿ÉÒÔÓÃ#rrbbbbgg £©¡£
Äã¿ÉÒÔÔÚÉ趨ɫ²Êʱֱ½ÓʹÓÃÉ«²ÊÃû³Æ£¬ÀýÈ磺
xclock -fg #3d7585 -background pink
É«²ÊÉ趨µÄÐÎʽÍùÍùºÍÄãµÄÏÔʾÆ÷·Ç³£Ïà¹Ø£¬Í¨³£Ã»ÓÐʲ÷á¿ÉЯÐÔ¡£
13.6.2 £ØÉ«²Ê×ÊÁÏ¿â
ΪÁ˿˷þ#rgbÉ«²ÊÉ趨²»¿ÉЯµÄȱµã£¬¶øÇÒʹϵͳ¸üÒ×ì¶Ê¹Ó㬣ØÊ¹ÓÃÒ»
¸ö´¢´æÉ«²ÊÃû³Æ¼°ÆäÏà¹ØÖ®rgb ÖµµÄ×ÊÁϿ⡣
³ý·ÇÄãµÄϵͳÔÚ×°ÉèÖ®áá×÷ÁËÃ÷ÏԵظı䣬Ӧ¸Ã»áÓÐÒ»¸ö/usr/lib/x11/rgb.txt
µÄÎÄ×ÖµµËµÃ÷×ÊÁÏ¿âµÄÄÚÈÝ¡£Õâ¸öµµµÄǰÊýÐÐÀàËÆì¶£º
112 219 147 aquamarine £¨ÂÌÓñÉ«¡¢±ÌÂÌÉ«£©
50 204 153 medium aquamarine £¨ÖжȱÌÂÌÉ«£©
50 204 153 Medium Aquamarine £¨ÖжȱÌÂÌÉ«£©
0 0 0 black £¨ºÚÉ«£©
0 0 255 blue £¨À¶É«£©
95 159 159 cadet blue £¨Ñ§ÉúÀ¶£©
ÿһÐÐǰÈý¸öÊý×Ö±íʾrgb µÄÔªËØÖµ£¬µ«ÔÚ´ËÊýÖµÊÇ10½øÎ»µÄ£¬ÇÒÖ»´Ó0
µ½255 £¬255 ´ú±íÉ«²Ê×î´óÇ¿¶È£¬µÚËĸö²¿·ÝΪɫ²ÊÃû³Æ£¬ÔÊÐíÃû³ÆÖмäÓпÕ
¸ñ¡£
Äã¿ÉÒÔÓóÌʽ$TOP/rgb/rgb½«´ËÎÄ×Öµµ×ª»»ÎªÄÚ²¿µÄÐÎʽ£¬£¨µ±ÄãµÄ£ØÏµ
ͳ½¨Á¢Ê±£¬Ëü²¢²»»á±»×°É裩¡£ËùÒÔ£¬ÒªÔÚÄãµÄ×ÊÁÏ¿âÖмÓÈëÒ»¸öеÄÉ«²Ê£¬
ÏÈÓÃÎÄ×Ö±à¼Æ÷½«É«²ÊÊäÈërgb.txt µµ£¬È»á᣺
venus% cd usr/lib/x11
venus% $TOP/rgb/rgb < rgb.txt
ÊÂʵÉÏ£¬rgb ²¢²»ÐèҪÿ´Î¾ùÖØ½¨ÄÚ²¿×ÊÁϿ⣬ֻÐè¼ÓÈëÐÂÔö£¨»òÐ޸쩵ÄÏî
Ä¿¼´¿É£¬ËùÒÔÄã¿ÉÒÔÓñê×¼ÊäÈëÀ´ÊäÈëÉ«²Ê£º
venus% $TOP/rgb/rgb
255 50 50 mypink
¡
ÒòΪûÓÐÈκαê×¼µÄ¹¤¾ß³Ìʽ¿ÉÒÔ²éѯÄÚ²¿×ÊÁÏ¿âµÄÄÚÈÝ£¬Òò´ËÉÏÃæµÄ×÷·¨»á
Ôì³Érgb.txt ºÍÄÚ²¿µÄ×ÊÁϿⲻһÖ£¬ËùÒÔ»¹ÊÇÒÔÐÞ¸Ärgb.txt µÄ·½Ê½Îª¼Ñ¡£
13.7 ½áÂÛ
±¾ÕÂÄãÒѾ¿´µ½ÈçºÎÃüÃûºÍ´¢´æ×ÖÐÍ£¬ÄãÈçºÎÕÒµ½¿ÉÓõÄ×ÖÐͼ°×ÖÐ͵ÄÄÚ
ÈÝ£¬ÔÚ£ØÓ¦ÓóÌʽÖÐÈçºÎʹÓÃ×ÖÐÍ£¬ºÍÈçºÎÔÚÄãµÄϵͳÖмÓÈëеÄ×ÖÐÍ¡£
×îááÒ»½ÚÔòÃèÊöÁˣصÄÉ«²ÊÃüÃûÔÔò£¬É«²Ê×ÊÁÏ¿âºÍÈçºÎ¼ÓÈëÄã×Ô¼ºµÄÉ«
²Ê¡£
ÕâÀïËùÃèÊöµÄ¹«ÓóÌʽֻ°üº¬core°æ£¬contrib °æ°üº¬¸ü¶àµÄÈíÌ壬ÀýÈç
ÓÐÒ»¸ö½Ð×öxcolors µÄ³Ìʽ£¬Ëü¿ÉÒÔ½¨Á¢Ò»¸öÊÓ´°£¬²¢ÔÚÆäÖÐÏÔʾÔÚÄãϵͳÉÏ
ÒÑÃüÃûµÄÉ«²Ê¡£
¶àÖÖµÄ×ÖÐͺÍÉ«²ÊÔÚÄãµÄÓ©Ä»ÉϳöÏÖÊÇÒ»ÖÖ³å»÷£¬½ÓÏÂÀ´Äã»á¿´µ½¸ü¶àµÄ
ÊÓ´°ÏµÍ³µÄ¹¦ÄÜ£¬²¢¡õÊÔµ÷ÕûʹÆäÊʺÏÄ㹤×÷µÄϰ¹ß¼°Æ·Î¶¡£
ÏÂÒ»ÕÂÎÒÃǽ«¼ÌÐø¶¨ÖÆÕâ¸öϵͳ£¬¸æËßÄãÈçºÎÀûÓãصÄλԪӳÏñ¹«ÓóÌʽ
À´½¨Á¢¡¢±à¼ºÍʹÓÃÓ°Ïñ¡£
=====
µÚ£±£´Õ ¶¨ÒåºÍʹÓÃλԪӳÏñ
Ò»¸öλԪӳÏñÊÇÒ»¸öСͼ£¬ËµµÃ¸üÇå³þÒ»µã£¬Ò»¸öͼµÄÏÔÏÖÊÇÓÉÏñËØ×é³É£¬
¶øÏñËØÓÖÊÇÓÉÒ»¸öλԪÀ´¶ÔÓ¦£¬µ±Î»ÔªÎª¡±1 ¡±Ê±£¬ÏñËØÎª¡±ºÚÉ«¡±£¬¶øµ±Î»
ԪΪ¡±0 ¡±Ê±£¬ÏñËØÎª¡±°×É«¡±¡££ØÓÐÐí¶àµÄ¹«ÓóÌʽÀ´¹ÜÀíλԪӳÏñ£¬Äã¿É
ÒÔÓò»Í¬µÄ·½·¨À´½¨Á¢¡¢±à¼ºÍ´¢´æËüÃÇ¡£ÓÐһЩʹÓÃÕß³ÌʽÔÊÐíÄãÖ±½ÓʹÓÃ
ËüÃÇ¡££¨ÆäËü´ó²¿·ÝµÄ³ÌʽÔòÒÔÄÚ²¿µÄÐÎʽʹÓÃËüÃÇ£¬ÕâЩ¹«ÓóÌʽ´ó¶¼·ÅÔÚ
£Ø³Ìʽ¿âÖУ¬Ê¹µÃʹÓÃÕß׫д³ÌʽʱºÜÈÝÒ×±ã¿É¼ÓÒÔÔËÓᣣ©
±¾Õ¿ªÊ¼ÏÈÃèÊöλԪӳÏñµÄ¹¤¾ß£¬½ÓÏÂÀ´Êµ¼ÊʹÓÃxsetroot³Ìʽ£¬Ëü¿ÉÒÔ
ÈÃÄã¶¨ÖÆÄãµÄÓ©Ä»£¬É趨һ¸öλԪӳÏñµÄ±³¾°£¬Ñ¡ÔñÄãµÄÉ«²ÊºÍÖ¸¶¨Ò»¸öλԪ
Ó³Ïñµ±×÷ÓαêÀ´Ê¹Óá£
14.1 ϵͳλԪӳÏñ³Ìʽ¹Ý
λԪӳÏñµµ°¸µÄ³Ìʽ¹Ý±»µ±×÷ϵͳµÄÒ»²¿·ÝÌṩ¸øÄ㣬ԤÉè´¢´æÔÚÕâ¸öÄ¿
¼£º
/usr/include/x11/bitmaps
µ«ÔÚÄãµÄ¹¤×÷Õ¾ÉÏ»òÐí²»Í¬£¬ÎÊÒ»ÏÂÄãµÄϵͳµÄ×°ÖÃÕߣ¬ÎÒÃǽ«ÒÔ´ËĿ¼Ϊ׼£¬
²¢ÓÃÆäÖеÄһЩµµ°¸×÷Ϊ±¾Õµķ¶Àý¡£
14.2 ½»Ì¸Ê½µØ±à¼Ò»¸öλԪӳÏñ -- bitmap
bitmap³ÌʽÊÇÒ»¸öÈÃÄãÒÔ½»Ì¸Ê½½¨Á¢»ò±à¼Î»ÔªÓ³ÏñµÄ¹¤¾ß£¬Ëü½«Î»ÔªÓ³
ÏñÒÔ·½¸ñ×ÓÀ´±íʾ£¬Ã¿Ò»¸ö¸ñ×Ó´ú±íÒ»¸öÏñËØ£¬Äã¿ÉÒÔÓû¬ÊóÉ趨»òÇå³ýÏñËØ¡£
14.2.1 Æô¶¯bitmap
͸¹ýbitmapÄã¿ÉÒÔ±à¼Ò»¸ö°üº¬ÓÐÒ»¸öλԪӳÏñµÄµµ°¸£¬»ò´ÓÍ·¿ªÊ¼½¨Á¢
Ò»¸öλԪӳÏñ²¢½«Ëü´¢´æÎªµµ°¸¡£²»ÂÛÊǺÎÕߣ¬µ±ÄãÆô¶¯bitmapʱ£¬ÄãÐèÒª¸ø
Ò»¸öµµ°¸Ãû³Æ£¬²»ÂÛÊÇÏÖ´æµÄµµ°¸»òÊÇн¨µÄµµ°¸¡£
µ±½¨Á¢Ò»¸öеÄλԪӳÏñʱ£¬Äã¿ÉÒÔÑ¡ÔñÐÔµØÖ¸¶¨´óС£¨¿í¶ÈX ³¤¶È¸öÏñ
ËØ£©£¬Èç¹ûÄãδָ¶¨£¬Ô¤Éè´óСΪ16X16 ¡£¾ÙÀýÀ´Ëµ£¬¼ÙÈçÎÒÃÇÏëÒª½¨Á¢Ò»¸ö
±È½Ï´óÒ»µãµÄÊ®×ÖÐÍÊýλӳÏñ£¬ÎÒÃÇ¿ÉÒÔÓÃÏÂÃæµÄÃüÁîÁУº
bitmap big-cross 40X50 &
14.2.2 ʹÓÃbitmap
¼ÙÈçÎÒÃÇÒª±à¼Ò»¸öÏÖ´æµÄµµ°¸£¬¿ÉÒÔÓÃÏÂÃæµÄÃüÁîÁÐÆô¶¯³Ìʽ£º
bitmap /usr/include/x11/bitmaps/cntr-ptr
ÔòÒ»¸öÏñͼ14-1µÄÊÓ´°³öÏÖÔÚÓ©Ä»ÉÏ£¬ÓÒϽÇÒÔʵ¼Ê´óСÏÔʾ³öĿǰλԪӳÏñ
µÄ״̬£¬ÁíÒ»¸öÔòΪ·´Ïà(reverse) µÄλԪӳÏñ£¬ÆäËüÔÚÓұߵġ±ºÐ¡±Äã¿ÉÒÔ
ÓÃÅö´¥»¬Êó°´Å¥µÄ·½Ê½À´²Ù×÷ËüÃÇ¡£
ÓÃÈýÅ¥»¬Êó±à¼Í¼ÐÎ×î¼òµ¥µÄ·½·¨£º
É趨ÏñËØ£ºÔÚÒ»¸öÏñËØÉÏÅö´¥»¬Êó×ó°´Å¥£¬»òÕßÊǰ´×¡×ó°´Å¥²¢ÍÏ×§Ëü£¬
ÿһ¸ö¾¹ýµÄÏñËØ·½¸ñ¾ù»á±»É趨£¬Ö±µ½ËÉ¿ª°´Å¥ÎªÖ¹¡£
Çå³ýÏñËØ£ººÍÉÏÊöÏàͬµÄ·½·¨£¬µ«ÊÇÒÔ»¬ÊóÓÒ°´Å¥´úÌæ¡£
¡¡¡¡·´×ª(invert)ÏñËØ£ºÔÚÒ»¸öÏñËØÉÏÅö´¥»¬ÊóÖа´Å¥£¨Ò²¾ÍÊǺڵÄÏñËØ±»Çå
³ý¶ø°×µÄÏñËØ±»É趨£©£¬µ±Ä㰴סÖа´Å¥²¢ÍÏ×§£¬Ëù¾¹ýµÄÏñ
ËØ¸ñ¾ù»á·´×ª¡£
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p160 fig 14.1 ©¦
©¦ ©¦
©¦ ͼ14-1 λԪӳÏñ±à¼Æ÷ ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
bitmap»¹ÓÐÆäËüµÄÃæÃ²£ºÈç¹ûÄã¹Û²ì½Ó½ü¼ýÍ·µÄÉ϶˲¿·Ý£¨¼ûͼ14-2µÄ
·Å´óͼ£©£¬Äã¿ÉÒÔÔÚÆäÖеÄÒ»¸ö·½¸ñÖп´µ½ÓÐÒ»¸öСÁâÐΣ¬Õâ´ú±íÁËÈȵã(hotspot)
£¬µ±bitmap±»ÓÃÀ´½¨ÔìÒ»¸öÓαêʱ»áÓ¦Óõ½£ºÈȵãÊÇÓαêÕæÕý¶¯×÷µÄµã¡£Ö¸Ïò
Ð͵ÄÓα꣬Èȵãͨ³£ÔÚ¶¥¶Ë£¬¶øÔ²Ðλò·½ÐεÄÓα꣬ÈȵãÔòÔÚÖÐÐÄ¡££¨Äã¿ÉÒÔ
ÓÃSet Hot SpotºÍClear Hot SpotÁ½¸öÃüÁîÀ´¸ü¸ÄÈȵãµÄλÖûòÏûÈ¥Ëü£©
µ±Äã½áÊøÁËÄãµÄ¸ü¸Ä¶¯×÷£¬¿ÉÒÔÓÃÅö´¥Write Output½«Î»ÔªÓ³Ïñ´¢´æÖÁµµ
°¸£¬µ«²»»áÀ뿪bitmap³Ìʽ¡£
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p161 fig 14.2 ©¦
©¦ ©¦
©¦ ͼ14-2 Ò»¸öÓαêµÄ¡±Èȵ㡱 ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
À뿪³Ìʽ£¬Åö´¥Quit£¬Èç¹ûÄã±à¼ÁËλԪӳÏñÈ´ÊÔͼÔÚδ´¢´æÇ°À뿪³Ìʽ£¬
Ä㽫»áµÃµ½ÌáʾÒÔÈ·¶¨ÄãÊÇ·ñÕæÒªÈç´Ë×ö¡£
14.2.3 »ÐÎ×´(shapes)
bitmapÓÐÊý¸ö¹¦ÄÜʹµÃ»Í¼¸üÈÝÒ×£º
»Ò»ÌõÏߣºÅö´¥Line£¬Óαê»á±ä³ÉÒ»¸ö´óºÚµã£¬ÔÚËùÓû»µÄÏßµÄÒ»¶ËÅö´¥
һϰ´Å¥£¬¶øááÔÚÁíÒ»¶ËÒ²Åö´¥Ò»Ï£¬bitmap»á»³öÕâÌõÏß¡£
»Ò»¸öÖпյÄÔ²£ºÅö´¥Circle£¬Í¬ÑùµØ£¬Óαê±ä³ÉÒ»¸ö´óºÚµã£¬ÔÚÄãËùÓû
»Ô²µÄÔ²ÐÄÅö´¥Ò»Ï£¬¶øááÔÚËùÓû»Ô²Ö®Ô²ÖÜÉϵÄÈÎÒ»µãÅö´¥
һϣ¬bitmap½«»³öÕâ¸öÔ²µÄÔ²ÖÜ¡£
»Ò»¸öÌîÂúµÄÔ²£ºÅö´¥Filled Circle £¬ÆäâÅͬÉÏ¡£
14.2.4 ÔÚ³¤·½ÐεÄÇøÓòÄÚ¹¤×÷
ÃüÁîClear Area¡¢Set AreaºÍInvert Area ±ØÐëÔÚ³¤·½ÐÎÇøÓòϲÙ×÷£¬³¤
·½ÐÎÇøÓòµÄ¾ö¶¨·½Ê½ÊÇÄãÔÚËüµÄ×óÉϽÇÒÔ°´×¡»¬ÊóÈÎÒâ°´Å¥µÄ·½Ê½Ö¸¶¨£¬È»áá
ÍÏ×§µ½ÓÒϽǣ¬µ±ÄãÍÏקʱ£¬Ä¿Ç°±»Ö¸¶¨µÄÇøÓò»áÒÔ¸ßÁÁ¶ÈÏÔʾ¡£
Äã¿ÉÒÔ¿½±´¡¢Òƶ¯»òÖØµþ(overlay) Ò»¸öÇøÓò£¬ÄãÒÔÍÏ×§µÄ·½Ê½Ö¸¶¨Ôʼ
ÇøÓò£¬¶øááÔÚÄ¿±êÇøÓòÉϵÄ×óÉϽÇÅö´¥°´Å¥£¬¸÷ÖÖÃüÁîµÄ¶¯×÷ÈçÏ£º
¿½±´(Copy)£ºÄ¿±êÇøÓò»á±»Ïû³ý£¬¶øËùÓжÔÓ¦ì¶ÔÊ¼ÇøÓòΪºÚÏñËØµÄ
¾ù»á±»É趨¡£
ÒÆ¶¯(Move)£ºÔÊ¼ÇøÓòºÍÄ¿±êÇøÓò¾ù±»Çå³ý£¬Ä¿±êÇøÓò¶ÔÓ¦ì¶ÔÊ¼Çø
ÓòΪºÚÏñËØµÄ¾ù»á±»É趨¡£
ÖØµþ(Overlay) £ºÔÚÄ¿±êÇøÓòÖжÔÓ¦ì¶ÔÊ¼ÇøÓò±»É趨µÄÏñËØ¾ù»á±»
É趨£¬ÆäËüûÓиı䡣
14.2.5 Ò»¸öλԪӳÏñµÄµµ°¸¸ñʽ
Ò»¸öλԪӳÏñ»áÈçͬASCII ÎÄ×ÖÒ»Ñù´¢´æµ½µµ°¸ÖУ¬Æä¸ñʽÀàËÆC ÓïÑÔ³Ì
ʽƬ¶Î¡£
ÀýÈ磺µµ°¸ /usr/include/X11/bitmaps/cntr_ptr µÄÄÚÈÝ£º
#define cntr_ptr_width 16
#define cntr_ptr_height 16
#define cntr_ptr_x_hot 7
#define cntr_ptr_y_hot 1
static char cntr_ptr_bits[]=
0x00, 0x00, 0x80, 0x01, 0x80, 0x01,\
0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07,
0xe0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f,\
0x98, 0x19, 0x88, 0x11, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01,\
0x00, 0x00;
´øÓÐ_x_hotºÍ_y_hotµÄ±äÊý½öÔÚÈȵ㱻ָ¶¨áá²Å»á°üº¬½øÀ´¡£
¸ü¶àµÄϸ½Ú°üº¬ÔÚbitmap(1) µÄÖ¸ÄÏÒ³ÖУ¬²»¹ýÎÞÂÛÈçºÎ£¬ÄãÎãÐèÖ±½ÓÒÔ
´ËÖÖ¸ñʽ´¦ÀíλԪӳÏñ£¬ÈκÎÄãÏëÒª×öµÄʾùÓй¤¾ß³ÌʽÀ´´¦Àí¡£
14.3 ±à¼Î»ÔªÓ³ÏñÆäËüµÄ·½·¨
bitmap³Ìʽ¶Ôì¶Ò»¸öСµÄͼÐι¤×÷ÆðÀ´ËãÊÇÏ൱·½±ã£¬µ«ËüÓÐһЩȱµã£º
£®Ëü²»½ÓÊܽϼòµ¥¸ñʽµÄÊäÈëµµ£¬ÀýÈçÏñһЩÓÉɨÃèÏÖ´æÍ¼ÐÎËù²úÉúµÄµµ°¸¡£
£®Ëü±ØÐèÒÔ½»Ì¸Ê½Ö´ÐУ¬¶ÔһЩ³ÌÐòÐԵı༶¯×÷²¢²»·½±ã¡£
£®Äã¿ÉÄÜÏ£ÍûÓÃËü²úÉúһЩλԪӳÏñÀ´ÏÔʾ£¬µ«ËüÎÞ·¨ÔÚ·Ç£ØÏµÍ³ÉÏÖ´ÐС£
Òª¿Ë·þÉÏÊöµÄÎÊÌ⣬ÐèÒªÒÔ×ÖԪͼ(character picture) µÄÐÎʽÀ´½¨Á¢Î»
ÔªÓ³Ïñ£¬²¢ÌṩÕâ¸ö¸ñʽºÍbitmapµÄ¸ñʽÏ໥ת»»µÄ³Ìʽ¡£×ÖԪͼ¸ñʽÊǷdz£
Ã÷ÏԵģºÃ¿Ò»ÐеÄÏñËØÓÃÒ»ÐеÄ×ÖÔªÀ´±íʾ£¬ºÚµÄÏñËØÓÃÒ»¸öÖ¸¶¨µÄ×ÖÔª£¨Ô¤
ÉèΪ# £©¶ø°×µÄÏñËØÓÃÁíÒ»¸ö×ÖÔª£¨Ô¤ÉèΪ -£©±íʾ£¬ÒÔcntr_ptrΪÀý£¬×ÖÔª
ͼµÄ¸ñʽÈçͼ14-3
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p164 fig 14.3 ©¦
©¦ ©¦
©¦ ͼ14-3 ×ÖԪͼ¸ñʽµÄλԪӳÏñ ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
ÄãÄÜÒÔ±¾ÎÄ±à¼Æ÷»òÆäËüÈκÎϵͳÉÏÈÎºÎÆäËüºÏÊʵijÌʽ±à¼ÕâЩͼÐΣ¬
Ò²¿ÉÒÔÓÉɨÃèÆ÷(scanner) »òÆäËüÓ°ÏñÉ豸²úÉú¡£
14.3.1 ×ÖԪͼºÍ£ØÎ»ÔªÓ³Ïñ¼äµÄת»»
£ØÌṩÁËÁ½¸ö³Ìʽ×÷×ÖԪͼ¸ñʽºÍλԪӳÏñ¸ñʽ¼äµÄת»»£º
atobm : ת»»Ò»¸ö×ÖԪͼΪ±ê×¼µÄλԪӳÏñ¡£
bmtoa : ת»»Ò»¸ö±ê×¼µÄλԪӳÏñΪ×ÖԪͼ¡£
Á½¸ö³Ìʽ¾ùÔÊÐíÄãÖ¸¶¨ÒÔºÎ×ÖÔªÀ´´ú±íºÚºÍ°×ÏñËØ¡£
14.4 ¶¨ÖÆÄãµÄ¸ùÊÓ´° -- xsetroot
xsetroot ÈÃÄãÉ趨ÄãµÄ¸ùÊÓ´°µÄÌØá磬Äã¿ÉÒԸıäÊÓ´°±³¾°µÄÑÕÉ«ºÍͼÑù(
pattern) £¬ÒÔ¼°ÊÓ´°ËùʹÓõÄÓαꡣ
14.4.1 É趨һ¸ö±³¾°µÄλԪͼÑù
Äã¿ÉÒÔÖ¸¶¨ÈκÎλԪӳÏñÀ´µ±×÷ÄãÓ©Ä»µÄ±³¾°£¨Ö»ÒªËüÊǣصıê×¼¸ñʽ£©
£¬ ÔÚ xsetroot µÄÃüÁîÁÐÉÏ£¬-bitmap Ñ¡Ïî¸úËæÖøÎ»ÔªÓ³ÏñµÄµµ°¸Ãû³Æ¡£ÀýÈ磺
xsetroot -bitmap /usr/include/X11/bitmaps/mensetmanus
»á³öÏÖÒ»¸ö¾«Öµı³¾°£¨¼ûͼ14-4£©(À¶¡Óï Mens et Manus (mensetmanus)
ÊÇ MITµÄóðÑÔ£¬Á½¸öÈËÎïµÄͼÐμòµ¥±íÏÖ³ö MITµÄ¾«Éñ¡£)
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ ©¦
©¦ P165 Fig 14.4 ©¦
©¦ ©¦
©¦Í¼14 - 4 É趨 mensetmanusλԪ ©¦
©¦ Ó³ÏñΪ±³¾°Í¼ÑùµÄ¸ùÊÓ´° ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
14.4.2 É趨һ¸ö±³¾°Óαê
Èç¹ûÄ㲻ҪʹÓÃÔ¤ÉèµÄ "´óµÄ X "Óα꣬Äã¿ÉÒÔÓÃÑ¡Ïî -CURSOR ¼ÓÉÏ
cursorbitmap ºÍ maskbitmapÁ½¸öÒýÊýÀ´¸Ä±äËü£¬Á½¸öÒýÊý¾ùΪλԪӳÏñ
µµ°¸µÄÃû³Æ¡£ÀýÈ磺É趨ÓαêΪǰ½ÚËùʾµÄλԪӳÏñ£¬Ê¹ÓÃÃüÁ
xsetroot -cursor /usr/include/X11/bitmaps/cntr_ptr\
/usr/include/X11/bitmaps/cntr_ptrmsk
λԪӳÏñµÄ¶ÔÕÕͼ¼ûͼ14-5.
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ ©¦
©¦ P166 Fig 14.5 ©¦
©¦ ©¦
©¦Í¼14 - 5 Óα꼰ÆäÕÚÕÖµÄλԪӳÏñ ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
maskbitmap¾ö¶¨ÁËcursorbitmapµÄÄÄЩÏñËØÕæÕý±»ÏÔʾ³öÀ´£ºÓαêÏñËØ
ÖÐÖ»ÓжÔÓ¦µ½ÕÚÕÖÏñËØ(mask)ΪºÚµÄ²¿·Ý²Å»áÓõ½£¬ÓαêÆäËüµÄÏñËØ²»»á
±»ÏÔʾ³öÀ´¡£×ܽáÀ´Ëµ£¬ÕÚÕÖ¾ö¶¨ÁËÓαêµÄÍâÐΣ¬·´Ö®£¬ÓαêλԪӳÏñÔò
¾ö¶¨ÁËÍâÐεÄÑÕÉ«¡£ÕÚÕÖºÍÓαêµÄλԪӳÏñ±ØÐë´óСÏàͬ¡£
ÕâÖÖÕÚÕֽṹÔÚÁ½ÖÖÇé¿öÏ·dz£ÓÐÓãº
1. ËüÔÊÐí "Ǭ¾»µØ" ÏÔʾ³ö·Ç³¤·½ÐÎÓα꣬¶ø²»ÐèÏÔʾ³ö¶àâŵĿհס£ÀýÈç
Èç¹ûûÓÐÕÚÕÖ£¬cntr_ptr»áÏÔʾ³ÉÒ»¸ö 16 x 16°×·½ÐÎÖÐÓÐÒ»¸ö¼ýÍ·£¬µ±ÄãÓÃ
ËüÖ¸Îï¼þʱ£¬Îï¼þµÄÒ»²¿·Ý»á±»¾ØÐÎÍâ¿òÕÚ¸Çס¡£
2. Êʵ±µØÉ趨ÕÚÕÖ£¬Äã¿ÉÒÔ±£Ö¤²»ÂÛ±³¾°µÄÑÕɫΪºÎ¾ùÄÜ¿´µÃµ½ÓαꡣÀýÈç
cntr_ptrmsk ±È cntr_ptr µÄ±ß¾ù´óÒ»¸öÔªËØ£¬ËùÒÔÓαêÖÜÎ§Î§ÈÆÖøÒ»È¦°×±ß
¡£Èç¹ûÕÚÕÖºÍÓαê´óСÏàͬµÄ»°£¬µ±ÓαêÔÚºÚÉ«µÄÇøÓò½«»áÏûʧ²»¼û¡£
Äã¿ÉÒÔÈÃÕÚÕÖºÍÓαêʹÓÃÏàͬµÄλԪӳÏñ£ºÓαêµÄÍâÐλáÈçÄãËùÆÚÍû£¨Òò
ΪÕÚÕÖ¾ö¶¨ÍâÐΣ¬¶øÕâÍâÐÎÕýÊÇÄãÏëÒªµÄ£©£¬ËüÃÇ¿ÉÒÔ¹¤×÷£¬µ«Êǵ±ÓÎ±ê½øÈë
ºÍËüÏàͬÑÕÉ«µÄÇøÓòʱ£¬Äã¾ÍºÜÄÑ¿´µ½ÓαêÁË¡£Êµ¼ÊÉÏ£¬²¢·ÇËùÓÐÔÚ
/usr/include/X11/bitmapsÖеÄλԪӳÏñ¾ùÓÐÏà¶ÔÓ¦µÄÕÚÕÖ£¬Èç¹ûÄãʹÓÃËüÃÇ
µ±×÷Óα꣬Äã±ØÐëʹÓÃÓαêλԪӳÏñµ±×÷ÕÚÕÖ¡£
ÓÐÐËȤµÄ»°£¬ÊÔÒ»ÊÔ°Ñmensetmanus µ±×÷ÓαêºÍÕÚÕÖ£¨ÈȵãÊÇÔÚ×óÉϽǣ©¡£
14.4.3 ÆäËüµÄ±³¾°É趨ѡÏî
Äã¿ÉÒÔÓÃÃüÁîÁÐÑ¡Ïî -solid colourÉ趨±³¾°Îªµ¥Ò»ÑÕÉ«£¨ÔÚµ¥É«ÏÔʾ
Æ÷ÉÏÖ»ÓкÚÉ«ºÍ°×É«£©¡£Äã¿ÉÒÔÓà -grey»ò -grayÉ趨ÑÕÉ«µÄ»Ò¶È£¬ÄãÒ²¿ÉÒÔ
Óà -mod x y É趨¸ñ×ÓͼÑù£¬x ºÍ yΪ 1µ½16µÄÕûÊý¡£
14.4.4 ÖØ¶¨Ô¤ÉèµÄ±³¾°ºÍÓαê
Èç¹ûÄ㲻ϲ»¶Äã¼ÈÓеÄÉ趨£¬Äã¿ÉÒÔÓÃÏÂÁÐÁ½ÕßÖ®Ò»»Ö¸´Ô¤ÉèµÄÓαêºÍ±³
¾°£º
xsetroot -def
xsetroot
14.5 ×ܽá
±¾ÕÂÖУ¬ÎÒÃÇ¿´µ½ÈçºÎÒÔ½»Ì¸µÄ·½Ê½±à¼Î»ÔªÓ³Ïñ£¬ÈçºÎ´¢´æËüÃÇ£¬ºÍÈç
ºÎ°ÑËüÃÇÓëÆäËü¸ñʽ֮¼ä×÷ת»»ÒÔʹËüÃÇÄܱ»ÄÇЩ·ÇÊÓ´°ÏµÍ³³Ìʽ´¦Àí¡£Äã¿Éü
ÒÔ°ÑλԪӳÏñºÍxsetrootÁ¬½ÓÔÚÒ»Æð£¬ÒÔ¶¨ÖÆÊʺÏÄã×Ô¼º¿ÚζµÄϵͳ£ºÓò»Í¬
µÄ·½·¨É趨Äã¸ùÊÓ´°µÄ±³¾°ºÍ±ä¸üÓαꡣ
ÏÂÒ»Õ£¬ÎÒÃǼÌÐøÀ´¶¨ÖÆÏµÍ³£¬²¢ÇÒÀ´¿´Ò»ÏÂÄãÓÃÒÔÉ趨£Ø³ÌʽԤÉèÑ¡Ïî
µÄ½á¹¹¡£
=====
µÚ£±£µÕ ¶¨ÒåÓ¦ÓóÌʽµÄÔ¤ÉèÑ¡Ïî -- Resources
´ó¶àÊýµÄ£Ø³Ìʽ½ÓÊÜÃüÁîÁÐÑ¡ÏÒÔ±ãÈÃÄãÖ¸¶¨Ç°¾°ºÍ±³¾°µÄÑÕÉ«¡¢×ÖÐÍ
¡¢ÆðʼλÖõȵȡ£ÕâÖÖÐèÇóÊÇÓбØÒªµÄ£¬ÒòΪÈç¹ûÄãÔÚ³ÌʽÄÚÓ²ÐԹ涨ʹÓÃij
ÖÖ×ÖÐÍ£¬¶øÔÚÖ´Ðд˳ÌʽµÄ»úÆ÷Éϲ¢Ã»ÓÐÕâÖÖ×ÖÐÍ£¬Ôò½«Ê¹µÃ³ÌʽÎÞ·¨Ö´ÐУ¬
ËùÒÔÄã²»Ó¦Ó²ÐԹ涨ijЩ²ÎÊý¡£
µ±Äãÿ´ÎÖ´ÐгÌʽʱ²»Ì«¿ÉÄÜÔÚÃüÁîÁÐÖÐÖ¸¶¨ËùÓÐÐèÒªµÄÑ¡ÏÒòΪÓÐÌ«¶àÖÖ
¿ÉÄܵÄ×éºÏÁË£¬ËùÒÔ£ØÌṩÁËÒ»¸ö½Ð×öresources µÄÒ»°ãÐԽṹ£¬ÓÃÀ´´«µÝÔ¤
ÉèµÄÉ趨¸øÓ¦ÓóÌʽ¡£µ±ÄãÔĶÁÖ¸ÄÏҳʱ£¬Äã¿ÉÄÜÒѾעÒâµ½ÒªÄã²ÎÕÕresources
£¬µ«È´²»ÖªµÀʲ÷áÊÇresources £¬ÎÒÃǽ«Ôڴ˽âÊÍ¡£
ÄãÔÚϵͳÖм¸ºõËùÓе͍Öƶ¯×÷¶¼½«ÔËÓõ½resources £¬ÊÂʵÉÏÄãΪһ
¸öÓ¦ÓóÌʽËùÑ¡ÔñµÄÿһ¸öÑ¡ÏîµÄÉ趨¶¼ÒªÓõ½resources £¬´Ó¼òµ¥µÄÏîÄ¿Àý
ÈçÉ«²Ê»ò×ÖÐÍ£¬µ½¶¨ÖÆÄãµÄ¼üÅÌ»ò¹ÜÀíÄãµÄÏÔʾÆ÷ÈçºÎ¹¤×÷£¬Ëü·Ç³£µÄ·½±ã£¬
¶øÇÒÔÚϵͳÖе½´¦¶¼Óõõ½¡£
±¾ÕÂÎÒÃÇÃèÊöʲ÷áÊÇresources £¬¼°¹Øì¶ËüÃÇÊÇÈçºÎ·¢Õ¹µÄ×ÊѶ£¬½ÓÏÂÀ´
ÎÒÃÇÃèÊö£Ø Toolkit£¨¹¤¾ß£©£¬ËüÍêÈ«µØÊ¹Óõ½ÁËresources µÄ½á¹¹£»È»áá
¸æËßÄãһЩresources ¹¤×÷µÄϸ½Ú£¬Äã¸ÃÈçºÎÉ趨ËüÃÇ£¬¼°ÄãÄÜÓÃËüÃÇÉ趨ÄÄЩ
ÐÍ̬¡£
ÕâÊÇÏ൱³¤µÄÒ»Õ£¬Óм¸¸öеĹÛÄî±»¼Ó½øÀ´£¬Ò»¿ªÊ¼»áÓÐЩÀ§ÄÑ£¬µ«²»
ÐèÌ«µ£ÐÄ£¬ÔÔòÉÏresources ½á¹¹·Ç³£µØ¼òµ¥£¬Ö»ÊǵÚÒ»ÑÛ¿´ÆðÀ´ºÃÏñÓÐÐí¶à
"ħÊõ·ûºÅ" ¶øÒÑ£¬Ò²ÐíÄãÓ¦¸ÃÏÈºÜ¿ìµØä¯ÀÀÒ»±é£¬È»ááÔÙÏêϸµØÖضÁÒ»±é¡£
15.1 ʲ÷áÊÇresources £¿
ÔڣصÄÎÄÏ×ÖУ¬¡±resources ¡±ÓÐÁ½ÖÖÒâÒå¡£µÚÒ»ÖÖÊÇÏ൱µÍ½×µÄ£¬ÒâÖ¸
±»server¹ÜÀí»ò½¨Á¢¶ø±»Ó¦ÓóÌʽʹÓõĶ«Î÷¡£ÊÓ´°¡¢Óαꡢ×ÖÐ͵ȾùÊôì¶Õâ
ÖÖÒâÒå¡£
ÁíÒ»ÖÖÒâÒåÒ²¾ÍÊÇͨ³£ÄãÔÚÖ¸ÄÏÒ³Öг£¿´µ½¡±resources ¡±µÄÒâÒ壺ËüÊÇ
Ò»ÖÖ´«µÝÔ¤ÉèÉ趨¡¢²ÎÊýºÍÆäËüÖµ¸øÓ¦ÓóÌʽµÄ·½·¨¡£ÔÚ±¾ÕÂÖÐÎÒÃǾÖÏÞì¶
ÌÖÂÛ´ËÖÖÒâÒåÖ®resources ¡£ÔÚ½âÊÍÏÖÐÐϵͳÈçºÎ¹¤×÷ǰ£¬ÏȻعËһϣصÄÔç
ÆÚ°æ±¾ÊÇÈçºÎÕÆÎÕÕâЩ¹¦Äܵģ¬ÒòΪÏÖÐеĽṹÓɴ˲úÉú¡£
15.1.1 ¡±Ô¤É衱µÄ±³¾°
ÔڣؽÏÔçµÄ°æ±¾£¬¶Ôì¶ÏñÊÓ´°±³¾°ÑÕÉ«¡¢ÊÓ´°±ß½çµÄÑÕÉ«¡¢Ó¦ÓóÌʽËùʹ
ÓõÄ×ÖÐÍÕâÀàÏîÄ¿Äã¿ÉÒÔÇáÒ×µØÉ趨ÆäÔ¤ÉèÖµ¡£
Ô¤ÉèÖµµÄÉ趨·½Ê½ºÜÖ±½Ó£¬ÄãÖ»ÐèÖ¸¶¨Ò»¸öÊÓ´°µÄÊôÐÔºÍËüµÄÔ¤ÉèÖµ¡£ÀýÈ磺
¡¡¡¡¡¡¡¡.Border : red
Òâ¼´ËùÓеÄÊÓ´°¾ùΪºìÉ«µÄ±ß£¨³ý·ÇÄãÔÚÃüÁîÁÐÖÐÖØÐÂÉ趨±ßµÄÑÕÉ«£©£¬ÄãÒ²
¿ÉÒ԰ѳÌʽµÄÃû³Æ·ÅÔÚÊôÐÔ֮ǰ£¬ÔòÖ»Óб»Ö¸ÃûµÄ³Ìʽ²Å»á¸Ä±ä£¬ËùÒÔ°ÑÒÔÏÂ
Õâ¸ö¹æ¸ñ
xclock.Border£ºblue
ºÍÏÈǰµÄ¹æ¸ñ½áºÏÔÚÒ»ÆðµÄÒâÒåΪ£ºÔ¤ÉèËùÓÐÊÓ´°¾ùΪºìÉ«µÄ±ß£¬Ö»ÓÐxclock
µÄÊÓ´°ÎªÀ¶É«µÄ±ß¡£
ÿµ±ÄãÉ趨ԤÉèÖµ£¬³Ìʽ»á×Ô¶¯È¡ÓøÃÖµ£¬ËùÒÔÄã¡õÐèÿ´Î¾ùÖ¸¶¨ÄãµÄÑ¡
Ôñ£¬ËüÈÃÄãÒÀÕÕÊʺÏÄãµÄ¹¤×÷ϰ¹ßÀ´Ê¹ÓÃ×ÖÐÍ£¬²»ÂÛÊÇÄãÒªÓýÏСµÄ×ÖÐÍÒÔ»ñ
µÃ¸ü¶àµÄ×ÊѶÏÔʾ£¬»òÊÇÓýϴóµÄ×ÖÐÍÒÔ±ãÔĶÁ£¬ËüÈÃÄãÎªÌØ¶¨µÄÓ¦ÓóÌʽѡ
ÔñÑÕÉ«£¬Äã¿ÉÒÔ¶¨ÒåÓ¦ÓóÌʽµÄÆðʼλÖã¬ËùÒÔÄã¿ÉÒÔ×ÔÐÐÉè¼ÆÒ»Ð©Æôʼө
Ä»µÄ²¼Öã¬ÒòΪÐí¶àµÄÔ¤ÉèÖµ£¨×ÖÐÍ¡¢É«²ÊµÈ£©Êµ¼ÊÉϾ«È·µÄÒâÒåΪ¡±resources¡±
£¬ËùÒÔ¡±resources ¡±µÄÒâÒåÖð½¥À©ÔöΪ¡±Ô¤ÉèÖµÉ趨(default setting) ¡±
»ò¡±É趨ԤÉèÑ¡Ïî(setting default options) ¡±¡£
15.1.2 Resources ´«µÝ×ÊѶµ½Ó¦ÓóÌʽ
ËæÖø£ØµÄ·¢Õ¹£¬Ó¦ÓóÌÊ½Ò²ËæÖ®À©Ôö£¬ÐèÒªÓÐÒ»¸öÉèÊ©´«µÝ´óÁ¿µÄ×ÊѶµ½Ó¦
ÓóÌʽÒÔ¶¨ÖÆ»òÖ¸¶¨ËüÃǵÄÐÐΪ£¬¶ø²»ÔÙÖ»ÊÇÓйØÉ«²ÊºÍ×ÖÐ͵Ä×ÊѶ¶øÒÑ£¬
ÀýÈçÄã¿ÉÒÔ¸æËß xbiff¼ì²éÐżþµÄƵÂÊ£¬»ò¶¨Òå xtermµÄ¹¦Äܼü(function-key)
12Ϊ²åÈëÄ³Ò»ÌØ¶¨µÄ×Ö´®£¬»òÔÚ xeditÖÐÁ¬ÐøÅö´¥Á½´Î»¬ÊóÖа´Å¥´ú±íÑ¡ÔñÄ¿
ǰÕâ¶Î±¾Îĵȵȡ£
ËùÒÔÖ𽥵أ¬resource¼°Ô¤ÉèÉèÊ©ÒÑËìÒ»±»·¢Õ¹³öÀ´£¬Ö±µ½Ä¿Ç°¶Ôì¶´«µÝ
ÈκÎ×ÊѶµ½Ò»¸öÓ¦ÓóÌʽÒÑÊÇÒ»¸öÒ»°ãÐԵĽṹ¡£Äã¿ÉÒÔÏñÎÄ×Ö´®Ò»ÑùµØÖ¸¶¨
×ÊѶ£¬Ó¦ÓóÌʽ»áÔÚÄÚ²¿½âÊÍËü£ºÀýÈç°ÑÕâ×Ö´®µ±×÷Ò»¸ö»¬Êó°´Å¥µÄÃû³Æ£¬»òÒ»ÖÖÑÕ
É«£¬»òÓÉÓ¦ÓóÌʽËù·¢³öµÄÒ»¸ö¹¦ÄÜºÍ "resources"ÊÇÈçºÎÖ¸¶¨µÄ¡£
Õâ¸ö½á¹¹Ò²Ö𽥵ظ´ÔÓÆðÀ´ÒÔ±ãÈÃÄãÄÜÕýÈ·µØÖ¸¶¨Ôںδ¦Ó¦ÓÃÔ¤ÉèÖµ¡£ÔÚ
ÒÔǰ£¬ÄãÖ»ÄÜÖ¸¶¨ËùÓеijÌʽ»òijһ¸öÌØ¶¨µÄ³Ìʽ¡£ÏÖÔÚµÄϵͳÄã¿ÉÒÔÉ趨µÄ
Ô¤ÉèÖµÈ磺¡±ÖÕ¶Ë»úÊÓ´°µÄÑ¡µ¥Ñ¡Ï»ò¡±ÔÚËùÓÐÊÓ´°µÄ±êÇ©¡±»òÉõÖÁ¡±³ýÁË
xtermÒÔÍâµÄËùÓÐ±à¼Æ÷ÊÓ´°°´Å¥ºÐÖеŦÄܰ´Å¥¡±¡£
£Ø Toolkit, ʹµÃresourcesÔÚʹÓÃÉÏÓкܴóµÄ°üÈÝÐÔ²¢ÇÒÔö½øÁËÓ¦ÓõÄ
¾«È·¶È¡£ÄãÐèÒªÏÈÁ˽â ToolkitÊÇʲ÷ᣬ²ÅÄÜÊʵ±µØÊ¹ÓÃresource ½á¹¹£¬ÎÒ
Ãǽ«ÔÚÏÂÒ»½ÚÌÖÂÛ¡£
15.2 £Ø Toolkit
ÎÒÃÇÏÈÇ°ÔøÌá¹ý£¬£Ø²¢²»¾ö¶¨Ê¹ÓÃÕß½éÃæ£¬ËüÖ»ÊÇÌṩһЩ½á¹¹£¬ÈÃÓ¦ÓÃ
³ÌʽÉè¼ÆÕßÄÜ×éºÏ³ÉÈκÎÐÎʽµÄ½éÃæ¡£ÀíÂÛÉÏÕâÊǷdz£ºÏºõÐèÇóµÄ -- ËüʹµÃ
ϵͳӵÓÐÒ»¸öÒ»°ãÐÔÄ¿µÄµÄ¹¤¾ßÇÒûÓÐʹÓÃÉϵÄÏÞÖÆ£¬µ«´ÓÁíÍâµÄ½Ç¶ÈÀ´¿´£¬
ËüÓкܴóµÄȱµã£º
£®¶ÔÒ»¸öʹÓÃÕß¶øÑÔ£¬²»Í¬µÄÓ¦ÓóÌʽÓв»Í¬µÄ½éÃæ£¬²»Ö»ÊÇÄÑѧÄѼǣ¬
ÇÒÓ¦ÓóÌʽÎÞ·¨Æ½Ë³µØ (smoothly) Ï໥е÷¹¤×÷£¨ÀýÈçÎÞ·¨ÔÚÊÓ´°Ö®¼ä
×ö¼ôÌù£©£¬ÄãµÃµ½µÄÊÇһȺ¸ö±ðµÄ¡¢¶ÀÁ¢µÄ³Ìʽ£¬¶ø²»ÊÇÒ»¸öÒ»Öµġ¢
ºÏ×÷ÎÞ¼äµÄϵͳ¡£
£®´Ó³ÌʽÉè¼ÆÊ¦µÄÁ¢³¡£¬ÒâÎ¶Öø»ù±¾ÊÓ´°ÏµÍ³ÉϵÄÿһ¼þʾùÐè´ÓÍ·×öÆð£¬
Ñ¡µ¥¡¢¾í¶¯°ô¡¢Ê±ÖÓ¡¢¹¦ÄÜÅ¥µÈµÈ¶¼±ØÐëÒ»Ò»Éú²ú¡£ÉõÖÁÔÚµ¥Ò»µÄ²úÆ·£¬
²»Í¬µÄ³Ìʽʦ×öÁËÒ»µãÉÔÓв»Í¬µÄÊ£¬±ã»áµ¼ÖÂÐí¶à²»ÏàÈݵÄÇé¿ö¡£
ΪÁ˿˷þÉÏÊöµÄÎÊÌ⣬Toolkit(¹¤¾ß)µÄ·½Ê½Ó¦Ô˶øÉú¡£
ÔÚijЩ·¶Î§£¬Toolkit »á¾ö¶¨Ê¹ÓÃÕß½éÃæµÄÐÎʽ£¬µ«ÊÇÎÞÂÛÈçºÎ£¬Ëü»á¾¡
Á¿¼õÉÙÕâÖÖÓ°Ï죬²¢ÈÃʹÓÃÕß½éÃæ·¢Õ¹ÕßÓиü¶àÑ¡ÔñµÄ¿ÉÄÜÐÔ£¬Toolkit ±»·Ö
ΪÁ½¸ö²¿·Ý£º
1£® Ò»×é»ù±¾µÄ½á¹¹ºÍº¯ÊýÓÃÒÔ½¨¹¹Ê¹ÓÃÕß½éÃæµÄÔªËØ£¬±»³ÆÎªToolkit
Intrinsics£¨ÄÚ²¿µÄ¹¤¾ß£©¡£²»ÂÛÊÇʲ÷áÑùµÄ½éÃæ£¬Èκι¤¾ß¾ùÐèʹ
Óõ½Ëü£¬ËùÒÔÎÒÃÇ¿ÉÒÔ°ÑToolkit IntrinsicsÊÓΪ¡±¹Ì¶¨µÄ¡±£¬Ò²¾Í
ÊÇÎÞ¿ÉÌæ´úµÄ¡£
2£® Ò»×éÌá¹©ÌØ¶¨µÄʹÓÃÕß½éÃæ£¨»ò½éÃæµÄÐÎʽ£©µÄÔªËØ£¬ÕâÐ©ÔªËØ±»³Æ
Ϊ widgets (С¹¤¾ß)£¬¶øToolkit µÄµÚ¶þ²¿·Ý³ÆÎª widget set (С
¹¤¾ß×é)£¬ÎÒÃÇÈÏΪÕâÊÇ¿ÉÒÔÌæ»»µÄ£¬²»Í¬µÄ½éÃæÌṩ²»Í¬µÄWidget
Sets £¬ÉõÖÁËüÃǶ¼Ê¹ÓÃIntrinsics¡£
ÏÂÃæÁ½¸öС½Ú¸üÏêϸµØËµÃ÷ÕâÁ½¸ö²¿·Ý¡£
15.2.1 Toolkit µÄµÚÒ»¸ö²¿·Ý -- Intrinsics
Intrinsics¶¨ÒåµÄʵÌå³ÆÎªwidgets£¬²¢ÌṩÁËËùÓн¨Á¢¡¢¹ÜÀíºÍ»Ù»µwidget
ËùÐèµÄÉèÊ©¡£ÀíÂÛÉÏ£¬Ò»¸öwidgetÊÇÒ»¸ö´¦ÀíÌØ¶¨¶¯×÷µÄʹÓÃÕß½éÃæµÄÔªËØ£¬Êµ¼Ê
ÉÏÒ»¸öwidgetÊÇ£ØÊÓ´°¼ÓÉϹæÔòºÍ¹¦ÄÜÒÔ¾ö¶¨ËüµÄÊäÈëºÍÊä³öµÄ¶¯×÷£¬Ò²¾ÍÊÇ
˵£¬ËüÈçºÎ¶ÔʹÓÃÕßÓÐËù·´Ó¦¡£
ΪÁ˰ïÖú½âÊÍwidgetµÄ¹ÛÄÎÒÃǽ«¸øÒ»µã·¶Àý£¬µ«ÊÇÇë×¢Ò⣡ËüÃDz¢²»
ÊÇIntrinsicsµÄÒ»²¿·Ý£¬¶øÊÇÎÒÃǽ«ì¶ÏÂһС½ÚÌÖÂÛµÄÒ»¸öÌØ¶¨µÄwidget×éµÄ
Ò»²¿·Ý£¬ÔÚ´ËÌá³öÄ¿µÄÖ»ÊÇΪÁË·½±ã¡£
Command Widget£¨ÃüÁîwidget£©£ºÕâÊÇÒ»¸öÔÚÓ©Ä»ÉϺ¬ÓÐһЩÎÄ×ֵij¤·½
ÐΡ±°´Å¥¡±£¨Ò²¾ÍÊÇÒ»¸öСÊÓ´°£©¡£µ±Ö¸±êÔÚÕâ¸ö°´Å¥Ö®ÉÏʱ£¬ËüµÄ±ß»á³ÊÏÖ
¸ßÁÁ¶È£¬µ±Ò»¸ö»¬Êó°´Å¥ÔÚÕâ¸öwidget±»Åö´¥Ê±£¬Ò»¸ö±»³Ìʽʦָ¶¨µÄÈíÌå³£
ʽ(routine) ±ã»á±»Ö´ÐС£
ÄãÒѾʹÓùýcommand widgetºÃ¼¸´ÎÁË£ºÔÚxedit µÄÃüÁîÑ¡µ¥ºÍÔÚxmanµÄ
Ö÷Ñ¡ÏîÊÓ´°¡£
Scrollbar Widget£¨¾í¶¯°ôwidget£©£ºÍ¬ÑùµÄ£¬ÄãÒ²ÒѾʹÓùýÁ˺ü¸´Î£¬
ÔÚxterm ºÍxedit ÖÐ¾í¶¯±¾ÎÄ£¬ÔÚxmanÖÐ¾í¶¯±¾ÎĺÍĿ¼ÁС£
Intrinsic ÌṩÁË»ù±¾µÄ½á¹¹£¬ÈκÎÒ»¸öÌṩ½éÃæµÄ½Ï¸ß½×ÈíÌå¾ùÐèҪʹ
Óõ½Ëü£¬ËüÌṩÁËÒÔÏµĹ¦ÄÜ£º
£®½¨Á¢ºÍ»Ù»µwidget¡£
£®°ÑһȺwidgetµ±³ÉÒ»¸öµ¥Ôª(unit)À´¹ÜÀí¡£
£®ÕÆÎÕgeometry£¬Ò²¾ÍÊÇ˵λÖ㬰üÀ¨´Ó×î¸ß½×£¨Ò²¾ÍÊÇÓ¦ÓóÌʽµÄ -geometry
Ñ¡Ïµ½×îµÍ½×£¨¹ÜÀíÓ¦ÓóÌʽÓõ½µÄsub-widgetµÄλÖã¨ÀýÈçÑ¡µ¥°´Å¥
µÄλÖã©£©¡£
£®ÕÆÎÕ¡±Ê¼þ¡±£¬ÀýÈçÔÚÒ»¸öwidgetÖÐ, µ±»¬Êó°´Å¥±»Åö´¥Ê±ºô½ÐÊʵ±µÄ³Ì
Ðò¡¢¹ÜÀíÊÓ´°µÄÆØ¹â (exposure)ºÍÕÆÎÕ¼üÅ̵ÄÊäÈë¡£
£®¹ÜÀí¸øresources ºÍÔ¤ÉèµÄÿһ¸öwidget¡£
15.2.2 Toolkit µÄµÚ¶þ²¿·Ý -- Widget Sets
¹ãÒåÀ´Ëµ£¬IntrinsicsÖ»ÌṩÄ㽨ÔìÒ»¸öʹÓÃÕß½éÃæµÄ¹Ç¼Ü£¬Widget SetÔò
ʵ¼ÊµØÌṩÁËÒ»¸ö¼È¶¨µÄ½éÃæ£¬ÇÒ²»Í¬µÄwidget×éÌṩ²»Í¬ÐÎʽµÄ½éÃæ£¬ËäÈ»
¶ÔÈκη¶Î§µÄÐèÇó²¢ÎÞ·¨Ô¤·À»ìÓÃwidget£¬µ«Ò»°ãÈÔÏ£ÍûÒ»¸öϵͳ¹Ì¶¨ÔÚ
Ò»ÖÂÐÔµÄwidget setÉÏ¡£
ÔÚ£Ø core °æÉÏÖ»ÓÐÒ»¸öwidget setÌṩ£¬ÎÒÃÇÃèÊöì¶Ï£º
Athena Widget Set £¨ÑŵäÄÈwidget set£©
´ó²¿·ÝµÄMIT core°æµÄÓ¦ÓóÌʽʹÓÃToolkit ºÍAthena Widget Set.£¨Ãû
³ÆµÄÀ´Ô´ÊÇ£ØÓÉMIT µÄAthena¼Æ»²úÉú³öÀ´£©¡£ÕâЩwidgetµÄ¶¨ÒåÄãÒÑÔÚÐí¶à
µÄÓ¦ÓóÌʽÓùý¡£
ÎÒÃÇÔÚǰ½ÚÌá¹ýÁËCommand WidgetºÍScrollbar Widget£¬ÖÁì¶Athena Widget
Set µÄÆäËü²¿·Ý°üº¬£º
Label Widget£ºÕâ¸öÄã¿ÉÒÔÏëÏñ -- ÔÚÊÓ´°ÖÐÏÔʾµÄÒ»¸ö×Ö´®»òͼ¡££¨Àý
ÈçÔÚxmanÖ÷Ñ¡ÏîÑ¡µ¥Öеġ±Manual Browser¡±µÄ±êÌ⣩
Text Widget £ºÎÒÃÇÔÚµÚ£±£°ÕÂÃèÊöxedit ʱÌá¹ýµÄ¡±building block¡±¡£
ËüÌṩÎÒÃÇËùʹÓõı༹¦ÄÜ¡£
Viewport Widget £ºÒ»¸ö¾ßÓÐ¾í¶¯°ôµÄÊÓ´°£¬ÈÃÄã¿ÉÒÔ¾í¶¯ÊÓ²º(viewport)
µÄÄÚÈÝ£¬xmanʹÓÃÆäÖÐÖ®Ò»ÓÃÒÔÏÔʾָÄÏҳ֮Ŀ¼¡£
Box Widget£ºËüÒÔÒ»¸öÖ¸¶¨´óСµÄºÐ¹ÜÀísub-widgetµÄ²¼Öã¬ÇÒÊÔÖø½« sub-
widget¾¡Á¿¼¯ÖÐÔÚÒ»Æð£¬ÀýÈçxmh µÄReply ¡¢Forward µÈÃü
ÁîÅ¥¼´ÊÇÓÉBox Widget²¼Öá£
VPaned Widget £ºËü¹ÜÀísub-widget£¬½«ËüÃDZ£´æÔÚ´¹Ö±¶ÑµþÖУ¬ÇÒÏÔʾÁË
ÔÚÁ½¸ösub-widgetÖ®¼äµÄ·Ö¸ôÏßÉϵġ±°ÑÊÖ¡±(grip)£¬°ÑÊÖ
¿ÉÒÔÑ¡ÔñÐÔµÄÈÃÄã¸Ä±äÒ»¸öwidgetµÄ´óС£¬¶øÇÒÁíÒ»¸öÏà
¹ØµÄwidget´óСÒà°éËæ±ä»¯£¬ÀýÈçÎÒÃÇÔÚͼ10-12 ¿´µ½µÄ
xmanµÄÊÓ´°µÄÖ÷ÒªµÄÔªËØÊDZ»VPaned Widget ¹ÜÀíµÄ¡£
Form Widget £ºÁíÒ»ÖÖ¹ÜÀíÒ»×ésub-widgetµÄ·½·¨£¬µ«¶ÔλÖõÄÑ¡ÔñÓиü¶à
µÄµ¯ÐÔ¡£
List Widget £ºËü¹ÜÀíһȺ×Ö´®£¬½«ËüÃǰ²ÅÅÔÚÐÐÁÐÖУ¬ÈκεÄ×Ö´®½å
Öøì¶ÆäÉÏÅö´¥µÄ¶¯×÷¶ø±»Ñ¡Ôñ£º×Ö´®»áתΪ¸ßÁÁ¶È£¬ÇÒºô½Ð
Ò»¸öÖ¸¶¨µÄº¯ÊýÒÔÍê³ÉÌØ¶¨µÄ¶¯×÷¡£xmanʹÓÃÒ»¸öList
WidgetÀ´ÕÆÎÕÔÚÒ»¸öÖ¸ÄÏÕ½ÚÖÐÖ¸ÄÏÒ³µÄ±íÁС£
ÎÒÃÇÏÖÔÚÀ´¿´Ò»ÏÂÈçºÎ×éºÏwidgetÒÔ»ñµÃËùÐèÒª¹¦ÄÜ£¬ÎÒÃÇÈÔÈ»ÒÔxmanΪ
Àý¡£xmanµÄÖ¸ÄÏҳ֮Ŀ¼ÔÚËüµÄµÍ½×ÊÇlist widget £¬¹ÜÀíĿ¼ҳÃû³ÆµÄ±íÁÐ
ÒÔ¼°Ëü±¾ÉíµÄÄÚÈÝÊÇÓÃviewport widget £¨ÈÃʹÓÃÕß¾í¶¯ÖÁ±íÁÐÖÐËùÐèµÄλÖÃ
£©£¬½«Ö¸ÄÏÒ³µÄwidget¾Û¼¯ÔÚÒ»Æð£¬ËüÃÇÊǰüº¬ÔÚÒ»¸öVPaned Widget ÖУ¬Ëù
ÒÔÊÂʵÉÏÕâÊÇÒ»¸ö½×²ã×´(hierarchy) µÄwidget£¬Ã¿Ò»¸ö¿ÉÒÔÍê³ÉËüµÄרÃÅ
¹¦ÄÜ£¬¶øËùÓеÄÓ¦ÓóÌʽËùʹÓõÄToolkit ¾ùº¬ÓÐÕâÈý¸öwidget½á¹¹¡£
15.2.3 widget£ºÃû³ÆºÍÀà±ð (Names and Classes)
resourceºÍÔ¤Éè½á¹¹ÊÇÔÚwidgetÃû³ÆµÄ»ù´¡Ï¹¤×÷£¬ËùÒÔÎÒÃǽ«ÒÔ¶ÔÃû³Æ
µÄ´¦Àí×öÒ»¸ö¸Å¹Û·½Ê½À´½áÊø¶ÔToolkit µÄ¹Û²ì£¬²¢»Øµ½ÏÈǰÌÖÂÛµÄresource¡£
Toolkit Ìṩһ¸öÎï¼þµ¼Ïò³Ìʽϵͳ(object-oriented programming system)
¸ø³ÌʽÉè¼ÆÊ¦¡£Ëü¶¨ÒåÎï¼þµÄÀà±ð(class) £¬Ò²¾ÍÊÇÖ¸¶¨ºÎʱÎï¼þ±»½¨Á¢»òÈç
ºÎ²Ù×÷µÈµÈµÄÎï¼þÐÔÖÊ¡£ÕâЩÎï¼þ¼´ÊÇwidget£¬ÏµÍ³½«È·±£ËüÃÇºÍÆäËüµÄwidget
ÒÔ¼°ÆäËü²¿·ÝµÄÓ¦ÓÃÈíÌåÒÔ¶¨ÒåÃ÷È·µÄ·½Ê½½»Ì¸¡£
µ±Ò»¸ö³ÌʽÉè¼ÆÊ¦½¨Á¢Ò»¸öÌØ¶¨Àà±ðµÄwidget£¬Ëü±»³ÆÎª¸ÃÀà±ðµÄ³ÉÔ±
(instance)£¨¸ÅÀ¨µÄ˵£¬Ò»¸öÀà±ðÊÇÒ»¸ö³éÏóµÄ¶¨Ò壬¶øÒ»¸ö³ÉÔ±ÔÚijЩµØ·½
ʵ¼ÊµØ·ûºÏÕâЩ¶¨Òå¡££©½¨Á¢widgetÓбØÐëÒ»¸öÃû³Æ£¬ÓɳÌʽÉè¼ÆÊ¦Ö¸¶¨£¬£¨
ÀýÈ磺³ÌʽÂëµÄʵ¼ÊÐÍʽΪ¡±Creat a widget, of the class Box Widget,
and call it topBox ¡±£©ÔÚijЩ»·¾³ÏÂwidgetµÄÀà±ðÃû³ÆÒ²»á±»²Î¿¼µ½¡£×Ü
½áÀ´Ëµ£¬Ò»¸öwidgetÓÐÒ»¸ö³ÉÔ±Ãû³ÆºÍÀà±ðÃû³Æ£»¸ü¼òµ¥µÄ˵£¬Ò»¸öÃû³ÆºÍÒ»
¸öÀà±ð¡£
15.3 Resources ÈçºÎ±»¹ÜÀí -- Resource¹ÜÀíÆ÷
ÈÃÎÒÃÇÌáÐÑ×Ô¼ºÒ»ÏÂÎÒÃÇÊÔͼÓÃresourceÀ´×öʲ÷᣿ÎÒÃÇÒªÄÜ´«µÝ×ÊѶ¸ø
Ò»¸öÓ¦ÓóÌʽ£¬¸æËßËüÒÔijЩ·½Ê½¸Ä±äËüµÄÒ»°ãÐÔ¶¯×÷£¬ÀýÈ磬½«ÊÓ´°µÄ±ß
ÒÔ·Ûºìɫȡ´úÔÀ´µÄºÚÉ«£¬»òʹÓÃÒ»Ð©ÌØ±ðµÄ×ÖÐÍ¡£
£ØÓÃÏÂÊöµÄ·½Ê½ÕÆÎÕÕâЩÐèÇó¡£ÄãÉ趨һ¸ö°üº¬Ðí¶àÏîresource¹æ¸ñµÄ×Ê
ÁϿ⣬ÿһ¸öresource¹æ¸ñÒÔÒ»¸öÓ¦ÓóÌʽµÄÄ³Ð©ÌØáçÃüÃû£¬ÇÒÉ趨һ¸öÖµ¸ø
Õâ¸öÌØáçµ±Ô¤ÉèÖµ£¬Ò²¾ÍÊÇ˵£¬Ò»¸ö¹æ¸ñ (spec) µÄÐÎʽΪ£º
characteristic : value £¨ÌØá磺ֵ£©
µ±Ó¦ÓóÌʽ¿ªÊ¼Ö´ÐÐʱ£¬Ëü»áÏÈѯÎÊ×ÊÁÏ¿âÊÇ·ñÓÐÈκÎÌØáç·ûºÏ×Ô¼ºËùÒª
µÄÉ趨£¬»òʹÓÃÏà¹ØµÄÖµ£¬ÀýÈ磺
xclock*foreground:blue
ÒâΪ½«ÖµblueÉ趨¸øÌØáçxclock*foreground ¡£ÓÃÒÔ¾ö¶¨Ò»¸ö³ÌʽµÄÐèÇó
ÊÇ·ñ·ûºÏÔÚ×ÊÁÏ¿âÖÐÖ®¹æ¸ñµÄϵͳ²¿·Ý£¬±»³Æ×÷Resource¹ÜÀíÆ÷¡£
ResourceÔ¤ÉèÖµÄܱ»Ó¦Óõ½Ò»¸öÓ¦ÓóÌʽÖеÄÎï¼þ£¨Í¨³£ÊÇwidget£©£¬¾Í
ÈçͬÉè¼ÆÕû¸ö³Ìʽһ°ã£¬£¨ÀýÈçÄã¿ÉÒÔ¶ÔÒ»¸öÌØ¶¨µÄ×ÓÊÓ´°ÔÚijһ¸öÃüÁî°´Å¥
µÄ±³¾°É«É趨ԤÉèÖµ£¬¶ø²»ÊÇÖ»ÄÜÕë¶ÔËùÓÐÓ¦ÓóÌʽµÄÊÓ´°±³¾°£©¡£ÎªÁËÄÜ´ï
µ½ÕâÒ»µã£¬ÎÒÃÇÐèҪһЩÑϽ÷µÄÃüÃû·½·¨£¬ÒÔÉ趨Îï¼þÓ¦ÓÃÔ¤ÉèÖµ¡£
15.3.1 Ö¸¶¨Ò»¸öResourceÔ¤¶¨Ó¦Óõ½ºÎ´¦
Resource¹ÜÀíÆ÷¸ù¾ÝÌØáçÖµ(characteristic)¾ö¶¨Ò»¸öÔ¤Éè¹æ¸ñÊÇ·ñÄÜÓ¦
ÓÃÔÚÌØ±ðµÄÇé¿ö£¬ÎÒÃǿɽ«ÌØáçÖµ·ÖΪÈý¸ö²¿·Ý¡£
1. ÄãÓÃÒÔÉ趨ԤÉèÖµµÄ³ÌʽÊôÐÔ£¬ÀýÈ磺±³¾°É«¡¢×ÖÐ͵ȡ£
Äã±ØÐèÖ¸¶¨ÊôÐÔ (attribute) -- Òâ¼´ÄãÉ趨ʲ÷áÖµ¸øËü¡£¸ø¶¨Ò»¸ö
resourceµÄ¹æ¸ñ ¶ø²»ËµÃ÷ËüµÄÖµÊÇÎÞÒâÒåµÄ¡£
×¢Ò⣺ÔڣصÄÎÄÏ׺ÍÊÖ²áÖУ¬ÊôÐÔͨ³£±»³ÆÎª¡±resource¡±»ò
¡±resource name¡±,¡±Resource¡±Ò²Í¨³£±»ÓÃÀ´µ±×÷ÎÒÃdzÆÎªÌØáçÖµ¡£
ÌØáçÖµµÄÆäËüÁ½¸ö²¿·ÝÖ¸¶¨Ô¤ÉèÖµÔںδ¦Ê¹Óá£ÀýÈçÖ»ÔÚÌØ¶¨µÄ³Ìʽ
ʹÓûòÔÚÌØ¶¨ÐÍ̬µÄÎï¼þ£¬»òÁ½Õß¾ùÊÇ¡£
2. Ó¦Óõ½Õâ¸ö¹æ¸ñµÄÓ¦ÓóÌʽµÄÃû³Æ£¬Èç¹ûÄãÊ¡ÂÔËü£¬¹æ¸ñ½«Ó¦Óõ½
ËùÓеÄÓ¦ÓóÌʽ¡£
3. Ò»Á¬´®µÄÏÞ¶¨(restrictions)Ìõ¼þ£ºµ±Îï¼þ·ûºÏÏÞ¶¨Ìõ¼þʱ£¬²Å»á²ú
ÉúÖ¸¶¨µÄÓ¦Óá£ÏÞ¶¨Í¨³£ÎªwidgetµÄÃû³Æ£¬Äã¿ÉÒÔÖ¸¶¨´ÓÁ㿪ʼÈκÎ
ÊýÄ¿µÄÏÞ¶¨¡£ÀýÈ磺
xclock*foreground:blue
xedit*row1*Command*Cursor:Cntr_ptr
µÚÒ»¸öÀý×ÓûÓÐÈκÎÏÞ¶¨£¬µÚ¶þ¸öÀý×ÓÓÐÁ½¸öÏÞ¶¨(row1 ºÍCommand)
Èý¸ö²¿·ÝÒÀÐòÅÅÁÐ
[<program name>] [<restrictions>] <attribute>
²¢ÒÔÌØÊâµÄ·Ö¸ô·ûºÅ·Ö¿ª£¬ÎÒÃǽ«ì¶ÉÔáá˵Ã÷·Ö¸ô·ûºÅµÄϸ½Ú£¬µ«ÎÒ
ÃÇÏÈ¿´Ò»Ð©ÌØáçÖµµÄ·¶Àý£¨ÎªÁ˼òµ¥Æð¼û£¬ÎÒÃÇÔÚ·¶ÀýÖÐÖ»Óõ½ÑÕÉ«
ÊôÐÔ£©¡£
һЩ˵Ã÷Resource¹æ¸ñµÄ·¶Àý
£®Ö¸¶¨ÔÚÈκεط½ÖеÄǰ¾°É«Ô¤ÉèֵΪ»ÆÉ«¡£
*foreground:yellow
ÎÒÃÇδָ¶¨ÈκÎÓ¦ÓóÌʽµÄÃû³Æ£¬ËùÒԴ˹æ¸ñ¿ÉÓ¦Óõ½ËùÓеÄÓ¦ÓóÌʽ£»
ÎÒÃÇҲδָ¶¨ÈκÎÏÞÖÆ£¬ËùÒÔ¶ÔÒ»¸öÓ¦ÓóÌʽÔÚÈκεط½¶¼ÊÊÓᣣ¨"*" Õâ¸ö
·ûºÅ¾ÍÊÇÎÒÃÇ·½²ÅÌá¼°µÄÌØÊâ·Ö¸ôºÅµÄÒ»ÖÖ£©
£®Ö¸¶¨Ö»ÓÐÔÚxclockÓ¦ÓóÌʽÖеÄǰ¾°É«Ô¤ÉèֵΪ·ÛºìÉ«¡£
xclock*foreground:pink
Õâ¸ö¹æ¸ñ½öÄÜÔÚxclockÊÊÓ㬵«ÊÇÖ»ÒªÏîÄ¿ÖеÄÊôÐÔ½Ð×ö
¡±foreground¡±µÄ¾ùÊÊÓá£
£®ÏÖÔÚ£¬Õë¶ÔÒ»¸öÌØ¶¨Ó¦ÓóÌʽµÄÌØ¶¨µØ·½£º
xman*topBox*foreground:blue
Õâ¸ö¹æ¸ñ½öÄÜÔÚxmanÊÊÓ㬶øÇÒÖ»ÄÜÔÚxmanÖ÷Ñ¡ÏîÑ¡µ¥ÖÐÃûΪtopBoxµÄ
Îï¼þÊÊÓᣣ¨Ó¦¸ÃÊÊÓÃì¶xmanÖÐËùÓнÐtopBoxµÄÎï¼þ£¬µ«Êµ¼ÊÉÏÖ»ÓÐÒ»¸ö
topBoxÎï¼þ£©
£®ÔÚµÚ¶þ¸ö·¶Àý£¨·ÛºìÉ«£©ÖÐÎÒÃǰüº¬ÁËÓ¦ÓóÌʽÃû³Æ£¬µ«ºöÂÔÁËÈκÎÏÞ
ÖÆ£¬ÏÖÔÚÎÒÃÇ·´¹ýÀ´£º
*command*foreground:green
Ò²¾ÍÊÇ˵£¬ÎÒÃÇÖ¸¶¨ÔÚÈκÎÓ¦ÓóÌʽÖÐÎï¼þÃû³ÆÎªcommand µÄǰ¾°É«Ô¤
ÉèֵΪÂÌÉ«¡£
15.3.2 ÓÃÀà±ðÃû³ÆÒ»°ã»¯¹æ¸ñ˵Ã÷
ǰÊöµÄÀý×Ó˵Ã÷ÁËÎÒÃǶÔÔ¤ÉèÖµ½á¹¹ËùÐèµÄ´ó²¿·Ý¹¦ÄÜ£¬µ«ËüÃÇÓÐÒ»¸öÏÞ
ÖÆ£ºÄã±ØÐëÖªµÀÓ¦ÓóÌʽÉè¼ÆÊ¦Éè¼ÆÔÚÿһ¸öÓ¦ÓóÌʽÖеÄwidgetÃû³Æ£¬Õâ
Щ×ÊѶÓÐʱ°üº¬ÔÚ³ÌʽµÄÖ¸ÄÏÒ³ÖеÄÒ»²¿·Ý£¬µ«Í¨³£±»Ê¡ÂÔ¡£
ÎÞÂÛÈçºÎ£¬Resource¹ÜÀíÆ÷ÓÐÒ»¸ö¾¡Á¿¼õµÍÕâ¸öÎÊÌâµÄ·½Ê½£ºµ±ÄãÔÚÌØáç
Öв»Âۺδ¦Óõ½Ò»¸öÓ¦ÓóÌʽÃû³Æ¡¢ÏÞÖÆ»òÊôÐÔÃû³Æ£¬Äã¾ù¿ÉÀà±ðÃû³Æ(class
name)À´´úÌæËü¡£
Ó¦ÓóÌʽÀà±ðÃû³Æ(Application class name)£ºÃèÊö³ÌʽµÄÐÍ̬£¬ÀýÈç
xterm ¿ÉÒÔÊÇTerm Emul £¨ÖÕ¶Ë»úÄ£ÄâÆ÷£©µÄÀà±ð£¬xedit ºÍemacs
ÊÇEditor£¨±à¼Æ÷£©µÄÀà±ð¡££¨µ«Èç¹ûxterm ÊÇxterm µÄÀà±ð£¬xedit
ÊÇxedit µÄÀà±ðÔòʧȥÒâÒå¡££©
ÏÞ¶¨Àà±ðÃû³Æ (Restriction class name)£ºÏÞ¶¨¼¸ºõÊÇÒ»¶¨²»±äµÄwidget
Ãû³Æ£¬ËùÒÔÔڴ˵ØÄã¿ÉÒÔÓÃwidgetÀà±ðÃû³Æ¡£
ÊôÐÔÀà±ðÃû³Æ (Attribute class name) £ºÊôÐÔÊÇÈçͬwidgetÒ»°ãµÄÒ»¸ö
ÐÍ̬»òÀà±ðµÄ³ÉÔ±(instance)¡£
´«Í³ÉÏ£¬ËùÓеÄÀà±ðÃû³ÆÒÔÒ»¸ö´óдµÄ×Öĸ¿ªÍ·£¬ÆäááÔòΪСд×Öĸ£¬Àý
ÈçÊôÐÔ¡±foreground¡±ÊÇÊôì¶¡±Foreground¡±Àà±ð£¬ÎÒÃǽ«¼òµ¥µÄ½âÊÍÄãÈçºÎ
È¥·¢ÏÖÄãÐèÒªÓÃÀ´Ö¸¶¨ÏîÄ¿µÄÀà±ðÃû³Æ¡£Ê×ÏÈ£¬ÎÒÃǽ«¿´Ò»Ð©¸ü¶àµÄ·¶Àý£¬Õâ
´ÎÓõ½ÁËÀà±ð»òÒ»¸ö»ìºÏÁËÀà±ðºÍ³ÉÔ±µÄ·¶Àý¡£
º¬ÓÐÀà±ðÃû³ÆµÄResource¹æ¸ñ˵Ã÷·¶Àý
ÕâЩ·¶Àýչʾ³öÄãÈçºÎÔÚResource¹æ¸ñÖÐʹÓÃÀà±ð£¬¶ø½ÏǰÊöÒÔ¸üÒ»°ãÐÔ
µÄ·½Ê½É趨ԤÉèÖµ£¬ËüÃÇÒ²½âÊÍÁËÄãÈçºÎÄÜʹÓÃÒ»¸öÀà±ðÀ´É趨һ¸öÔ¤ÉèÖµ¸ø
½Ï´ó·¶Î§µÄÇé¿ö£¬ºÍ½«Àà±ðÓë³ÉÔ±½áºÏÆðÀ´ÒԾܾøÔ¤ÉèÖµÔÚÄ³Ð©ÌØÊâÇé¿öÏÂÉè
¶¨¡£
£®Ö¸¶¨ÔÚÈκεط½Ç°¾°É«µÄÔ¤ÉèֵΪ»ÆÉ«
*Foreground:yellow
Õâ¸ö·¶ÀýºÍÏÈǰ·¶ÀýµÄÇø±ðÔÚì¶ÎÒÃÇÊǶÔForegroundÀà±ðÖ¸¶¨Ô¤ÉèÖµ¡£Õâ
¸öÇø±ðÖ®ËùÒÔÖØÒª£¬ÊÇÒòΪ²¢·ÇËùÓÐÔÚÀà±ðForegroundµÄÊôÐÔ£¬ËüµÄ³ÉÔ±Ãû³Æ
¶¼ÊǽÐforeground¡£ÀýÈ磬xclockµÄÖ¸ÕëµÄÑÕÉ«¿ÉÓÉÀà±ðForegroundµÄÊôÐÔÀ´
¾ö¶¨£¬µ«ËüµÄ³ÉÔ±Ãû³Æ²»½Ðforeground¶ø½Ðhand¡£
£®ÎÒÃÇ¿ÉÒÔÓÃÕâÖֽṹÀ´°ïÖúÎÒÃÇÔÚÎļþ²»Çå³þµÄÇé¿öÏ£¬½åÖøÒÔÇ¿ÁÒ¶Ô
±ÈµÄ×éºÏÉ趨ԤÉèÖµÀ´·Ö±æÎï¼þµÄÀà±ð£º
xmh*Command*Foreground:khaki £¨ÍÁ»ÆÉ«£©
xmh*Command*Background:maroon £¨ËÚÉ«£©
Èç´Ë½«Ê¹ËùÓеÄÃüÁîwidget(command widget)³ÊÏÖÐÑÄ¿¶øÃÀÀöµÄÑÕÉ«¡£
£®¶ÔËùÓеı¾ÎÄwidget(text widget) ÊÓ´°É趨һ¸öÔ¤ÉèÖµ£¬³ýÁËxedit
ÊÓ´°ÒÔÍ⣺
*Text*Background:pink
xedit*Text*Background:navy
£®ºÍÉÏÀýÔÀíÏàͬ£º
*Command*Backgrond:green
xman*Command*Backgrond:white
xman*manualBrowser*Command*Background:orange
ÈçºÎ·¢ÏÖ³ÉÔ±ºÍÀà±ðÃû³Æ
ÕâºÜÀ§ÄÑ£¬ÒòΪûÓмòµ¥ºÍÒ»ÖµÄwidgetÃû³Æ¡¢Àà±ð¡¢ÊôÐԵȵȵÄÎļþ£¬
ÎÒÃÇÖ»ÄÜÁгöÿһ¸ö×îºÃµÄÀ´Ô´£¬²¢ÇÒÌáʾÄãÈçºÎ»ñµÃ¸ü¶àµÄ×ÊѶ¡£
Ó¦ÓóÌʽ³ÉÔ±Ãû³Æ(Application instance name) £ºÕâºÜÈÝÒ×--Ëü¾ÍÊÇÄã
Ö´ÐеÄÓ¦ÓóÌʽÃû³Æ¡£Èç¹û´Ë³ÌʽʹÓÃToolkit £¬ÄãÄÜÔÚÃüÁîÁÐÒÔÑ¡Ïî-name
stringÃ÷È·µØÖ¸¶¨Ò»¸ö²»Í¬µÄÓ¦ÓóÌʽÃû³Æ£¬ÎªºÎÄãÐèÈç´Ë×÷£¿ÒòΪËüÈÃÄãÔÚ
µ¥Ò»Ó¦ÓóÌʽÖж¨Ò峬¹ýÒ»×éµÄÔ¤ÉèÖµ£¬¶øÄã¿ÉÒÔʹÓÃ-name ÔÚÆä¼äÇл»¡£Àý
È磬Äã¿ÉÒÔ¶¨ÒåÒ»¸öxterm µÄÕý³£Ô¤ÉèÖµ£¬µ«¶ÔÃûΪdemoµÄÓ¦ÓóÌʽ¶¨ÒåÒ»¸ö
ºÜ´óµÄÊÓ´°³ß´çºÍ´ó³ß´çµÄ×ÖÐÍ£¬Äã¿ÉÒÔÓãº
xterm -name demo
¸øÄãÒ»¸öÓÃÀ´Õ¹Ê¾»ò½ÌѧµÄxterm¡£
Ó¦ÓóÌʽÀà±ðÃû³Æ£¨Application class name£©£ºÕâûÓÐÎļþ˵Ã÷£¬×î¼ò
µ¥ÕÒѰËüµÄ·½·¨ÊÇÆô¶¯Ó¦ÓóÌʽ²¢ÔÚÊÓ´°ÖÐʹÓÃxprop £¬ÐÔÖÊ (property)µ±ÖÐ
µÄWM_CLASS»á¸øÄãÓ¦ÓóÌʽ³ÉÔ±¼°Àà±ðµÄÃû³Æ£¬ÀýÈ磬¶Ôxterm Äã»áµÃµ½£º
WM_CLASS(STRING) = "xterm","XTerm"
Restriction/Object/Widget ³ÉÔ±Ãû³Æ£º³ÌʽµÄÖ¸ÄÏÒ³»áÁгöÄã×îÏëÒª´æ
È¡µÄÎï¼þÃû³Æ£¬ÀýÈ磺xmanÁгötopBox£¬help£¬manualBrowser µÈµÈ£¬Èç¹ûÖ¸
ÄÏÒ³²¢Î´¸øÄã³ÉÔ±Ãû³Æ£¬ÔòΨһµÄ·½·¨ÊÇÈç¹û¿ÉÄÜ£¬Ö±½Ó¿´ËüÃǵÄÔʼ³ÌʽÂë
¡££¨ÕâÖÖ·½·¨Í¨³£ÎÞ·¨ÁîÈËÂúÒ⣩
Restriction/Object/Widget Àà±ðÃû³Æ£ºÕâÈÝÒ×Щ£¬´ó²¿·ÝµÄÖ¸ÄÏÒ³»á¸æ
ËßÄãÓÐÐËȤµÄÎï¼þÀà±ð£¬¼´Ê¹Ã»Óеϰ£¬´ó²¿·ÝµÄÎï¼þÒ²ÊDZê×¼¼¯ºÏÖеÄ
widget£¬µ±Äã´ÓϵͳÖÐʹÓÃËüÃÇʱ£¬Äãͨ³£Äܲ³öËüÃÇÊôì¶ÄÄÒ»¸öÀà±ð¡££¨Àý
È磺Äã´Óδ±»¸æÖªscrollbar µÄ³ÉÔ±Ãû³Æ£¬µ«Ëü99.9% µÄ»ú»áÊÇÀà±ðScrollbar
µÄwidget (³ÉÔ±)¡££©
ÊôÐÔÃû³ÆºÍÀà±ð£º´ó¶àÊýµÄÖ¸ÄÏÒ³»áÁгöÃû³Æ£¬Í¨³£Ò²»áÓÐÀà±ð£¬xclock
µÄÖ¸ÄÏÒ³±ãÊǷdz£Çå³þµÄ·¶Àý¡£
ÎÞÂÛÈçºÎ£¬ÀûÓÃToolkit дµÄ³Ìʽͨ³£Ê¹Óñê×¼µÄwidget£¬ËüµÄÊôÐÔ²¢²»
»áÔÚÖ¸ÄÏÒ³ÖÐÁгö£¬µ«Í¨³£ÓÉÒ»×éÈ«²¿»ò²¿·ÝµÄÊôÐÔ×é³É£¬ÒªÕÒµ½ÕâЩÊôÐÔ£¬
Äã±ØÐëÔÚToolkit ÎļþÖÐѰÕÒ£º
£® "X Toolkit Intrinsics" ÊÖ²áÖеĸ½Â¼E ÁгöËùÓбê×¼µÄ"resource"
£¨Ò²¾ÍÊÇÊôÐÔ£©Ãû³ÆºÍÀà±ð¡£³ÉÔ±Ãû³ÆÏîÄ¿¿´ÆðÀ´ÀàËÆ£º
#define XtNborderWidth "borderWidth"
ËùÓеÄÃû³Æ¾ùÒÔXtN ¿ªÍ·£¬¸úËæÆäááµÄÃû³ÆÔòÒÔСд×Öĸ¿ªÍ·£¬¶øÀà
±ðµÄÃû³ÆÔòÒÔXtC ¿ªÍ·£¬Àà±ðµÄÏîÄ¿¿´ÆðÀ´Ïñ£º
#define XtCBorderWidth "BorderWidth"
ÔÚË«ÒýºÅÖеıãÊÇÃû³Æ£¬Ò²¾ÍÊÇ˵£¬borderWidth ÊdzÉÔ±Ãû³Æ£¬
BorderWidth ÊÇÀà±ðÃû³Æ¡£
£® ²é¿´"X Toolkit Athena Widgets"ÊÖ²áµÄ2.3 ½Ú("Common Arguments
in the Widget Argument list")£¬¿É¿´µ½±»ËùÓÐwidgetʹÓõ½µÄ
resourceÃûµ¥£¬°üÀ¨Ãû³Æ¡¢ÐÍ̬¡¢Ô¤ÉèÖµºÍÒ»¶ÎÎÄ×ÖÐðÊö¡£Ãû³ÆµÄ
¶¨·¨ÈçÉÏËùÊö£¬Ò²¾ÍÊÇÒÔXtN ¿ªÍ·£¬XtN Ö®ááÔòΪÊôÐÔÃû³Æ¡£
£® ²é¿´"X Toolkit Athena Widgets"ÊÖ²áÖжÔwidgetµÄÃèÊö£¬Ã¿Ò»¸ö»á
ÁгöËüËùʹÓõÄ"resource"£¬ºÍÉÏÊöÏàͬ¡£
£® Èç¹ûÒÔÉϾùÐв»Í¨Ê±£¬Äã¿ÉÒԲ鿴 widget µÄÔʼ³Ìʽ (source code),
resources ¿ÉÓõ½µÄ²¿·ÝÁÐÔÚ XtResource ×ÊÁϽṹÖС£ÀýÈ磬Athena
Scrollbar WidgetµÄ³ÌʽÄÚ°üº¬£º
static XtResource resource[]=
{XtNwidth, XtCWidth,...},
{XtNheight, XtCHeight,...}.
¸½Â¼£ÁÖС±ÎļþÖ¸Òý¡±ÖÐ»á¸æËßÄãÈçºÎÕÒµ½ÀàËÆÏñÕâ¸öÏîÄ¿µÄÔʼ³Ìʽ¡£
×¢Ò⣺Resource Manager¶ÔÉ趨µÄ¹æ¸ñ(spec)²¢ÎÞÏÞÖÆ£¬¾ùÄܽÓÊÜ£¬¶Ôì¶Êô
ÐÔ¡¢ÔªËØÃû³Æ»òÀà±ð²¢ÎÞÊÂÏȶ¨ÒåµÄÇåµ¥¡£ÄãËù¸ø¶¨µÄ¹æ¸ñ¿ÉÄܺÁ
ÎÞÒâÒ壬µ«ÎãÐè½éÒ⣬Ëü½«´æÔÚ×ÊÁÏ¿âÖУ¬ËùÒÔÊÂʵÉÏÒ»¸öresource
¹æ¸ñ±»½ÓÊܲ¢²»ÒâζÄãÒѾµÃµ½ÕýÈ·µÄ¹æ¸ñºÍÕýÈ·µÄÊôÐÔ»òÎï¼þ»òÓ¦
ÓóÌʽ£»ÎÞÂÛÈçºÎ£¬ËüµÄÒ»¸öÖØÒªµÄÓÃ;ΪÔÚÊôÐÔδ±»É趨ǰÄã¿ÉÏÈ
É趨ÆäÔ¤ÉèÖµ¡£
15.3.3 Resource¹æ¸ñÖ®·Ö¸ôºÅ¸Å¹Û
Äã¿ÉÒÔÓÃÐǺŠ(*)»òµãºÅ (.)À´·Ö¸ôresource¹æ¸ñµÄÔªËØ£¬ÐǺűȽÏͨÓÃ
һЩ£¬ËüÈÃÄãÖ¸¶¨ÄÇЩ·ûºÏ·¶Î§µÄ°¸ÀýµÄÌØáç¡£ÎÒÃÇ¿´µ½
xclock*foreground:pink
ÓÃÀ´Ö¸¶¨xclockÖÐÈκζ«Î÷¾ùʹÓÃforegroundÊôÐÔ£¬ËùÒÔÔÚ´Ë·¶ÀýÖпÉÒÔ¿´³ö
£»ÐǺžßÓÐͨÓÃ×ÖÔªµÄЧ¹û£¬ÉõÖÁ¿ÉÒÔÔÙÒ»°ã»¯Ò»µã£º
*Foreground:yellow
Ëü½«ÊʺÏÈκÎÓ¦ÓóÌʽ£¬¶ø¾äµãÖ»ÊÇ·Ö¸ô×é¼þ£¬Ëü±íʾÿ¸ö×é¼þ¶¼±ØÐëÒ»Ò»¶Ô
Ó¦£¬ËùÒÔ¹æ¸ñ£º
xman.Manual Browser.Help.background:black
²¢²»»áÊÊÓÃì¶ÃüÁî°´Å¥£¬»òº¬ÓÐxmanµÄÊÓ´°µÄ²»Í¬widget¡£ÔÚÎÒÃǶÔÕâÁ½ÖÖ·Ö
¸ôºÅ×÷¸ü¾«È·ÃèÊöǰ£¬ÎÒÃÇÐèÒª¸üÏêϸµÄ¿´Ò»ÏÂResource ManegerµÄ²Ù×÷¡£
Resource ManagerÈçºÎÔË×÷
ÉÔÔ磬ÎÒÃÇÔøËµ¹ýÒ»¸öÓ¦ÓóÌʽ»á²éѯresourceÔ¤Éè¹æ¸ñµÄ×ÊÁϿ⿴ÊÇ·ñ
·ûºÏ£¬ÏÖÔÚÎÒÃÇÃèÊö²éѯÈçºÎÕÆÎÕÕâЩ¹æ¸ñ¡£
Resource±»Ó¦ÓóÌʽÖеĸö±ðÎï¼þ£¨Í¨³£ÊÇwidget£©ËùʹÓ㬶øÎï¼þÔò±»
ÔÚÓ¦ÓóÌʽÉ϶Ëhierarchicallyixwidget + hierarchy°²ÅÅ£¬È»áá¿ÉÄÜÓÉÒ»¸ö
widget¹ÜÀíÆäËüµÄwidgetÅäÖã¬ÀýÈç±¾ÎÄÊÓ´°¡¢ÃüÁîÑ¡µ¥µÈµÈ¡£ÀýÈçÓ¦ÓóÌʽ
xeditixwidget ÔÚ+ xprognxxeditÖеĽײã½á¹¹Èçͼ15-1£¨Ã¿Ò»ÐÐÎï¼þÃû³ÆÖ®
ááÀ¨»¡ÄÚΪÀà±ðÃû³Æ£©¡£
©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©´
©¦ p181 fig 15.1 ©¦
©¦ ©¦
©¦ ͼ15-1 xeditÖÐÎï¼þ(widget)µÄ½×²ã ©¦
©¸¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©¼
¶Ôÿһ¸öÎï¼þ£¬Ó¦ÓóÌʽÓû²éѯResource×ÊÁÏ¿âʱ£¬Ëü±ØÐë´«µÝÎï¼þµÄ³É
ԱȫÃûºÍÀà±ðÈ«Ãû¸øResource Manager£¬ºÍÎï¼þËùÓõÄһȺÊôÐÔ£¬ºÍÀà±ðÃû³Æ
µÄһȺÊôÐÔ£¬ÀýÈç¶ÔSAVE°´Å¥£¬Ó¦ÓóÌʽָ¶¨£º
full instance name xedit.vpaned.row1.Save
full class name Xedit.VPaned.Box.Command
attribute instance-names borderWidth,cursor,font,label,...
attribute class-names BorderWidth,Cursor,Font,Label,...
¶øááResource Manager¼ì²éÿһ¸öÔÚ×ÊÁÏ¿âÖеĹæ¸ñ£¬¿´ËüÊÇ·ñºÍÓ¦ÓóÌ
ʽËù´«À´µÄÊôÐÔºÍÎï¼þÃû³ÆÏà·û¡£Èç¹ûÏà·û·¢Éú£¬ÔÚ×ÊÁÏ¿âÖйæ¸ñÖµµÄ²¿·Ý»á
´«»ØÓ¦ÓóÌʽ¡£
ÔÚÕâÖÖÏà·ûµÄ²Ù×÷ÖУ¬ÐǺź;äºÅµÄÇø±ð·Ç³£ÖØÒª¡£¼òµ¥À´Ëµ£¬ÎÒÃÇ¿ÉÒÔ
Ïëµ½Resource ManagerÖ»ÊÇÒÔµ¥×ÖΪ»ù×¼À´¶ÔÓ¦ÎÄ×Ö´®£¬¾äºÅÕýÊÇÿһ¸öµ¥×Ö
µÄÇø¸ôºÅ£¬ÐǺÅÒ²ÊÇ·Ö¸ôºÅ£¬µ«²»Í¬µÄÊÇËü¿ÉÒÔͨÓÃ×ÖÔªµÄ·½Ê½´ú±í´ÓÁãµ½ÈÎ
ÒâÊýÄ¿µÄµ¥×Ö£¬¶Ôì¶¶ÔӦΨһµÄÏÞÖÆÊÇÔÚ×ÊÁÏ¿âÖйæ¸ñµÄÊôÐÔ±ØÐè¶ÔÓ¦²éѯӦ
ÓóÌʽËù´«À´µÄÊôÐÔ£¬Äã²»¿É¶ÔÊôÐÔÓÃͨÓÃ×ÖÔª¡£
ÏÖÔÚÄã¿ÉÒÔ¿´µ½²»Í¬µÄ¹æ¸ñÈçºÎ¹¤×÷£º
*foreground:yellow
¿ÉÒÔÓ¦ÓÃì¶ÈκÎÓ¦ÓóÌʽÖеÄÈκÎÎï¼þ¡£ÒòΪÐǺŶÔÓ¦µ½ËùÓеÄÓ¦ÓóÌʽºÍËù
ÓеÄÏÞ¶¨ºÍÎï¼þÃû³Æ¡£
*Command.Foreground:violet
Ó¦ÓÃì¶ÈκÎÓ¦ÓóÌʽÖÐÈκÎCommand ÐÍ̬ÖÐForegroundÀà±ðµÄÈκÎÊôÐÔº
BBSˮľÇ廪վ¡Ã¾«»ªÇø