X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fface.c;h=d2ebdb18090ec0fcccde70ed05d51a7dbf90bc36;hb=3628173afa3d3f97a9fd07277382fa08c9de8970;hp=edbf57a5fb8e64cf675aa8bb73bcd11fae7b7656;hpb=16a40f15525dfb4065c7bd702d98a3cfe6fb9a03;p=m17n%2Fm17n-lib.git diff --git a/src/face.c b/src/face.c index edbf57a..d2ebdb1 100644 --- a/src/face.c +++ b/src/face.c @@ -1,5 +1,5 @@ /* face.c -- face module. - Copyright (C) 2003, 2004 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H15PRO112 @@ -17,7 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with the m17n library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 02111-1307, USA. */ /***en @@ -33,8 +33,8 @@ #Mfoundry, #Mfamily, #Mweight, #Mstyle, #Mstretch, #Madstyle, #Msize, #Mfontset, #Mratio, #Mhook_func, #Mhook_arg - "The face property that belongs to face F and whose key is @c xxx" - may be shortened to "the xxx property of F". + The notation "xxx property of F" means the face property that + belongs to face F and whose key is @c Mxxx. The M-text drawing functions first search an M-text for the text property whose key is the symbol #Mface, then draw the M-text @@ -52,28 +52,25 @@ @addtogroup m17nFace @brief ¥Õ¥§¡¼¥¹¤È¤Ï¡¢M-text ¤Î¸«±É¤¨¤òÀ©¸æ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë. - @e ¥Õ¥§¡¼¥¹ ¤Ï #MFace ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ê¡¢M-text ¤Îɽ¼¨ÊýË¡ - ¤òÀ©¸æ¤¹¤ë¡£¥Õ¥§¡¼¥¹¤Ï¸ÇÄê¸Ä¿ô¤Î @e ¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£ ¤ò»ý¤Ä¡£ - ¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Ï¥­¡¼¤ÈÃͤ«¤é¤Ê¤ë¡£¥­¡¼¤Ï°Ê²¼¤Î¥·¥ó¥Ü¥ë¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£ + @e ¥Õ¥§¡¼¥¹ ¤Ï #MFace ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ê¡¢M-text + ¤Îɽ¼¨ÊýË¡¤òÀ©¸æ¤¹¤ë¡£¥Õ¥§¡¼¥¹¤Ï¸ÇÄê¸Ä¤Î @e ¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£ ¤ò»ý¤Ä¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£Æ±ÍÍ¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Ï¥­¡¼¤ÈÃͤ«¤é¤Ê¤ê¡¢¥­¡¼¤Ï°Ê²¼¤Î¥·¥ó¥Ü¥ë¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£ #Mforeground, #Mbackground, #Mvideomode, #Mhline, #Mbox, #Mfoundry, #Mfamily, #Mweight, #Mstyle, #Mstretch, #Madstyle, #Msize, #Mfontset, #Mratio, #Mhook_func, #Mhook_arg - ¡Ö¥Õ¥§¡¼¥¹ F ¤Î¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¤¦¤Á¥­¡¼¤¬ @c Mxxx ¤Ç¤¢¤ë¤â¤Î¡× - ¤Î¤³¤È¤ò´Êñ¤Ë¡ÖF ¤Î xxx ¥×¥í¥Ñ¥Æ¥£¡×¤È¸Æ¤Ö¤³¤È¤¬¤¢¤ë¡£ + ¡Ö¥Õ¥§¡¼¥¹ F ¤Î¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¤¦¤Á¥­¡¼¤¬ @c Mxxx + ¤Ç¤¢¤ë¤â¤Î¡×¤Î¤³¤È¤ò´Êñ¤Ë¡ÖF ¤Î xxx ¥×¥í¥Ñ¥Æ¥£¡×¤È¸Æ¤Ö¤³¤È¤¬¤¢¤ë¡£ M-text ¤Îɽ¼¨´Ø¿ô¤Ï¡¢¤Þ¤ººÇ½é¤Ë¤½¤Î M-text ¤«¤é¥­¡¼¤¬¥·¥ó¥Ü¥ë #Mface ¤Ç¤¢¤ë¤è¤¦¤Ê¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òõ¤·¡¢¼¡¤Ë¤½¤ÎÃͤ˽¾¤Ã¤Æ - M-text ¤òɽ¼¨¤¹¤ë¡£¤³¤ÎÃͤϥե§¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤Ê¤± - ¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ + M-text ¤òɽ¼¨¤¹¤ë¡£¤³¤ÎÃͤϥե§¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ - M-text ¤¬¡¢#Mface ¤ò¥­¡¼¤È¤¹¤ë¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òÊ£¿ô»ý¤Ã¤Æ¤ª¤ê¡¢ - ¤«¤Ä¤½¤ì¤é¤ÎÃͤδ֤˾×Æͤ¬¤Ê¤¤¤Ê¤é¤Ð¡¢¥Õ¥§¡¼¥¹¾ðÊó¤ÏÁȤ߹ç¤ï¤µ¤ì¤Æ - ÍѤ¤¤é¤ì¤ë¡£ + M-text ¤¬¡¢#Mface + ¤ò¥­¡¼¤È¤¹¤ë¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤òÊ£¿ô»ý¤Ã¤Æ¤ª¤ê¡¢¤«¤Ä¤½¤ì¤é¤ÎÃͤ¬¾×Æͤ·¤Ê¤¤¤Ê¤é¤Ð¡¢¥Õ¥§¡¼¥¹¾ðÊó¤ÏÁȤ߹ç¤ï¤µ¤ì¤ÆÍѤ¤¤é¤ì¤ë¡£ - ¤¢¤ë¥Æ¥­¥¹¥È°À­¤¬¤É¤Î¥Õ¥§¡¼¥¹¤Ë¤è¤Ã¤Æ¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ç - ¥Õ¥©¥ë¥È¥Õ¥§¡¼¥¹¤ÎÃͤ¬ÍѤ¤¤é¤ì¤ë¡£ */ + ¤¢¤ë¥Æ¥­¥¹¥È°À­¤¬¤É¤Î¥Õ¥§¡¼¥¹¤Ë¤è¤Ã¤Æ¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¥Õ¥§¡¼¥¹¤ÎÃͤ¬ÍѤ¤¤é¤ì¤ë¡£ */ /*=*/ @@ -86,6 +83,7 @@ #include #include +#include "config.h" #include "m17n-gui.h" #include "m17n-misc.h" #include "internal.h" @@ -101,41 +99,85 @@ static M17NObjectArray face_table; -static MSymbol Mlatin; +MSymbol Mlatin; static MSymbol M_face_prop_index; -/** From FRAME->realized_face_list, find a plist element whose value - is a realized face realized from FACE and using font RFONT. If - RFONT is NULL, find one from faces for ASCII (which are in the - head of FRAME->realized_face_list), otherwise find one that uses - RFONT. */ +static MPlist *hline_prop_list; +static MPlist *box_prop_list; -static MPlist * -find_realized_face (MFrame *frame, MFace *face, MRealizedFont *rfont) +/** Special hook function pointer that does nothing. */ +static MFaceHookFunc noop_hook; + +/** */ +static MFaceHLineProp * +get_hline_create (MFaceHLineProp *prop) { - MPlist *rface_list; - MRealizedFace *rface; - int i; + MPlist *plist; + MFaceHLineProp *hline; - MPLIST_DO (rface_list, frame->realized_face_list) + if (prop->width == 0) + return MPLIST_VAL (hline_prop_list); + MPLIST_DO (plist, MPLIST_NEXT (hline_prop_list)) { - rface = MPLIST_VAL (rface_list); - if (! rfont) - { - if (rface != rface->ascii_rface) - return NULL; - } - else - { - if (rface->rfont != rfont) - continue; - } - for (i = 0; i < MFACE_RATIO; i++) - if (rface->face.property[i] != face->property[i]) - break; - if (i == MFACE_RATIO) - return rface_list; + hline = MPLIST_VAL (plist); + if (prop->type == hline->type + && prop->width == hline->width + && prop->color == hline->color) + return hline; + } + MSTRUCT_MALLOC (hline, MERROR_FACE); + *hline = *prop; + mplist_push (plist, Mt, hline); + return hline; +} + +static MFaceBoxProp * +get_box_create (MFaceBoxProp *prop) +{ + MPlist *plist; + MFaceBoxProp *box; + + if (prop->width == 0) + return MPLIST_VAL (box_prop_list); + MPLIST_DO (plist, MPLIST_NEXT (box_prop_list)) + { + box = MPLIST_VAL (plist); + if (prop->width == box->width + && prop->color_top == box->color_top + && prop->color_bottom == box->color_bottom + && prop->color_left == box->color_left + && prop->color_right == box->color_right + && prop->inner_hmargin == box->inner_hmargin + && prop->inner_vmargin == box->inner_vmargin + && prop->outer_hmargin == box->inner_hmargin + && prop->inner_vmargin == box->inner_vmargin) + return box; + } + MSTRUCT_MALLOC (box, MERROR_FACE); + *box = *prop; + mplist_push (plist, Mt, box); + return box; +} + +/** From FRAME->realized_face_list, find a realized face based on + FACE. */ + +static MRealizedFace * +find_realized_face (MFrame *frame, MFace *face, MFont *font) +{ + MPlist *plist; + + MPLIST_DO (plist, frame->realized_face_list) + { + MRealizedFace *rface = MPLIST_VAL (plist); + + if (memcmp (rface->face.property, face->property, + sizeof face->property) == 0 + && (rface->font + ? (font && ! memcmp (rface->font, font, sizeof (MFont))) + : ! font)) + return rface; } return NULL; } @@ -147,11 +189,7 @@ free_face (void *object) if (face->property[MFACE_FONTSET]) M17N_OBJECT_UNREF (face->property[MFACE_FONTSET]); - if (face->property[MFACE_HLINE]) - free (face->property[MFACE_HLINE]); - if (face->property[MFACE_BOX]) - free (face->property[MFACE_BOX]); - M17N_OBJECT_UNREF (face->realized_face_list); + M17N_OBJECT_UNREF (face->frame_list); M17N_OBJECT_UNREGISTER (face_table, face); free (object); } @@ -160,32 +198,38 @@ free_face (void *object) static MPlist * serialize_hline (MPlist *plist, MFaceHLineProp *hline) { - MPlist *pl = mplist (); + if (hline->width > 0) + { + MPlist *pl = mplist (); - mplist_add (pl, Minteger, (void *) hline->type); - mplist_add (pl, Minteger, (void *) hline->width); - mplist_add (pl, Msymbol, hline->color); - plist = mplist_add (plist, Mplist, pl); - M17N_OBJECT_UNREF (pl); + mplist_add (pl, Minteger, (void *) hline->type); + mplist_add (pl, Minteger, (void *) hline->width); + mplist_add (pl, Msymbol, hline->color); + plist = mplist_add (plist, Mplist, pl); + M17N_OBJECT_UNREF (pl); + } return plist; } static MPlist * serialize_box (MPlist *plist, MFaceBoxProp *box) { - MPlist *pl = mplist (); - - mplist_add (pl, Minteger, (void *) box->width); - mplist_add (pl, Minteger, (void *) box->inner_hmargin); - mplist_add (pl, Minteger, (void *) box->inner_vmargin); - mplist_add (pl, Minteger, (void *) box->outer_hmargin); - mplist_add (pl, Minteger, (void *) box->outer_vmargin); - mplist_add (pl, Msymbol, box->color_top); - mplist_add (pl, Msymbol, box->color_bottom); - mplist_add (pl, Msymbol, box->color_left); - mplist_add (pl, Msymbol, box->color_right); - plist = mplist_add (plist, Mplist, pl); - M17N_OBJECT_UNREF (pl); + if (box->width > 0) + { + MPlist *pl = mplist (); + + mplist_add (pl, Minteger, (void *) box->width); + mplist_add (pl, Minteger, (void *) box->inner_hmargin); + mplist_add (pl, Minteger, (void *) box->inner_vmargin); + mplist_add (pl, Minteger, (void *) box->outer_hmargin); + mplist_add (pl, Minteger, (void *) box->outer_vmargin); + mplist_add (pl, Msymbol, box->color_top); + mplist_add (pl, Msymbol, box->color_bottom); + mplist_add (pl, Msymbol, box->color_left); + mplist_add (pl, Msymbol, box->color_right); + plist = mplist_add (plist, Mplist, pl); + M17N_OBJECT_UNREF (pl); + } return plist; } @@ -199,7 +243,7 @@ serialize_face (void *val) MSymbol *key; MSymbol *type; MPlist *(*func) (MPlist *plist, void *val); - } serializer[MFACE_PROPERTY_MAX] + } serializer[MFACE_RATIO + 1] = { { &Mfoundry, &Msymbol }, { &Mfamily, &Msymbol }, { &Mweight, &Msymbol }, @@ -213,11 +257,9 @@ serialize_face (void *val) { &Mhline, NULL }, { &Mbox, NULL }, { &Mvideomode, &Msymbol }, - { NULL, NULL}, /* MFACE_HOOK_FUNC */ - { NULL, NULL}, /* MFACE_HOOK_ARG */ { &Mratio, &Minteger } }; - for (i = 0; i < MFACE_PROPERTY_MAX; i++) + for (i = 0; i <= MFACE_RATIO; i++) if (face->property[i] && serializer[i].key) { pl = mplist_add (pl, Msymbol, *serializer[i].key); @@ -319,7 +361,7 @@ deserialize_face (MPlist *plist) plist = MPLIST_NEXT (plist); if (MPLIST_TAIL_P (plist)) break; - if (index < 0 || index >= MFACE_PROPERTY_MAX) + if (index < 0 || index > MFACE_RATIO) continue; if (key == Mfoundry || key == Mfamily || key == Mweight || key == Mstyle || key == Mstretch || key == Madstyle @@ -370,11 +412,15 @@ int mface__init () { int i; + MFaceHLineProp *hline; + MFaceBoxProp *box; - face_table.count = 0; + M17N_OBJECT_ADD_ARRAY (face_table, "Face"); Mface = msymbol_as_managing_key ("face"); - msymbol_put (Mface, Mtext_prop_serializer, (void *) serialize_face); - msymbol_put (Mface, Mtext_prop_deserializer, (void *) deserialize_face); + msymbol_put_func (Mface, Mtext_prop_serializer, + M17N_FUNC (serialize_face)); + msymbol_put_func (Mface, Mtext_prop_deserializer, + M17N_FUNC (deserialize_face)); Mforeground = msymbol ("foreground"); Mbackground = msymbol ("background"); @@ -396,7 +442,7 @@ mface__init () MSymbol *key; /* Index (enum face_property) of the face property. */ int index; - } mface_prop_data[MFACE_PROPERTY_MAX] = + } mface_prop_data[MFACE_HOOK_ARG + 1] = { { &Mfoundry, MFACE_FOUNDRY }, { &Mfamily, MFACE_FAMILY }, { &Mweight, MFACE_WEIGHT }, @@ -410,10 +456,8 @@ mface__init () { &Mhline, MFACE_HLINE }, { &Mbox, MFACE_BOX }, { &Mvideomode, MFACE_VIDEOMODE }, - { &Mhook_func, MFACE_HOOK_FUNC }, - { &Mhook_arg, MFACE_HOOK_ARG }, { &Mratio, MFACE_RATIO }, - }; + { &Mhook_arg, MFACE_HOOK_ARG } }; for (i = 0; i < MFACE_PROPERTY_MAX; i++) /* We add one to distinguish it from no-property. */ @@ -421,15 +465,28 @@ mface__init () (void *) (mface_prop_data[i].index + 1)); } + hline_prop_list = mplist (); + MSTRUCT_CALLOC (hline, MERROR_FACE); + mplist_push (hline_prop_list, Mt, hline); + box_prop_list = mplist (); + MSTRUCT_CALLOC (box, MERROR_FACE); + mplist_push (box_prop_list, Mt, box); + mface__default = mface (); + mface__default->property[MFACE_FOUNDRY] = msymbol ("misc"); + mface__default->property[MFACE_FAMILY] = msymbol ("fixed"); mface__default->property[MFACE_WEIGHT] = msymbol ("medium"); mface__default->property[MFACE_STYLE] = msymbol ("r"); mface__default->property[MFACE_STRETCH] = msymbol ("normal"); + mface__default->property[MFACE_ADSTYLE] = msymbol (""); mface__default->property[MFACE_SIZE] = (void *) 120; mface__default->property[MFACE_FONTSET] = mfontset (NULL); - M17N_OBJECT_REF (mface__default->property[MFACE_FONTSET]); - /* mface__default->property[MFACE_FOREGROUND] =msymbol ("black"); */ - /* mface__default->property[MFACE_BACKGROUND] =msymbol ("white"); */ + mface__default->property[MFACE_FOREGROUND] = msymbol ("black"); + mface__default->property[MFACE_BACKGROUND] = msymbol ("white"); + mface__default->property[MFACE_HLINE] = hline; + mface__default->property[MFACE_BOX] = box; + mface__default->property[MFACE_VIDEOMODE] = Mnormal; + mface__default->hook = noop_hook; mface_normal_video = mface (); mface_normal_video->property[MFACE_VIDEOMODE] = (void *) Mnormal; @@ -438,14 +495,13 @@ mface__init () mface_reverse_video->property[MFACE_VIDEOMODE] = (void *) Mreverse; { - MFaceHLineProp *hline_prop; + MFaceHLineProp hline_prop; - MSTRUCT_MALLOC (hline_prop, MERROR_FACE); - hline_prop->type = MFACE_HLINE_UNDER; - hline_prop->width = 1; - hline_prop->color = Mnil; + hline_prop.type = MFACE_HLINE_UNDER; + hline_prop.width = 1; + hline_prop.color = Mnil; mface_underline = mface (); - mface_underline->property[MFACE_HLINE] = (void *) hline_prop; + mface_put_prop (mface_underline, Mhline, &hline_prop); } mface_medium = mface (); @@ -500,6 +556,8 @@ mface__init () void mface__fini () { + MPlist *plist; + M17N_OBJECT_UNREF (mface__default); M17N_OBJECT_UNREF (mface_normal_video); M17N_OBJECT_UNREF (mface_reverse_video); @@ -523,29 +581,40 @@ mface__fini () M17N_OBJECT_UNREF (mface_cyan); M17N_OBJECT_UNREF (mface_yellow); M17N_OBJECT_UNREF (mface_magenta); - free (work_gstring.glyphs); - mdebug__report_object ("Face", &face_table); + MPLIST_DO (plist, hline_prop_list) + free (MPLIST_VAL (plist)); + M17N_OBJECT_UNREF (hline_prop_list); + MPLIST_DO (plist, box_prop_list) + free (MPLIST_VAL (plist)); + M17N_OBJECT_UNREF (box_prop_list); + + free (work_gstring.glyphs); } -/** Return a realized face for ASCII characters from NUM number of - base faces pointed by FACES on the frame FRAME. */ +/** Return a face realized from NUM number of base faces pointed by + FACES on the frame FRAME. If SIZE is nonzero, it specifies the + maximum font size. */ MRealizedFace * -mface__realize (MFrame *frame, MFace **faces, int num, - MSymbol language, MSymbol charset, int size) +mface__realize (MFrame *frame, MFace **faces, int num, int size, MFont *font) { MRealizedFace *rface; MRealizedFont *rfont; MFace merged_face = *(frame->face); - void **props; int i, j; - MGlyph g; - MPlist *plist; + MFaceHookFunc func; + MFont spec; - if (num == 0 && language == Mnil && charset == Mnil && frame->rface) + if (num == 0 && frame->rface && ! font) return frame->rface; + if (! mplist_find_by_value (frame->face->frame_list, frame)) + mplist_push (frame->face->frame_list, Mt, frame); + for (i = 0; i < num; i++) + if (! mplist_find_by_value (faces[i]->frame_list, frame)) + mplist_push (faces[i]->frame_list, Mt, frame); + for (i = 0; i < MFACE_PROPERTY_MAX; i++) for (j = num - 1; j >= 0; j--) if (faces[j]->property[i]) @@ -554,79 +623,142 @@ mface__realize (MFrame *frame, MFace **faces, int num, break; } - if (merged_face.property[MFACE_RATIO]) + if (font) { - int font_size = (int) merged_face.property[MFACE_SIZE]; + if (font->type != MFONT_TYPE_REALIZED) + font = mfont_copy (font); + for (i = 0; i <= MFACE_ADSTYLE; i++) + if (font->property[i]) + merged_face.property[i] = FONT_PROPERTY (font, i); + if (font->size) + { + int font_size; - font_size *= (int) merged_face.property[MFACE_RATIO]; - font_size /= 100; - merged_face.property[MFACE_SIZE] = (void *) font_size; + if (font->size < 0) + font->size = ((double) (- font->size)) * frame->dpi / 72.27 + 0.5; + font_size = font->size; + merged_face.property[MFACE_SIZE] = (void *) font_size; + merged_face.property[MFACE_RATIO] = (void *) 0; + } } - plist = find_realized_face (frame, &merged_face, NULL); - if (plist) + if (! font || ! font->size) { - rface = MPLIST_VAL (plist); - if (! rface->need_update) - return rface->ascii_rface; - mplist_pop (plist); - while (! MPLIST_TAIL_P (plist)) - { - if (((MRealizedFace *) MPLIST_VAL (plist))->ascii_rface == rface) - { - mface__free_realized ((MRealizedFace *) MPLIST_VAL (plist)); - mplist_pop (plist); - } - else - plist = MPLIST_NEXT (plist); - } - for (i = 0; i < num; i++) + double font_size = (int) merged_face.property[MFACE_SIZE]; + int ifont_size; + + if (font_size < 0) + font_size = - font_size * frame->dpi / 72.27; + if (merged_face.property[MFACE_RATIO] + && (int) merged_face.property[MFACE_RATIO] != 100) { - plist = mplist_find_by_value (faces[j]->realized_face_list, rface); - if (plist) - mplist_pop (plist); + font_size *= (int) merged_face.property[MFACE_RATIO]; + font_size /= 100; } - mface__free_realized (rface); + ifont_size = font_size + 0.5; + merged_face.property[MFACE_SIZE] = (void *) ifont_size; + merged_face.property[MFACE_RATIO] = (void *) 0; } - MSTRUCT_CALLOC (rface, MERROR_FACE); - - for (i = 0; i < num; i++) + merged_face.property[MFACE_FOUNDRY] = Mnil; + rface = find_realized_face (frame, &merged_face, font); + if (rface) { - MPlist *plist = faces[i]->realized_face_list; - - if (! plist) - faces[i]->realized_face_list = plist = mplist (); - mplist_push (plist, Mt, rface); + if (font && font->type != MFONT_TYPE_REALIZED) + free (font); + return rface; } - + MSTRUCT_CALLOC (rface, MERROR_FACE); + mplist_push (frame->realized_face_list, Mt, rface); rface->frame = frame; rface->face = merged_face; - rface->need_update = 0; - props = rface->face.property; - - rface->rfontset = mfont__realize_fontset (frame, - (MFontset *) props[MFACE_FONTSET], - &merged_face); - g.c = ' '; - num = 1; - rfont = mfont__lookup_fontset (rface->rfontset, &g, &num, - msymbol ("latin"), language, Mnil, - size); + rface->font = font; + + if (font) + { + if (font->type == MFONT_TYPE_SPEC) + rfont = (MRealizedFont *) mfont_find (frame, font, NULL, 0); + else if (font->type == MFONT_TYPE_OBJECT) + { + MFONT_INIT (&spec); + spec.size = (int) merged_face.property[MFONT_SIZE]; + if (font->property[MFONT_REGISTRY]) + spec.property[MFONT_REGISTRY] = font->property[MFONT_REGISTRY]; + else + mfont_put_prop (&spec, Mregistry, + (font->source == MFONT_SOURCE_X + ? Miso8859_1 : Municode_bmp)); + rfont = mfont__open (frame, font, &spec); + } + else + rfont = (MRealizedFont *) font; + } + else + { + MFontset *fontset = (MFontset *) merged_face.property[MFACE_FONTSET]; + + rface->rfontset = mfont__realize_fontset (frame, fontset, &merged_face, + font); + rfont = NULL; + mfont__set_spec_from_face (&spec, &merged_face); + mfont_put_prop (&spec, Mregistry, Municode_bmp); + spec.source = MFONT_SOURCE_FT; + font = mfont__select (frame, &spec, 0); + if (font) + rfont = mfont__open (frame, font, &spec); + if (! rfont) + { + mfont_put_prop (&spec, Mregistry, Miso8859_1); + spec.source = MFONT_SOURCE_X; + font = mfont__select (frame, &spec, 0); + if (font) + rfont = mfont__open (frame, font, &spec); + } + if (! rfont) + { + num = 0; + rfont = mfont__lookup_fontset (rface->rfontset, NULL, &num, + Mlatin, Mnil, Mnil, size, 0); + } + } if (rfont) { rface->rfont = rfont; - g.otf_encoded = 0; - work_gstring.glyphs[0] = g; + rface->layouter = rfont->layouter; + rfont->layouter = Mnil; work_gstring.glyphs[0].rface = rface; - work_gstring.glyphs[1].code = MCHAR_INVALID_CODE; - work_gstring.glyphs[1].rface = rface; - mfont__get_metric (&work_gstring, 0, 2); - rface->space_width = work_gstring.glyphs[0].width; - rface->ascent = work_gstring.glyphs[1].ascent; - rface->descent = work_gstring.glyphs[1].descent; + work_gstring.glyphs[0].g.code = MCHAR_INVALID_CODE; + work_gstring.glyphs[0].g.measured = 0; + mfont__get_metric (&work_gstring, 0, 1); + rface->ascent = work_gstring.glyphs[0].g.ascent; + rface->descent = work_gstring.glyphs[0].g.descent; + work_gstring.glyphs[0].g.code + = mfont__encode_char (frame, (MFont *) rfont, NULL, ' '); + if (work_gstring.glyphs[0].g.code != MCHAR_INVALID_CODE) + { + work_gstring.glyphs[0].g.measured = 0; + mfont__get_metric (&work_gstring, 0, 1); + rface->space_width = work_gstring.glyphs[0].g.xadv; + } + else + rface->space_width = rfont->spec.size / 10; + if (rfont->average_width) + rface->average_width = rfont->average_width >> 6; + else + { + work_gstring.glyphs[0].g.code + = mfont__encode_char (frame, (MFont *) rfont, NULL, 'x'); + if (work_gstring.glyphs[0].g.code != MCHAR_INVALID_CODE) + { + work_gstring.glyphs[0].g.measured = 0; + mfont__get_metric (&work_gstring, 0, 1); + rface->average_width = work_gstring.glyphs[0].g.xadv; + } + else + rface->average_width = rface->space_width; + } } else { @@ -634,21 +766,30 @@ mface__realize (MFrame *frame, MFace **faces, int num, rface->space_width = frame->space_width; } - rface->hline = (MFaceHLineProp *) props[MFACE_HLINE]; - rface->box = (MFaceBoxProp *) props[MFACE_BOX]; + rface->hline = (MFaceHLineProp *) merged_face.property[MFACE_HLINE]; + if (rface->hline && rface->hline->width == 0) + rface->hline = NULL; + rface->box = (MFaceBoxProp *) merged_face.property[MFACE_BOX]; + if (rface->box && rface->box->width == 0) + rface->box = NULL; rface->ascii_rface = rface; - mwin__realize_face (rface); + (*frame->driver->realize_face) (rface); - mplist_push (frame->realized_face_list, Mt, rface); + func = rface->face.hook; + if (func && func != noop_hook) + (func) (&(rface->face), rface->info, rface->face.property[MFACE_HOOK_ARG]); + rface->non_ascii_list = mplist (); if (rface->rfont) { - MSTRUCT_CALLOC (rface->nofont_rface, MERROR_FACE); - *rface->nofont_rface = *rface; - rface->nofont_rface->rfont = NULL; + MRealizedFace *nofont; + + MSTRUCT_CALLOC (nofont, MERROR_FACE); + *nofont = *rface; + nofont->non_ascii_list = NULL; + nofont->rfont = NULL; + mplist_add (rface->non_ascii_list, Mt, nofont); } - else - rface->nofont_rface = rface; return rface; } @@ -658,65 +799,170 @@ MGlyph * mface__for_chars (MSymbol script, MSymbol language, MSymbol charset, MGlyph *from_g, MGlyph *to_g, int size) { - MRealizedFace *rface; - MRealizedFont *rfont; - int num = to_g - from_g, i; - MPlist *plist; + MRealizedFont *rfont = from_g->rface->rfont; + MSymbol layouter; + int num = to_g - from_g; + int i; - rfont = mfont__lookup_fontset (from_g->rface->rfontset, from_g, &num, - script, language, charset, size); - if (! rfont) + if (from_g->rface->font) { - from_g->rface = from_g->rface->nofont_rface; - return (from_g + 1); + MRealizedFace *rface = from_g->rface, *new; + + if (! rfont) + rfont = mfontset__get_font (rface->frame, + rface->face.property[MFACE_FONTSET], + script, language, + rface->font, NULL); + else if (script != Mlatin) + rfont = mfontset__get_font (rface->frame, + rface->face.property[MFACE_FONTSET], + script, language, + (MFont *) rfont, NULL); + if (! rfont) + { + for (; from_g < to_g && from_g->rface->font; from_g++) + from_g->g.code = MCHAR_INVALID_CODE; + } + else + { + if (rface->rfont == rfont && rfont->layouter == Mnil) + new = rface; + else + { + MSTRUCT_MALLOC (new, MERROR_FACE); + mplist_push (rface->non_ascii_list, Mt, new); + *new = *rface; + new->rfont = rfont; + new->layouter = rfont->layouter; + rfont->layouter = Mnil; + new->non_ascii_list = NULL; + new->ascent = rfont->ascent >> 6; + new->descent = rfont->descent >> 6; + } + for (; from_g < to_g && from_g->rface->font; from_g++) + { + from_g->rface = new; + if (new->layouter) + { + MFLT *flt = mflt_get (new->layouter); + MCharTable *coverage; + + if (! flt + || ((coverage = mflt_coverage (flt)) + && ! (from_g->g.code + = (unsigned) mchartable_lookup (coverage, + from_g->g.c)))) + { + from_g->rface = rface; + from_g->g.code = mfont__encode_char (rfont->frame, + (MFont *) rfont, + NULL, from_g->g.c); + } + } + else + from_g->g.code = mfont__encode_char (rfont->frame, + (MFont *) rfont, + NULL, from_g->g.c); + } + } + return from_g; } - if (from_g->rface->ascii_rface->rfont == rfont) - rface = from_g->rface->ascii_rface; - else + + if (rfont && script == Mlatin) { - plist = find_realized_face (from_g->rface->frame, &(from_g->rface->face), - rfont); - if (plist) - rface = MPLIST_VAL (plist); - else - rface = NULL; + for (i = 0; i < num; i++) + { + unsigned code = mfont__encode_char (rfont->frame, (MFont *) rfont, + NULL, from_g[i].g.c); + if (code == MCHAR_INVALID_CODE) + break; + from_g[i].g.code = code; + } + if (i == num || from_g[i].rface->font) + return from_g + i; } - if (! rface) + rfont = mfont__lookup_fontset (from_g->rface->rfontset, from_g, &num, + script, language, charset, size, 0); + if (rfont) { - MSTRUCT_MALLOC (rface, MERROR_FACE); - *rface = *from_g->rface->ascii_rface; - rface->rfont = rfont; - work_gstring.glyphs[0].code = MCHAR_INVALID_CODE; - work_gstring.glyphs[0].rface = rface; - mfont__get_metric (&work_gstring, 0, 1); - rface->ascent = work_gstring.glyphs[0].ascent; - rface->descent = work_gstring.glyphs[0].descent; - mwin__realize_face (rface); - mplist_add (from_g->rface->frame->realized_face_list, Mt, rface); + layouter = rfont->layouter; + rfont->layouter = Mnil; } + else + { + from_g->g.code = MCHAR_INVALID_CODE; + num = 1; + rfont = NULL; + layouter = Mnil; + } + + to_g = from_g + num; + while (from_g < to_g) + { + MGlyph *g = from_g; + MRealizedFace *rface = from_g++->rface; - for (i = 0; i < num; i++, from_g++) - from_g->rface = rface; - return from_g; + while (from_g < to_g && rface == from_g->rface) from_g++; + if (rface->rfont != rfont + || rface->layouter != layouter) + { + MPlist *plist = mplist_find_by_value (rface->non_ascii_list, rfont); + MRealizedFace *new = NULL; + + while (plist) + { + new = MPLIST_VAL (plist); + if (new->layouter == layouter) + break; + plist = mplist_find_by_value (MPLIST_NEXT (plist), rfont); + } + if (! plist) + { + MSTRUCT_MALLOC (new, MERROR_FACE); + mplist_push (rface->non_ascii_list, Mt, new); + *new = *rface; + new->rfont = rfont; + new->layouter = layouter; + new->non_ascii_list = NULL; + if (rfont) + { + new->ascent = rfont->ascent >> 6; + new->descent = rfont->descent >> 6; + } + } + while (g < from_g) + g++->rface = new; + } + } + return to_g; } void mface__free_realized (MRealizedFace *rface) { - mwin__free_realized_face (rface); - if (rface == rface->ascii_rface) - { - if (! rface->nofont_rface) - mdebug_hook (); - else - free (rface->nofont_rface); - rface->nofont_rface = NULL; - } + MPlist *plist; + + MPLIST_DO (plist, rface->non_ascii_list) + free (MPLIST_VAL (plist)); + M17N_OBJECT_UNREF (rface->non_ascii_list); + if (rface->font && rface->font->type != MFONT_TYPE_REALIZED) + free (rface->font); free (rface); } +void +mface__update_frame_face (MFrame *frame) +{ + frame->rface = NULL; + frame->rface = mface__realize (frame, NULL, 0, 0, NULL); + frame->space_width = frame->rface->space_width; + frame->average_width = frame->rface->average_width; + frame->ascent = frame->rface->ascent; + frame->descent = frame->rface->descent; +} + /*** @} */ #endif /* !FOR_DOXYGEN || DOXYGEN_INTERNAL_MODULE */ @@ -741,15 +987,14 @@ mface__free_realized (MRealizedFace *rface) #Mnil means that the face does not specify a foreground color. Otherwise, the foreground of an M-text is drawn by the specified color. */ - /***ja @brief Á°·Ê¿§¤ò»ØÄꤹ¤ë¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¡¼¤Î¥­¡¼. ÊÑ¿ô #Mforeground ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£ ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϡ¢¿§Ì¾¤ò̾Á°¤È¤·¤Æ»ý¤Ä¥·¥ó¥Ü¥ë¤« #Mnil ¤Ç¤¢¤ë¡£ - #Mnil ¤Î¾ì¹ç¡¢Á°·Ê¿§¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð M-text ¤ÎÁ°·Ê¤Ï - »ØÄꤵ¤ì¤¿¿§¤Çɽ¼¨¤µ¤ì¤ë¡£ */ + #Mnil ¤Î¾ì¹ç¡¢Á°·Ê¿§¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð M-text + ¤ÎÁ°·Ê¤Ï»ØÄꤵ¤ì¤¿¿§¤Çɽ¼¨¤µ¤ì¤ë¡£ */ MSymbol Mforeground; @@ -763,15 +1008,14 @@ MSymbol Mforeground; #Mnil means that the face does not specify a background color. Otherwise, the background of an M-text is drawn by the specified color. */ - /***ja @brief ÇØ·Ê¿§¤ò»ØÄꤹ¤ë¤¿¤á¤Î¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¡¼¤Î¥­¡¼. ÊÑ¿ô #Mbackground ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£ ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϡ¢¿§Ì¾¤ò̾Á°¤È¤·¤Æ»ý¤Ä¥·¥ó¥Ü¥ë¤« #Mnil ¤Ç¤¢¤ë¡£ - #Mnil ¤Î¾ì¹ç¡¢ÇØ·Ê¿§¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð M-text ¤ÎÇØ·Ê¤Ï - »ØÄꤵ¤ì¤¿¿§¤Çɽ¼¨¤µ¤ì¤ë¡£ */ + #Mnil ¤Î¾ì¹ç¡¢ÇØ·Ê¿§¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð M-text + ¤ÎÇطʤϻØÄꤵ¤ì¤¿¿§¤Çɽ¼¨¤µ¤ì¤ë¡£ */ MSymbol Mbackground; @@ -779,29 +1023,27 @@ MSymbol Mbackground; @brief Key of a face property specifying video mode. The variable #Mvideomode is used as a key of face property. The - property value must be #Mnormal, #Mreverse, or #Mnil. + property value must be @b Mnormal, @b Mreverse, or #Mnil. - #Mnormal means that an M-text is drawn in normal video mode + @b Mnormal means that an M-text is drawn in normal video mode (i.e. the foreground is drawn by foreground color, the background is drawn by background color). - #Mreverse means that an M-text is drawn in reverse video mode + @b Mreverse means that an M-text is drawn in reverse video mode (i.e. the foreground is drawn by background color, the background is drawn by foreground color). #Mnil means that the face does not specify a video mode. */ - /***ja @brief ¥Ó¥Ç¥ª¥â¡¼¥É¤ò»ØÄꤹ¤ë¤¿¤á¤Î¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¡¼¤Î¥­¡¼. - ÊÑ¿ô #Mvideomode ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£ - ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϡ¢#Mnormal, #Mreverse, #Mnil ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ + ÊÑ¿ô #Mvideomode ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϡ¢ + @b Mnormal, @b Mreverse, #Mnil ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - #Mnormal ¤Î¾ì¹ç¤Ï¡¢M-text ¤Ïɸ½à¤Î¥Ó¥Ç¥ª¥â¡¼¥É¡ÊÁ°·Ê¤òÁ°·Ê¿§¤Ç¡¢ÇØ - ·Ê¤òÇØ·Ê¿§¤Ç¡Ë¤Çɽ¼¨¤¹¤ë¡£ + @b Mnormal ¤Î¾ì¹ç¤Ï¡¢M-text + ¤òɸ½à¤Î¥Ó¥Ç¥ª¥â¡¼¥É¡ÊÁ°·Ê¤òÁ°·Ê¿§¤Ç¡¢ÇطʤòÇØ·Ê¿§¤Ç¡Ë¤Çɽ¼¨¤¹¤ë¡£ - #Mreverse ¤Î¾ì¹ç¤Ï¥ê¥Ð¡¼¥¹¥Ó¥Ç¥ª¥â¡¼¥É¤Ç¡ÊÁ°·Ê¤òÇØ·Ê¿§¤Ç¡¢ÇطʤòÁ° - ·Ê¿§¤Ç¡Ëɽ¼¨¤¹¤ë¡£ + @b Mreverse ¤Î¾ì¹ç¤Ï¥ê¥Ð¡¼¥¹¥Ó¥Ç¥ª¥â¡¼¥É¤Ç¡ÊÁ°·Ê¤òÇØ·Ê¿§¤Ç¡¢ÇطʤòÁ°·Ê¿§¤Ç¡Ëɽ¼¨¤¹¤ë¡£ #Mnil ¤Î¾ì¹ç¤Ï¥Ó¥Ç¥ª¥â¡¼¥É¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ */ @@ -825,9 +1067,8 @@ MSymbol Mvideomode; ¤ÏÀ°¿ôÃͤǤʤ¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ Ãͤ¬0¤Ê¤é¤Ð¡¢¥Õ¥©¥ó¥È¥µ¥¤¥º¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢M-text - ¤Ï(FONTSIZE * RATIO / 100) ¤È¤¤¤¦¥µ¥¤¥º¤Î¥Õ¥©¥ó¥È¤Çɽ¼¨¤µ¤ì¤ë¡£¤³ - ¤³¤Ç FONTSIZE ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¡¼ #Msize ¤Ç»ØÄꤵ¤ì¤¿¥µ¥¤¥º¤Ç¤¢ - ¤ë¡£ */ + ¤Ï(FONTSIZE * RATIO / 100) ¤È¤¤¤¦¥µ¥¤¥º¤Î¥Õ¥©¥ó¥È¤Çɽ¼¨¤µ¤ì¤ë¡£ + FONTSIZE ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¡¼#Msize ¤Ç»ØÄꤵ¤ì¤¿¥µ¥¤¥º¤Ç¤¢¤ë¡£ */ MSymbol Mratio; @@ -841,17 +1082,15 @@ MSymbol Mratio; The value @c NULL means that the face does not specify this property. Otherwise, an M-text is drawn with a horizontal line by a way specified by the object that the value points to. */ - /***ja @brief ¿åÊ¿Àþ¤ò»ØÄꤹ¤ë¤¿¤á¤Î¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¡¼¤Î¥­¡¼. ÊÑ¿ô #Mhline ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£ÃÍ¤Ï - #MFaceHLineProp ·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤« @c NULL ¤Ç¤Ê¤¯¤Æ¤Ï¤Ê - ¤é¤Ê¤¤¡£ + #MFaceHLineProp ·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤« @c NULL ¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - Ãͤ¬ @c NULL ¤Ê¤é¤Ð¡¢¤³¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÃÍ - ¤¬»Ø¤¹¥ª¥Ö¥¸¥§¥¯¥È¤Ë»ØÄꤵ¤ì¤¿¤è¤¦¤Ë¿åÊ¿Àþ¤òÉղä·¤Æ M-text ¤òɽ¼¨ - ¤¹¤ë¡£*/ + Ãͤ¬ @c NULL ¤Ê¤é¤Ð¡¢¤³¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ + ¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÃͤ¬»Ø¤¹¥ª¥Ö¥¸¥§¥¯¥È¤Ë»ØÄꤵ¤ì¤¿¤è¤¦¤Ë¿åÊ¿Àþ¤òÉղä·¤Æ M-text + ¤òɽ¼¨¤¹¤ë¡£*/ MSymbol Mhline; @@ -864,17 +1103,15 @@ MSymbol Mhline; The value @c NULL means that the face does not specify a box. Otherwise, an M-text is drawn with a surrounding box by a way specified by the object that the value points to. */ - /***ja @brief °Ï¤ßÏȤò»ØÄꤹ¤ë¤¿¤á¤Î¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¡¼¤Î¥­¡¼. ÊÑ¿ô #Mbox ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£ÃÍ¤Ï - #MFaceBoxProp ·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤« @c NULL ¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é - ¤Ê¤¤¡£ + #MFaceBoxProp ·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤« @c NULL ¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - Ãͤ¬ @c NULL ¤Ê¤é¤Ð¡¢¤³¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÃÍ - ¤¬»Ø¤¹¥ª¥Ö¥¸¥§¥¯¥È¤Ë»ØÄꤵ¤ì¤¿¤è¤¦¤Ë°Ï¤ßÏȤòÉղä·¤Æ M-text ¤òɽ¼¨ - ¤¹¤ë¡£*/ + Ãͤ¬ @c NULL ¤Ê¤é¤Ð¡¢¤³¤Î¥Õ¥§¡¼¥¹¤Ï°Ï¤ßÏȤò»ØÄꤷ¤Æ¤¤¤Ê¤¤¡£ + ¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÃͤ¬»Ø¤¹¥ª¥Ö¥¸¥§¥¯¥È¤Ë»ØÄꤵ¤ì¤¿¤è¤¦¤Ë°Ï¤ßÏȤòÉղä·¤Æ + M-text ¤òɽ¼¨¤¹¤ë¡£*/ MSymbol Mbox; @@ -888,15 +1125,14 @@ MSymbol Mbox; The value @c NULL means that the face does not specify a fontset. Otherwise, an M-text is drawn with a font selected from what specified in the fontset. */ - /***ja @brief ¥Õ¥©¥ó¥È¥»¥Ã¥È¤ò»ØÄꤹ¤ë¤¿¤á¤Î¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¡¼¤Î¥­¡¼. ÊÑ¿ô #Mfontset ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£ÃÍ¤Ï #Mfontset ·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤« @c NULL ¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - Ãͤ¬ @c NULL ¤Ê¤é¤Ð¡¢¥Õ¥©¥ó¥È¥»¥Ã¥È¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÃÍ - ¤¬»Ø¤¹¥ª¥Ö¥¸¥§¥¯¥È¤Ë»ØÄꤵ¤ì¤¿¥Õ¥©¥ó¥È¥»¥Ã¥È¤«¤éÁª¤ó¤À¥Õ¥©¥ó¥È¤Ç + Ãͤ¬ @c NULL ¤Ê¤é¤Ð¡¢¥Õ¥©¥ó¥È¥»¥Ã¥È¤Ï»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£ + ¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÃͤ¬»Ø¤¹¥ª¥Ö¥¸¥§¥¯¥È¤Ë»ØÄꤵ¤ì¤¿¥Õ¥©¥ó¥È¥»¥Ã¥È¤«¤éÁª¤ó¤À¥Õ¥©¥ó¥È¤Ç M-text ¤òɽ¼¨¤¹¤ë¡£*/ MSymbol Mfontset; @@ -916,8 +1152,8 @@ MSymbol Mfontset; ÊÑ¿ô #Mhook_func ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£ÃÍ¤Ï #MFaceHookFunc ·¿¤Î´Ø¿ô¤« @c NULL ¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ - Ãͤ¬ @c NULL ¤Ê¤é¤Ð¡¢¥Õ¥Ã¥¯¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¥Õ¥§¡¼¥¹¤ò - ¼Â¸½¤¹¤ëÁ°¤Ë»ØÄꤷ¤¿´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¡£ */ + Ãͤ¬ @c NULL ¤Ê¤é¤Ð¡¢¥Õ¥Ã¥¯¤Ï»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£ + ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¥Õ¥§¡¼¥¹¤ò¼Â¸½¤¹¤ëÁ°¤Ë»ØÄꤵ¤ì¤¿´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¡£ */ MSymbol Mhook_func; /***en @@ -929,9 +1165,8 @@ MSymbol Mhook_func; /***ja @brief ¥Õ¥Ã¥¯¤Î°ú¿ô¤ò»ØÄꤹ¤ë¤¿¤á¤Î¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¡¼¤Î¥­¡¼. - ÊÑ¿ô #Mhook_arg ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£ÃÍ¤Ï - ²¿¤Ç¤â¤è¤¯¡¢¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£ #Mhook_func ¤Ç»ØÄꤵ¤ì¤ë´Ø¿ô¤ËÅϤµ - ¤ì¤ë¡£ */ + ÊÑ¿ô #Mhook_arg ¤Ï¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¡£ + Ãͤϲ¿¤Ç¤â¤è¤¯¡¢¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£ #Mhook_func ¤Ç»ØÄꤵ¤ì¤ë´Ø¿ô¤ËÅϤµ¤ì¤ë¡£ */ MSymbol Mhook_arg; /*** @} */ @@ -941,7 +1176,6 @@ MSymbol Mhook_arg; /***en @name Variables: Possible values of #Mvideomode property of face */ /***ja @name ÊÑ¿ô¡§ ¥Õ¥§¡¼¥¹¤Î #Mvideomode ¥×¥í¥Ñ¥Æ¥£¤Î²Äǽ¤ÊÃÍ */ /*** @{ */ -/*=*/ /***en See the documentation of the variable #Mvideomode. */ @@ -962,17 +1196,17 @@ MSymbol Mreverse; @brief Normal video face. The variable #mface_normal_video points to a face that has the - #Mvideomode property with value #Mnormal. The other properties + #Mvideomode property with value @b Mnormal. The other properties are not specified. An M-text drawn with this face appear normal colors (i.e. the foreground is drawn by foreground color, and background is drawn by background color). */ /***ja @brief ɸ½à¥Ó¥Ç¥ª¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_normal_video ¤Ï #Mvideomode ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ #Mnormal + ÊÑ¿ô #mface_normal_video ¤Ï #Mvideomode ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ @b Mnormal ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ - ¤³¤Î¥Õ¥§¡¼¥¹¤Çɽ¼¨¤µ¤ì¤ëM-text ¤Ïɸ½à¤Î¿§ (¤¹¤Ê¤ï¤ÁÁ°·Ê¤ÏÁ°·Ê¿§¡¢ - ÇطʤÏÇØ·Ê¿§¡Ë¤ÇÉÁ¤«¤ì¤ë¡£ */ + ¤³¤Î¥Õ¥§¡¼¥¹¤Çɽ¼¨¤µ¤ì¤ëM-text + ¤Ïɸ½à¤Î¿§ (¤¹¤Ê¤ï¤ÁÁ°·Ê¤ÏÁ°·Ê¿§¡¢ÇطʤÏÇØ·Ê¿§¡Ë¤ÇÉÁ¤«¤ì¤ë¡£ */ MFace *mface_normal_video; @@ -980,7 +1214,7 @@ MFace *mface_normal_video; @brief Reverse video face. The variable #mface_reverse_video points to a face that has the - #Mvideomode property with value #Mreverse. The other properties + #Mvideomode property with value @b Mreverse. The other properties are not specified. An M-text drawn with this face appear in reversed colors (i.e. the foreground is drawn by background color, and background is drawn by foreground color). */ @@ -988,9 +1222,9 @@ MFace *mface_normal_video; @brief ¥ê¥Ð¡¼¥¹¥Ó¥Ç¥ª¥Õ¥§¡¼¥¹. ÊÑ¿ô #mface_reverse_video ¤Ï #Mvideomode ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ - #Mreverse ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄê - ¤µ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤Çɽ¼¨¤µ¤ì¤ëM-text ¤ÏÁ°·Ê¿§¤ÈÇØ·Ê¿§¤¬Æþ¤ìÂØ - ¤ï¤Ã¤Æ (¤¹¤Ê¤ï¤ÁÁ°·Ê¤ÏÇØ·Ê¿§¡¢ÇطʤÏÁ°·Ê¿§¡ËÉÁ¤«¤ì¤ë¡£ */ + @b Mreverse ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ + ¤³¤Î¥Õ¥§¡¼¥¹¤Çɽ¼¨¤µ¤ì¤ëM-text + ¤ÏÁ°·Ê¿§¤ÈÇØ·Ê¿§¤¬Æþ¤ìÂؤï¤Ã¤Æ (¤¹¤Ê¤ï¤ÁÁ°·Ê¤ÏÇØ·Ê¿§¡¢ÇطʤÏÁ°·Ê¿§¡ËÉÁ¤«¤ì¤ë¡£ */ MFace *mface_reverse_video; @@ -1015,8 +1249,7 @@ MFace *mface_reverse_video; @brief ²¼Àþ¥Õ¥§¡¼¥¹. ÊÑ¿ô #mface_underline ¤Ï #Mhline ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ #MFaceHLineProp - ·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£¥ª¥Ö - ¥¸¥§¥¯¥È¤Î¥á¥ó¥Ð¤Ï°Ê²¼¤ÎÄ̤ꡣ + ·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£¥ª¥Ö¥¸¥§¥¯¥È¤Î¥á¥ó¥Ð¤Ï°Ê²¼¤ÎÄ̤ꡣ @verbatim ¥á¥ó¥Ð ÃÍ @@ -1026,8 +1259,7 @@ MFace *mface_reverse_video; color Mnil @endverbatim - ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ï²¼ÀþÉÕ¤­ - ¤Çɽ¼¨¤µ¤ì¤ë¡£*/ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ï²¼ÀþÉÕ¤­¤Çɽ¼¨¤µ¤ì¤ë¡£*/ MFace *mface_underline; @@ -1041,10 +1273,10 @@ MFace *mface_underline; /***ja @brief ¥ß¥Ç¥£¥¢¥à¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_medium ¤Ï #Mweight ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "medium" ¤È¤¤¤¦Ì¾ - Á°¤ò¤â¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í - ¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ï¡¢¥ß¥Ç¥£¥¢¥à¥¦¥§ - ¥¤¥È¤Î¥Õ¥©¥ó¥È¤Çɽ¼¨¤µ¤ì¤ë¡£ */ + ÊÑ¿ô #mface_medium ¤Ï #Mweight ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "medium" + ¤È¤¤¤¦Ì¾Á°¤ò¤â¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤Ï¡¢¥ß¥Ç¥£¥¢¥à¥¦¥§¥¤¥È¤Î¥Õ¥©¥ó¥È¤Çɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_medium; /***en @@ -1054,15 +1286,13 @@ MFace *mface_medium; property with value a symbol of name "bold". The other properties are not specified. An M-text that has this face is drawn with a font of bold weight. */ - /***ja @brief ¥Ü¡¼¥ë¥É¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_bold ¤Ï #Mweight ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "bold" ¤È¤¤¤¦Ì¾Á°¤ò - ¤â¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£ - ¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ï¡¢¥Ü¡¼¥ë¥É¤Î¥Õ¥©¥ó¥È¤Ç - ɽ¼¨¤µ¤ì¤ë¡£ - */ + ÊÑ¿ô #mface_bold ¤Ï #Mweight ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "bold" + ¤È¤¤¤¦Ì¾Á°¤ò¤â¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤Ï¡¢¥Ü¡¼¥ë¥É¥Õ¥©¥ó¥È¤Çɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_bold; @@ -1073,15 +1303,13 @@ MFace *mface_bold; property with value a symbol of name "italic". The other properties are not specified. An M-text that has this face is drawn with a font of italic style. */ - /***ja @brief ¥¤¥¿¥ê¥Ã¥¯¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_italic ¤Ï #Mstyle ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "italic" ¤È¤¤¤¦Ì¾Á° - ¤ò¤â¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ - ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ï¡¢¥¤¥¿¥ê¥Ã¥¯ÂΤÇɽ - ¼¨¤µ¤ì¤ë¡£ - */ + ÊÑ¿ô #mface_italic ¤Ï #Mstyle ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "italic" + ¤È¤¤¤¦Ì¾Á°¤ò¤â¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤Ï¡¢¥¤¥¿¥ê¥Ã¥¯ÂΤÇɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_italic; @@ -1093,16 +1321,14 @@ MFace *mface_italic; property with value a symbol of name "italic". The other properties are not specified. An M-text that has this face is drawn with a font of bold weight and italic style. */ - /***ja @brief ¥Ü¡¼¥ë¥É¥¤¥¿¥ê¥Ã¥¯¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_bold_italic ¤Ï¡¢#Mweight ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "bold" ¤È¤¤ - ¤¦Ì¾Á°¤ò¤â¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ê¡¢¤«¤Ä #Mstyle ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "italic" + ÊÑ¿ô #mface_bold_italic ¤Ï¡¢#Mweight ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "bold" + ¤È¤¤¤¦Ì¾Á°¤ò¤â¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ê¡¢¤«¤Ä #Mstyle ¥×¥í¥Ñ¥Æ¥¤¤ÎÃͤ¬ "italic" ¤È¤¤¤¦Ì¾Á°¤ò¤â¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ - ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ï¡¢¥Ü¡¼¥ë - ¥É¥¤¥¿¥ê¥Ã¥¯ÂΤÇɽ¼¨¤µ¤ì¤ë¡£ - */ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤Ï¡¢¥Ü¡¼¥ë¥É¥¤¥¿¥ê¥Ã¥¯ÂΤÇɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_bold_italic; @@ -1113,13 +1339,12 @@ MFace *mface_bold_italic; property with value 50. The other properties are not specified. An M-text that has this face is drawn with a font whose size is 50% of a normal font. */ - /***ja @brief ºÇ¾®¤Î¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_xx_small ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 50 ¤Ç¤¢¤ë¥Õ¥§¡¼ - ¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹ - ¤ò»ý¤Ä M-text ¤Ïɸ½à¤Î 50% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ + ÊÑ¿ô #mface_xx_small ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 50 + ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ + ¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ïɸ½à¥Õ¥©¥ó¥È¤Î 50% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_xx_small; @@ -1131,13 +1356,12 @@ MFace *mface_xx_small; property with value 66. The other properties are not specified. An M-text that has this face is drawn with a font whose size is 66% of a normal font. */ - /***ja - @brief ¤â¤Ã¤È¾®¤µ¤¤¥Õ¥§¡¼¥¹. + @brief ¤è¤ê¾®¤µ¤¤¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_x_small ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 66 ¤Ç¤¢¤ë¥Õ¥§¡¼ - ¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹ - ¤ò»ý¤Ä M-text ¤Ïɸ½à¤Î 66% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ + ÊÑ¿ô #mface_x_small ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 66 + ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ + ¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ïɸ½à¥Õ¥©¥ó¥È¤Î 66% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_x_small; @@ -1149,13 +1373,12 @@ MFace *mface_x_small; property with value 75. The other properties are not specified. An M-text that has this face is drawn with a font whose size is 75% of a normal font. */ - /***ja @brief ¾®¤µ¤¤¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_small ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 75 ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò - »Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý - ¤Ä M-text ¤Ïɸ½à¤Î 75% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ + ÊÑ¿ô #mface_small ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 75 + ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ + ¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ïɸ½à¥Õ¥©¥ó¥È¤Î 75% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_small; @@ -1167,13 +1390,12 @@ MFace *mface_small; #Mratio property with value 100. The other properties are not specified. An M-text that has this face is drawn with a font whose size is the same as a normal font. */ - /***ja @brief ɸ½à¤ÎÂ礭¤µ¤Î¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_normalsize ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 100 ¤Ç¤¢¤ë¥Õ¥§¡¼ - ¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹ - ¤ò»ý¤Ä M-text ¤Ïɸ½à¤ÈƱ¤¸Â礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ + ÊÑ¿ô #mface_normalsize ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 100 + ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ + ¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ïɸ½à¥Õ¥©¥ó¥È¤ÈƱ¤¸Â礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_normalsize; @@ -1185,13 +1407,12 @@ MFace *mface_normalsize; property with value 120. The other properties are not specified. An M-text that has this face is drawn with a font whose size is 120% of a normal font. */ - /***ja @brief Â礭¤¤¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_large ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 120 ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹ - ¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò - »ý¤Ä M-text ¤Ïɸ½à¤Î 120% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ + ÊÑ¿ô #mface_large ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 120 + ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ + ¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ïɸ½à¥Õ¥©¥ó¥È¤Î 120% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_large; @@ -1203,13 +1424,12 @@ MFace *mface_large; property with value 150. The other properties are not specified. An M-text that has this face is drawn with a font whose size is 150% of a normal font. */ - /***ja @brief ¤â¤Ã¤ÈÂ礭¤¤¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_x_large ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 150 ¤Ç¤¢¤ë¥Õ¥§¡¼ - ¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹ - ¤ò»ý¤Ä M-text ¤Ïɸ½à¤Î 150% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ + ÊÑ¿ô #mface_x_large ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 150 + ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ + ¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ïɸ½à¥Õ¥©¥ó¥È¤Î 150% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_x_large; @@ -1221,13 +1441,12 @@ MFace *mface_x_large; property with value 200. The other properties are not specified. An M-text that has this face is drawn with a font whose size is 200% of a normal font. */ - /***ja @brief ºÇÂç¤Î¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_xx_large ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 200 ¤Ç¤¢¤ë¥Õ¥§¡¼ - ¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹ - ¤ò»ý¤Ä M-text ¤Ïɸ½à¤Î 200% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ + ÊÑ¿ô #mface_xx_large ¤Ï¡¢#Mratio ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤ¬ 200 + ¤Ç¤¢¤ë¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£ + ¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤Ïɸ½à¥Õ¥©¥ó¥È¤Î 200% ¤ÎÂ礭¤µ¤Î¥Õ¥©¥ó¥È¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_xx_large; @@ -1239,14 +1458,13 @@ MFace *mface_xx_large; #Mforeground property with value a symbol of name "black". The other properties are not specified. An M-text that has this face is drawn with black foreground. */ - /***ja @brief ¹õ¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_black ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "black" ¤È - ¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥× - ¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤ÏÁ°·Ê¿§¤ò¹õ¤È¤· - ¤Æɽ¼¨¤µ¤ì¤ë¡£ */ + ÊÑ¿ô #mface_black ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "black" + ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤ÏÁ°·Ê¿§¤È¤·¤Æ¹õ¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_black; @@ -1257,14 +1475,13 @@ MFace *mface_black; #Mforeground property with value a symbol of name "white". The other properties are not specified. An M-text that has this face is drawn with white foreground. */ - /***ja @brief Çò¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_white ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "white" ¤È - ¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥× - ¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤ÏÁ°·Ê¿§¤òÇò¤È¤· - ¤Æɽ¼¨¤µ¤ì¤ë¡£ */ + ÊÑ¿ô #mface_white ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "white" + ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤ÏÁ°·Ê¿§¤È¤·¤ÆÇò¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_white; @@ -1275,14 +1492,13 @@ MFace *mface_white; #Mforeground property with value a symbol of name "red". The other properties are not specified. An M-text that has this face is drawn with red foreground. */ - /***ja @brief ÀÖ¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_red ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "red" ¤È¤¤¤¦ - ̾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ - ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤ÏÁ°·Ê¿§¤òÀ֤Ȥ·¤Æɽ - ¼¨¤µ¤ì¤ë¡£ */ + ÊÑ¿ô #mface_red ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "red" + ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤ÏÁ°·Ê¿§¤È¤·¤ÆÀÖ¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_red; @@ -1293,14 +1509,13 @@ MFace *mface_red; #Mforeground property with value a symbol of name "green". The other properties are not specified. An M-text that has this face is drawn with green foreground. */ - /***ja @brief ÎÐ¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_green ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "green" ¤È - ¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥× - ¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤ÏÁ°·Ê¿§¤òÎФȤ· - ¤Æɽ¼¨¤µ¤ì¤ë¡£ */ + ÊÑ¿ô #mface_green ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "green" + ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤ÏÁ°·Ê¿§¤È¤·¤ÆÎФòÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_green; @@ -1311,14 +1526,13 @@ MFace *mface_green; #Mforeground property with value a symbol of name "blue". The other properties are not specified. An M-text that has this face is drawn with blue foreground. */ - /***ja @brief ÀÄ¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_blue ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "blue" ¤È¤¤ - ¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í - ¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤ÏÁ°·Ê¿§¤òÀĤȤ·¤Æ - ɽ¼¨¤µ¤ì¤ë¡£ */ + ÊÑ¿ô #mface_blue ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "blue" + ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤ÏÁ°·Ê¿§¤È¤·¤ÆÀĤòÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_blue; @@ -1329,14 +1543,13 @@ MFace *mface_blue; #Mforeground property with value a symbol of name "cyan". The other properties are not specified. An M-text that has this face is drawn with cyan foreground. */ - /***ja @brief ¥·¥¢¥ó¥Õ¥§¡¼¥¹. - ÊÑ¿ô #mface_cyan ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "cyan" ¤È¤¤ - ¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î¥×¥í - ¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤ÏÁ°·Ê¿§¤ò¥·¥¢¥ó¤È - ¤·¤Æɽ¼¨¤µ¤ì¤ë¡£ */ + ÊÑ¿ô #mface_cyan ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "cyan" + ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤ÏÁ°·Ê¿§¤È¤·¤Æ¥·¥¢¥ó¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_cyan; @@ -1352,9 +1565,9 @@ MFace *mface_cyan; @brief ²«¥Õ¥§¡¼¥¹. ÊÑ¿ô #mface_yellow ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ "yellow" - ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£Â¾¤Î - ¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤ÏÁ°·Ê¿§¤ò²«¿§ - ¤È¤·¤Æɽ¼¨¤µ¤ì¤ë¡£ */ + ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤ÏÁ°·Ê¿§¤È¤·¤Æ²«¿§¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_yellow; @@ -1370,9 +1583,9 @@ MFace *mface_yellow; @brief ¥Þ¥¼¥ó¥¿¥Õ¥§¡¼¥¹. ÊÑ¿ô #mface_magenta ¤Ï¡¢#Mforeground ¥×¥í¥Ñ¥Æ¥£¤ÎÃͤȤ·¤Æ - "magenta" ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç - ¤¢¤ë¡£Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text ¤ÏÁ° - ·Ê¿§¤ò¥Þ¥¼¥ó¥¿¤È¤·¤Æɽ¼¨¤µ¤ì¤ë¡£ */ + "magenta" ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤è¤¦¤Ê¥Õ¥§¡¼¥¹¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ + ¾¤Î¥×¥í¥Ñ¥Æ¥£¤Ï»ØÄꤵ¤ì¤Ê¤¤¡£¤³¤Î¥Õ¥§¡¼¥¹¤ò»ý¤Ä M-text + ¤ÏÁ°·Ê¿§¤È¤·¤Æ¥Þ¥¼¥ó¥¿¤òÍѤ¤¤Æɽ¼¨¤µ¤ì¤ë¡£ */ MFace *mface_magenta; @@ -1388,17 +1601,16 @@ MFace *mface_magenta; @brief Key of a text property specifying a face. The variable #Mface is a symbol of name "face". A text - property whose key is - this symbol must have a pointer to an object - of type #MFace -. This is a managing key. */ + property whose key is this symbol must have a pointer to an object + of type #MFace. This is a managing key. */ /***ja @brief ¥Õ¥§¡¼¥¹¤ò»ØÄꤹ¤ë¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼. - ÊÑ¿ô #Mface ¤Ï "face" ¤È¤¤¤¦Ì¾Á°¤ò»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£¤³ - ¤Î¥·¥ó¥Ü¥ë¤ò¥­¡¼¤È¤¹¤ë¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¡¢#MFace ·¿¤Î¥ª¥Ö¥¸¥§¥¯ - ¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤ì¤Ï´ÉÍý¥­¡¼¤Ç¤¢¤ë¡£ */ + ÊÑ¿ô #Mface ¤Ï "face" + ¤È¤¤¤¦Ì¾Á°¤ò»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£¤³¤Î¥·¥ó¥Ü¥ë¤ò¥­¡¼¤È¤¹¤ë¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤Ï¡¢ + #MFace ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ + ¤³¤ì¤Ï´ÉÍý¥­¡¼¤Ç¤¢¤ë¡£ */ MSymbol Mface; /*=*/ @@ -1417,8 +1629,8 @@ MSymbol Mface; /***ja @brief ¿·¤·¤¤¥Õ¥§¡¼¥¹¤ò¤Ä¤¯¤ë. - ´Ø¿ô mface () ¤Ï¥×¥í¥Ñ¥Æ¥£¤ò°ìÀÚ»ý¤¿¤Ê¤¤¿·¤·¤¤¥Õ¥§¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥È - ¤òºî¤ë¡£ + ´Ø¿ô mface () + ¤Ï¥×¥í¥Ñ¥Æ¥£¤ò°ìÀÚ»ý¤¿¤Ê¤¤¿·¤·¤¤¥Õ¥§¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤ë¡£ @return ¤³¤Î´Ø¿ô¤Ïºî¤Ã¤¿¥Õ¥§¡¼¥¹¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ */ @@ -1429,6 +1641,7 @@ mface () MFace *face; M17N_OBJECT (face, free_face, MERROR_FACE); + face->frame_list = mplist (); M17N_OBJECT_REGISTER (face_table, face); return face; } @@ -1444,8 +1657,8 @@ mface () /***ja @brief ¥Õ¥§¡¼¥¹¤Î¥³¥Ô¡¼¤òºî¤ë. - ´Ø¿ô mface_copy () ¤Ï¥Õ¥§¡¼¥¹ $FACE ¤Î¥³¥Ô¡¼¤òºî¤ê¡¢¤½¤Î¥³¥Ô¡¼¤Ø¤Î - ¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ */ + ´Ø¿ô mface_copy () ¤Ï¥Õ¥§¡¼¥¹ $FACE + ¤Î¥³¥Ô¡¼¤òºî¤ê¡¢¤½¤Î¥³¥Ô¡¼¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ */ MFace * mface_copy (MFace *face) @@ -1456,28 +1669,61 @@ mface_copy (MFace *face) *copy = *face; copy->control.ref_count = 1; M17N_OBJECT_REGISTER (face_table, copy); + copy->frame_list = mplist (); if (copy->property[MFACE_FONTSET]) M17N_OBJECT_REF (copy->property[MFACE_FONTSET]); - if (copy->property[MFACE_HLINE]) - { - MFaceHLineProp *val; + return copy; +} + +/*=*/ +/***en + @brief Compare faces. + + The mface_equal () function compares faces $FACE1 and $FACE2. + + @return + If two faces have the same property values, return 1. + Otherwise return 0. */ + +int +mface_equal (MFace *face1, MFace *face2) +{ + MFaceHLineProp *hline1, *hline2; + MFaceBoxProp *box1, *box2; + int i; - MSTRUCT_MALLOC (val, MERROR_FACE); - *val = *((MFaceHLineProp *) copy->property[MFACE_HLINE]); - copy->property[MFACE_HLINE] = val; + if (face1 == face2) + return 1; + if (memcmp (face1->property, face2->property, sizeof face1->property) == 0) + return 1; + for (i = MFACE_FOUNDRY; i <= MFACE_BACKGROUND; i++) + if (face1->property[i] != face2->property[i]) + return 0; + for (i = MFACE_VIDEOMODE; i <= MFACE_RATIO; i++) + if (face1->property[i] != face2->property[i]) + return 0; + hline1 = (MFaceHLineProp *) face1->property[MFACE_HLINE]; + hline2 = (MFaceHLineProp *) face2->property[MFACE_HLINE]; + if (hline1 != hline2) + { + if (! hline1 || ! hline2) + return 0; + if (memcmp (hline1, hline2, sizeof (MFaceHLineProp)) != 0) + return 0; } - if (copy->property[MFACE_BOX]) + box1 = (MFaceBoxProp *) face1->property[MFACE_BOX]; + box2 = (MFaceBoxProp *) face2->property[MFACE_BOX]; + if (box1 != box2) { - MFaceBoxProp *val; - - MSTRUCT_MALLOC (val, MERROR_FACE); - *val = *((MFaceBoxProp *) copy->property[MFACE_BOX]); - copy->property[MFACE_BOX] = val; + if (! box1 || ! box2) + return 0; + if (memcmp (box1, box2, sizeof (MFaceBoxProp)) != 0) + return 0; } - - return copy; + return 1; } + /*=*/ /***en @brief Merge faces. @@ -1501,30 +1747,28 @@ MFace * mface_merge (MFace *dst, MFace *src) { int i; + MPlist *plist; for (i = 0; i < MFACE_PROPERTY_MAX; i++) if (src->property[i]) { - dst->property[i] = src->property[i]; if (i == MFACE_FONTSET) - M17N_OBJECT_REF (dst->property[i]); - else if (i == MFACE_HLINE) { - MFaceHLineProp *val; - - MSTRUCT_MALLOC (val, MERROR_FACE); - *val = *((MFaceHLineProp *) dst->property[MFACE_HLINE]); - dst->property[MFACE_HLINE] = val; - } - else if (i == MFACE_BOX) - { - MFaceBoxProp *val; - - MSTRUCT_MALLOC (val, MERROR_FACE); - *val = *((MFaceBoxProp *) dst->property[MFACE_BOX]); - dst->property[MFACE_BOX] = val; + M17N_OBJECT_UNREF (dst->property[i]); + M17N_OBJECT_REF (src->property[i]); } + dst->property[i] = src->property[i]; } + + MPLIST_DO (plist, dst->frame_list) + { + MFrame *frame = MPLIST_VAL (plist); + + frame->tick++; + if (dst == frame->face) + mface__update_frame_face (frame); + } + return dst; } @@ -1539,8 +1783,8 @@ mface_merge (MFace *dst, MFace *src) /***ja @brief ¥Õ¥©¥ó¥È¤«¤é¥Õ¥§¡¼¥¹¤òºî¤ë. - ´Ø¿ô mface_from_font () ¤Ï¥Õ¥©¥ó¥È $FONT ¤Î¥×¥í¥Ñ¥Æ¥£¤ò¥×¥í¥Ñ¥Æ¥£ - ¤È¤·¤Æ»ý¤Ä¿·¤·¤¤¥Õ¥§¡¼¥¹¤òºî¤ê¡¢¤½¤ì¤òÊÖ¤¹¡£ */ + ´Ø¿ô mface_from_font () ¤Ï¥Õ¥©¥ó¥È $FONT + ¤Î¥×¥í¥Ñ¥Æ¥£¤ò¥×¥í¥Ñ¥Æ¥£¤È¤·¤Æ»ý¤Ä¿·¤·¤¤¥Õ¥§¡¼¥¹¤òºî¤ê¡¢¤½¤ì¤òÊÖ¤¹¡£ */ MFace * mface_from_font (MFont *font) @@ -1579,22 +1823,22 @@ mface_from_font (MFont *font) /***ja @brief ¥Õ¥§¡¼¥¹¤Î¥×¥í¥Ñ¥Æ¥£¤ÎÃͤòÆÀ¤ë. - ´Ø¿ô mface_get_prop () ¤Ï¡¢¥Õ¥§¡¼¥¹ $FACE ¤¬»ý¤Ä¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£ - ¤ÎÆâ¡¢¥­¡¼¤¬ $KEY ¤Ç¤¢¤ë¤â¤Î¤ÎÃͤòÊÖ¤¹¡£$KEY ¤Ï²¼µ­¤Î¤¤¤º¤ì¤«¤Ç¤Ê - ¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ + ´Ø¿ô mface_get_prop () ¤Ï¡¢¥Õ¥§¡¼¥¹ $FACE + ¤¬»ý¤Ä¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤ÎÆâ¡¢¥­¡¼¤¬ $KEY ¤Ç¤¢¤ë¤â¤Î¤ÎÃͤòÊÖ¤¹¡£ + $KEY ¤Ï²¼µ­¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ #Mforeground, #Mbackground, #Mvideomode, #Mhline, #Mbox, #Mfoundry, #Mfamily, #Mweight, #Mstyle, #Mstretch, #Madstyle, - #Msize, #Mfontset, #Mratio, #Mhook_func, #Mhook_arg + #Msize, #Mfontset, #Mratio, #Mhook_arg @return - Ìá¤êÃͤη¿¤Ï $KEY ¤Ë°Í¸¤¹¤ë¡£¾åµ­¤Î¥­¡¼¤ÎÀâÌÀ¤ò»²¾È¤¹¤ë¤³ - ¤È¡£¥¨¥é¡¼¤¬¸¡½Ð¤µ¤ì¤¿¾ì¹ç¤Ï @c NULL ¤òÊÖ¤·¡¢³°ÉôÊÑ¿ô #merror_code + Ìá¤êÃͤη¿¤Ï $KEY ¤Ë°Í¸¤¹¤ë¡£¾åµ­¤Î¥­¡¼¤ÎÀâÌÀ¤ò»²¾È¤¹¤ë¤³¤È¡£ + ¥¨¥é¡¼¤¬¸¡½Ð¤µ¤ì¤¿¾ì¹ç¤Ï @c NULL ¤òÊÖ¤·¡¢³°ÉôÊÑ¿ô #merror_code ¤Ë¥¨¥é¡¼¥³¡¼¥É¤òÀßÄꤹ¤ë¡£ */ /*** @seealso - mface_put_prop () + mface_put_prop (), mface_put_hook () @errors @c MERROR_FACE */ @@ -1605,13 +1849,37 @@ mface_get_prop (MFace *face, MSymbol key) int index = (int) msymbol_get (key, M_face_prop_index) - 1; if (index < 0) - MERROR (MERROR_FACE, NULL); + { + if (key == Mhook_func) + /* This unsafe code is for backward compatiblity. */ + return (void *) face->hook; + MERROR (MERROR_FACE, NULL); + } return face->property[index]; } /*=*/ /***en + @brief Get the hook function of a face. + + The mface_get_hook () function returns the hook function of face + $FACE. */ + +/***ja + @brief ¥Õ¥§¡¼¥¹¤Î¥Õ¥Ã¥¯´Ø¿ô¤òÆÀ¤ë. + + ´Ø¿ô mface_get_hook () ¤Ï¥Õ¥§¡¼¥¹ $FACE ¤Î¥Õ¥Ã¥¯´Ø¿ô¤òÊÖ¤¹¡£ */ + +MFaceHookFunc +mface_get_hook (MFace *face) +{ + return face->hook; +} + +/*=*/ + +/***en @brief Set a value of a face property. The mface_put_prop () function assigns $VAL to the property whose @@ -1636,17 +1904,16 @@ mface_get_prop (MFace *face, MSymbol key) /***ja @brief ¥Õ¥§¡¼¥¹¥×¥í¥Ñ¥Æ¥£¤ÎÃͤòÀßÄꤹ¤ë. - ´Ø¿ô mface_put_prop () ¤Ï¡¢¥Õ¥§¡¼¥¹ $FACE Æâ¤Ç¥­¡¼¤¬ $KEY ¤Ç¤¢¤ë¥× - ¥í¥Ñ¥Æ¥£¤ÎÃͤò $VAL ¤ËÀßÄꤹ¤ë¡£$KEY ¤Ï°Ê²¼¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤Ê - ¤é¤Ê¤¤¡£ + ´Ø¿ô mface_put_prop () ¤Ï¡¢¥Õ¥§¡¼¥¹ $FACE Æâ¤Ç¥­¡¼¤¬ $KEY + ¤Ç¤¢¤ë¥×¥í¥Ñ¥Æ¥£¤ÎÃͤò $VAL ¤ËÀßÄꤹ¤ë¡£$KEY + ¤Ï°Ê²¼¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ #Mforeground, #Mbackground, #Mvideomode, #Mhline, #Mbox, #Mfoundry, #Mfamily, #Mweight, #Mstyle, #Mstretch, #Madstyle, #Msize, #Mfontset, #Mratio, #Mhook_func, #Mhook_arg. ¤³¤ì¤é¤Î¤¦¤Á¤Î¡¢¥Õ¥©¥ó¥È´ØÏ¢¤Î¥×¥í¥Ñ¥Æ¥£ (#Mfamily ¤«¤é #Msize - ¤Þ¤Ç) ¤Ï¡¢¥Õ¥§¡¼¥¹¤Î¥Õ¥©¥ó¥È¥»¥Ã¥ÈÃæ¤Î¥Õ¥©¥ó¥È¤Ë´Ø¤¹¤ë¥Ç¥Õ¥©¥ë¥ÈÃÍ - ¤È¤Ê¤ê¡¢¸Ä¡¹¤Î¥Õ¥©¥ó¥È¤¬Ãͤò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤ËÍѤ¤¤é¤ì¤ë¡£ + ¤Þ¤Ç) ¤Ï¡¢¥Õ¥§¡¼¥¹¤Î¥Õ¥©¥ó¥È¥»¥Ã¥ÈÃæ¤Î¥Õ¥©¥ó¥È¤Ë´Ø¤¹¤ë¥Ç¥Õ¥©¥ë¥ÈÃͤȤʤꡢ¸Ä¡¹¤Î¥Õ¥©¥ó¥È¤¬Ãͤò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤ËÍѤ¤¤é¤ì¤ë¡£ Ìá¤êÃͤη¿¤Ï $KEY ¤Ë°Í¸¤¹¤ë¡£¾åµ­¤Î¥­¡¼¤ÎÀâÌÀ¤ò»²¾È¤¹¤ë¤³¤È¡£ @@ -1667,38 +1934,41 @@ mface_put_prop (MFace *face, MSymbol key, void *val) int index = (int) msymbol_get (key, M_face_prop_index) - 1; MPlist *plist; - if (index < 0) - MERROR (MERROR_FACE, -1); - if (key == Mfontset) + if (key == Mhook_func) { - if (face->property[index]) - M17N_OBJECT_UNREF (face->property[index]); - M17N_OBJECT_REF (val); + /* This unsafe code is for backward compatiblity. */ + if (face->hook == (MFaceHookFunc) val) + return 0; + face->hook = (MFaceHookFunc) val; } - else if (key == Mhline) + else { - MFaceHLineProp *newval; + if (index < 0) + MERROR (MERROR_FACE, -1); + if (key == Mfontset) + { + if (face->property[index]) + M17N_OBJECT_UNREF (face->property[index]); + M17N_OBJECT_REF (val); + } + else if (key == Mhline) + val = get_hline_create (val); + else if (key == Mbox) + val = get_box_create (val); - MSTRUCT_MALLOC (newval, MERROR_FACE); - *newval = *((MFaceHLineProp *) val); - val = newval; - if (face->property[index]) - free (face->property[index]); + if (face->property[index] == val) + return 0; + face->property[index] = val; } - else if (key == Mbox) + + MPLIST_DO (plist, face->frame_list) { - MFaceBoxProp *newval; + MFrame *frame = MPLIST_VAL (plist); - MSTRUCT_MALLOC (newval, MERROR_FACE); - *newval = *((MFaceBoxProp *) val); - val = newval; - if (face->property[index]) - free (face->property[index]); + frame->tick++; + if (face == frame->face) + mface__update_frame_face (frame); } - face->property[index] = val; - if (face->realized_face_list) - MPLIST_DO (plist, face->realized_face_list) - ((MRealizedFace *) MPLIST_VAL (plist))->need_update = 1; return 0; } @@ -1706,6 +1976,40 @@ mface_put_prop (MFace *face, MSymbol key, void *val) /*=*/ /***en + @brief Set a hook function to a face. + + The mface_set_hook () function sets the hook function of face + $FACE to $FUNC. */ + +/***ja + @brief ¥Õ¥§¡¼¥¹¤Î¥Õ¥Ã¥¯´Ø¿ô¤òÀßÄꤹ¤ë. + + ´Ø¿ô mface_set_hook () ¤Ï¡¢¥Õ¥§¡¼¥¹ $FACE ¤Î¥Õ¥Ã¥¯´Ø¿ô¤ò$FUNC ¤ËÀß + Äꤹ¤ë¡£ */ + +int +mface_put_hook (MFace *face, MFaceHookFunc func) +{ + if (face->hook != func) + { + MPlist *plist; + face->hook = func; + + MPLIST_DO (plist, face->frame_list) + { + MFrame *frame = MPLIST_VAL (plist); + + frame->tick++; + if (face == frame->face) + mface__update_frame_face (frame); + } + } + return 0; +} + +/*=*/ + +/***en @brief Update a face. The mface_update () function update face $FACE on frame $FRAME by @@ -1720,16 +2024,16 @@ mface_put_prop (MFace *face, MSymbol key, void *val) void mface_update (MFrame *frame, MFace *face) { - MFaceHookFunc func = (MFaceHookFunc) face->property[MFACE_HOOK_FUNC]; + MFaceHookFunc func = face->hook; MPlist *rface_list; MRealizedFace *rface; - if (func) + if (func && func != noop_hook) { MPLIST_DO (rface_list, frame->realized_face_list) { rface = MPLIST_VAL (rface_list); - if ((MFaceHookFunc) rface->face.property[MFACE_HOOK_FUNC] == func) + if (rface->face.hook == func) (func) (&(rface->face), rface->face.property[MFACE_HOOK_ARG], rface->info); } @@ -1747,9 +2051,10 @@ mface_update (MFrame *frame, MFace *face) /***en @brief Dump a face. - The mdebug_dump_face () function prints face $FACE in a human readable - way to the stderr. $INDENT specifies how many columns to indent - the lines but the first one. + The mdebug_dump_face () function prints face $FACE in a human + readable way to the stderr or to what specified by the environment + variable MDEBUG_OUTPUT_FILE. $INDENT specifies how many columns + to indent the lines but the first one. @return This function returns $FACE. */ @@ -1757,8 +2062,9 @@ mface_update (MFrame *frame, MFace *face) /***ja @brief ¥Õ¥§¡¼¥¹¤ò¥À¥ó¥×¤¹¤ë. - ´Ø¿ô mdebug_dump_face () ¤Ï¥Õ¥§¡¼¥¹ $FACE ¤ò stderr ¤Ë¿Í´Ö¤Ë²ÄÆÉ¤Ê - ·Á¤Ç°õºþ¤¹¤ë¡£ $INDENT ¤Ï£²¹ÔÌܰʹߤΥ¤¥ó¥Ç¥ó¥È¤ò»ØÄꤹ¤ë¡£ + ´Ø¿ô mdebug_dump_face () ¤Ï¥Õ¥§¡¼¥¹ $FACE ¤òɸ½à¥¨¥é¡¼½ÐÎϤ⤷¤¯¤Ï + ´Ä¶­ÊÑ¿ô MDEBUG_DUMP_FONT ¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ë¿Í´Ö¤Ë²ÄÆɤʷÁ¤Ç°õ + ºþ¤¹¤ë¡£ $INDENT ¤Ï£²¹ÔÌܰʹߤΥ¤¥ó¥Ç¥ó¥È¤ò»ØÄꤹ¤ë¡£ @return ¤³¤Î´Ø¿ô¤Ï $FACE ¤òÊÖ¤¹¡£ */ @@ -1772,15 +2078,17 @@ mdebug_dump_face (MFace *face, int indent) memset (prefix, 32, indent); prefix[indent] = 0; mfont__set_spec_from_face (&spec, face); - fprintf (stderr, "(face font:\""); + fprintf (mdebug__output, "(face font:\""); mdebug_dump_font (&spec); - fprintf (stderr, "\"\n %s fore:%s back:%s", prefix, + fprintf (mdebug__output, "\"\n %s fore:%s back:%s", prefix, msymbol_name ((MSymbol) face->property[MFACE_FOREGROUND]), msymbol_name ((MSymbol) face->property[MFACE_BACKGROUND])); if (face->property[MFACE_FONTSET]) - fprintf (stderr, " non-default-fontset"); - fprintf (stderr, " hline:%s", face->property[MFACE_HLINE] ? "yes" : "no"); - fprintf (stderr, " box:%s)", face->property[MFACE_BOX] ? "yes" : "no"); + fprintf (mdebug__output, " non-default-fontset"); + fprintf (mdebug__output, " hline:%s", + face->property[MFACE_HLINE] ? "yes" : "no"); + fprintf (mdebug__output, " box:%s)", + face->property[MFACE_BOX] ? "yes" : "no"); return face; }