123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077 |
- /*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
- /* $XConsortium: Font.c /main/11 1996/04/13 11:54:17 ageorge $ */
- /************************************<+>*************************************
- ****************************************************************************
- **
- ** (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 Hewlett-Packard Company
- **
- ** (c) Copyright 1993, 1994 Hewlett-Packard Company
- ** (c) Copyright 1993, 1994 International Business Machines Corp.
- ** (c) Copyright 1993, 1994 Sun Microsystems, Inc.
- ** (c) Copyright 1993, 1994 Novell, Inc.
- **
- ****************************************************************************
- ************************************<+>*************************************/
- /*
- * system includes
- */
- #include <stdlib.h>
- #include <X11/Xlib.h>
- #include <X11/Xlibint.h>
- #include <X11/Xresource.h>
- #include <Xm/Xm.h>
- /*
- * private includes
- */
- #include "DisplayAreaP.h"
- #include "FontI.h"
- #include "Lock.h"
- /*
- * private core engine
- */
- #include "StringFuncsI.h"
- #ifdef NLS16
- #endif
- /******** Private Function Declarations ********/
- /******** End Public Function Declarations ********/
- /******************************************************************************
- *
- * Private variables and defines.
- *
- *****************************************************************************/
- static const char *FontResources[] =
- {
- /*! The serif proportional family */
- /*! medium upright */
- "*p.6.roman.medium.serif.*.ISO-8859-1: -dt-application-medium-r-normal-serif-*-80-*-*-p-*-iso8859-1",
- "*p.8.roman.medium.serif.*.ISO-8859-1: -dt-application-medium-r-normal-serif-*-100-*-*-p-*-iso8859-1",
- "*p.10.roman.medium.serif.*.ISO-8859-1: -dt-application-medium-r-normal-serif-*-120-*-*-p-*-iso8859-1",
- "*p.12.roman.medium.serif.*.ISO-8859-1: -dt-application-medium-r-normal-serif-*-140-*-*-p-*-iso8859-1",
- "*p.14.roman.medium.serif.*.ISO-8859-1: -dt-application-medium-r-normal-serif-*-180-*-*-p-*-iso8859-1",
- /*! bold upright */
- "*p.6.roman.bold.serif.*.ISO-8859-1: -dt-application-bold-r-normal-serif-*-80-*-*-p-*-iso8859-1",
- "*p.8.roman.bold.serif.*.ISO-8859-1: -dt-application-bold-r-normal-serif-*-100-*-*-p-*-iso8859-1",
- "*p.10.roman.bold.serif.*.ISO-8859-1: -dt-application-bold-r-normal-serif-*-120-*-*-p-*-iso8859-1",
- "*p.12.roman.bold.serif.*.ISO-8859-1: -dt-application-bold-r-normal-serif-*-140-*-*-p-*-iso8859-1",
- "*p.14.roman.bold.serif.*.ISO-8859-1: -dt-application-bold-r-normal-serif-*-180-*-*-p-*-iso8859-1",
- /*! medium italic */
- "*p.6.italic.medium.serif.*.ISO-8859-1: -dt-application-medium-i-normal-serif-*-80-*-*-p-*-iso8859-1",
- "*p.8.italic.medium.serif.*.ISO-8859-1: -dt-application-medium-i-normal-serif-*-100-*-*-p-*-iso8859-1",
- "*p.10.italic.medium.serif.*.ISO-8859-1: -dt-application-medium-i-normal-serif-*-120-*-*-p-*-iso8859-1",
- "*p.12.italic.medium.serif.*.ISO-8859-1: -dt-application-medium-i-normal-serif-*-140-*-*-p-*-iso8859-1",
- "*p.14.italic.medium.serif.*.ISO-8859-1: -dt-application-medium-i-normal-serif-*-180-*-*-p-*-iso8859-1",
- /*! bold italic */
- "*p.6.italic.bold.serif.*.ISO-8859-1: -dt-application-bold-i-normal-serif-*-80-*-*-p-*-iso8859-1",
- "*p.8.italic.bold.serif.*.ISO-8859-1: -dt-application-bold-i-normal-serif-*-100-*-*-p-*-iso8859-1",
- "*p.10.italic.bold.serif.*.ISO-8859-1: -dt-application-bold-i-normal-serif-*-120-*-*-p-*-iso8859-1",
- "*p.12.italic.bold.serif.*.ISO-8859-1: -dt-application-bold-i-normal-serif-*-140-*-*-p-*-iso8859-1",
- "*p.14.italic.bold.serif.*.ISO-8859-1: -dt-application-bold-i-normal-serif-*-180-*-*-p-*-iso8859-1",
- /*! The sans serif proportional family */
- /*! medium upright */
- "*p.6.roman.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-r-normal-sans-*-80-*-*-p-*-iso8859-1",
- "*p.8.roman.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-r-normal-sans-*-100-*-*-p-*-iso8859-1",
- "*p.10.roman.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-r-normal-sans-*-120-*-*-p-*-iso8859-1",
- "*p.12.roman.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-r-normal-sans-*-140-*-*-p-*-iso8859-1",
- "*p.14.roman.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-r-normal-sans-*-180-*-*-p-*-iso8859-1",
- /*!bold upright */
- "*p.6.roman.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-r-normal-sans-*-80-*-*-p-*-iso8859-1",
- "*p.8.roman.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-r-normal-sans-*-100-*-*-p-*-iso8859-1",
- "*p.10.roman.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-r-normal-sans-*-120-*-*-p-*-iso8859-1",
- "*p.12.roman.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-r-normal-sans-*-140-*-*-p-*-iso8859-1",
- "*p.14.roman.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-r-normal-sans-*-180-*-*-p-*-iso8859-1",
- /*! medium italic */
- "*p.6.italic.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-i-normal-sans-*-80-*-*-p-*-iso8859-1",
- "*p.8.italic.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-i-normal-sans-*-100-*-*-p-*-iso8859-1",
- "*p.10.italic.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-i-normal-sans-*-120-*-*-p-*-iso8859-1",
- "*p.12.italic.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-i-normal-sans-*-140-*-*-p-*-iso8859-1",
- "*p.14.italic.medium.sans_serif.*.ISO-8859-1: -dt-application-medium-i-normal-sans-*-180-*-*-p-*-iso8859-1",
- /*! bold italic */
- "*p.6.italic.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-i-normal-sans-*-80-*-*-p-*-iso8859-1",
- "*p.8.italic.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-i-normal-sans-*-100-*-*-p-*-iso8859-1",
- "*p.10.italic.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-i-normal-sans-*-120-*-*-p-*-iso8859-1",
- "*p.12.italic.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-i-normal-sans-*-140-*-*-p-*-iso8859-1",
- "*p.14.italic.bold.sans_serif.*.ISO-8859-1: -dt-application-bold-i-normal-sans-*-180-*-*-p-*-iso8859-1",
- /*! The monospace family - lump serif & sans serif together */
- /*! medium upright */
- "*m.6.roman.medium.*.*.ISO-8859-1: -dt-application-medium-r-normal-*-*-80-*-*-m-*-iso8859-1",
- "*m.8.roman.medium.*.*.ISO-8859-1: -dt-application-medium-r-normal-*-*-100-*-*-m-*-iso8859-1",
- "*m.10.roman.medium.*.*.ISO-8859-1: -dt-application-medium-r-normal-*-*-120-*-*-m-*-iso8859-1",
- "*m.12.roman.medium.*.*.ISO-8859-1: -dt-application-medium-r-normal-*-*-140-*-*-m-*-iso8859-1",
- "*m.14.roman.medium.*.*.ISO-8859-1: -dt-application-medium-r-normal-*-*-180-*-*-m-*-iso8859-1",
- /*! bold upright */
- "*m.6.roman.bold.*.*.ISO-8859-1: -dt-application-bold-r-normal-*-*-80-*-*-m-*-iso8859-1",
- "*m.8.roman.bold.*.*.ISO-8859-1: -dt-application-bold-r-normal-*-*-100-*-*-m-*-iso8859-1",
- "*m.10.roman.bold.*.*.ISO-8859-1: -dt-application-bold-r-normal-*-*-120-*-*-m-*-iso8859-1",
- "*m.12.roman.bold.*.*.ISO-8859-1: -dt-application-bold-r-normal-*-*-140-*-*-m-*-iso8859-1",
- "*m.14.roman.bold.*.*.ISO-8859-1: -dt-application-bold-r-normal-*-*-180-*-*-m-*-iso8859-1",
- /*! medium italic */
- "*m.6.italic.medium.*.*.ISO-8859-1: -dt-application-medium-i-normal-*-*-80-*-*-m-*-iso8859-1",
- "*m.8.italic.medium.*.*.ISO-8859-1: -dt-application-medium-i-normal-*-*-100-*-*-m-*-iso8859-1",
- "*m.10.italic.medium.*.*.ISO-8859-1: -dt-application-medium-i-normal-*-*-120-*-*-m-*-iso8859-1",
- "*m.12.italic.medium.*.*.ISO-8859-1: -dt-application-medium-i-normal-*-*-140-*-*-m-*-iso8859-1",
- "*m.14.italic.medium.*.*.ISO-8859-1: -dt-application-medium-i-normal-*-*-180-*-*-m-*-iso8859-1",
- /*! bold italic */
- "*m.6.italic.bold.*.*.ISO-8859-1: -dt-application-bold-i-normal-*-*-80-*-*-m-*-iso8859-1",
- "*m.8.italic.bold.*.*.ISO-8859-1: -dt-application-bold-i-normal-*-*-100-*-*-m-*-iso8859-1",
- "*m.10.italic.bold.*.*.ISO-8859-1: -dt-application-bold-i-normal-*-*-120-*-*-m-*-iso8859-1",
- "*m.12.italic.bold.*.*.ISO-8859-1: -dt-application-bold-i-normal-*-*-140-*-*-m-*-iso8859-1",
- "*m.14.italic.bold.*.*.ISO-8859-1: -dt-application-bold-i-normal-*-*-180-*-*-m-*-iso8859-1",
- /*! SYMBOL */
- "*6.*.*.*.*.DT-SYMBOL-1: -dt-application-medium-r-normal-*-*-80-*-*-*-*-dtsymbol-1",
- "*8.*.*.*.*.DT-SYMBOL-1: -dt-application-medium-r-normal-*-*-100-*-*-*-*-dtsymbol-1",
- "*10.*.*.*.*.DT-SYMBOL-1: -dt-application-medium-r-normal-*-*-120-*-*-*-*-dtsymbol-1",
- "*12.*.*.*.*.DT-SYMBOL-1: -dt-application-medium-r-normal-*-*-140-*-*-*-*-dtsymbol-1",
- "*14.*.*.*.*.DT-SYMBOL-1: -dt-application-medium-r-normal-*-*-180-*-*-*-*-dtsymbol-1",
- /* for ISO-8859-2 */
- "*.6.*.*.*.*.ISO-8859-2: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.ISO-8859-2: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.ISO-8859-2: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.ISO-8859-2: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.ISO-8859-2: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for ISO-8859-5 */
- "*.6.*.*.*.*.ISO-8859-5: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.ISO-8859-5: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.ISO-8859-5: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.ISO-8859-5: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.ISO-8859-5: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for ISO-8859-6 */
- "*.6.*.*.*.*.ISO-8859-6: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.ISO-8859-6: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.ISO-8859-6: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.ISO-8859-6: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.ISO-8859-6: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for ISO-8859-7 */
- "*.6.*.*.*.*.ISO-8859-7: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.ISO-8859-7: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.ISO-8859-7: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.ISO-8859-7: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.ISO-8859-7: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for ISO-8859-8 */
- "*.6.*.*.*.*.ISO-8859-8: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.ISO-8859-8: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.ISO-8859-8: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.ISO-8859-8: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.ISO-8859-8: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for ISO-8859-9 */
- "*.6.*.*.*.*.ISO-8859-9: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.ISO-8859-9: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.ISO-8859-9: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.ISO-8859-9: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.ISO-8859-9: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for EUC-KR */
- "*.6.*.*.*.*.EUC-KR: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.EUC-KR: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.EUC-KR: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.EUC-KR: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.EUC-KR: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for EUC-JP */
- "*.6.*.*.*.*.EUC-JP: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.EUC-JP: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.EUC-JP: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.EUC-JP: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.EUC-JP: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for EUC-TW */
- "*.6.*.*.*.*.EUC-TW: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.EUC-TW: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.EUC-TW: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.EUC-TW: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.EUC-TW: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for EUC-CN */
- "*.6.*.*.*.*.EUC-CN: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.EUC-CN: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.EUC-CN: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.EUC-CN: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.EUC-CN: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for IBM-437 */
- "*.6.*.*.*.*.IBM-437: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.IBM-437: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.IBM-437: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.IBM-437: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.IBM-437: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for IBM-850 */
- "*.6.*.*.*.*.IBM-850: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.IBM-850: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.IBM-850: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.IBM-850: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.IBM-850: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for IBM-856 */
- "*.6.*.*.*.*.IBM-856: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.IBM-856: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.IBM-856: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.IBM-856: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.IBM-856: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for IBM-932 */
- "*.6.*.*.*.*.IBM-932: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.IBM-932: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.IBM-932: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.IBM-932: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.IBM-932: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for IBM-1046 */
- "*.6.*.*.*.*.IBM-1046: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.IBM-1046: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.IBM-1046: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.IBM-1046: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.IBM-1046: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- /* for UTF-8 */
- "*.6.*.*.*.*.UTF-8: -dt-interface user-medium-r-normal-xs*-*-*-*-*-*-*-*-*:",
- "*.8.*.*.*.*.UTF-8: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:",
- "*.10.*.*.*.*.UTF-8: -dt-interface user-medium-r-normal-m*-*-*-*-*-*-*-*-*:",
- "*.12.*.*.*.*.UTF-8: -dt-interface user-medium-r-normal-l*-*-*-*-*-*-*-*-*:",
- "*.14.*.*.*.*.UTF-8: -dt-interface user-medium-r-normal-xl*-*-*-*-*-*-*-*-*:",
- NULL,
- };
- #define GROW_SIZE 5
- static Boolean QuarksInited = FALSE;
- static XrmQuark StringFontQuark = 0;
- static XrmName DefaultFontQuarks[_DtHelpFontQuarkNumber];
- static XrmBinding FontBindings[_DtHelpFontQuarkNumber] =
- { XrmBindLoosely, XrmBindLoosely, XrmBindLoosely, XrmBindLoosely,
- XrmBindLoosely, XrmBindLoosely, XrmBindLoosely };
- static DtHelpDAFSMetrics DefaultMetrics = { FALSE, { 0, 0 } };
- static DtHelpDAFontInfo DefFontInfo = { NULL, NULL, NULL, NULL, NULL,
- NULL, 0, NULL, 0, 0, 0, 0, 0};
- /******************************************************************************
- *
- * Semi Public variables.
- *
- *****************************************************************************/
- /******************************************************************************
- *
- * Private Functions
- *
- *****************************************************************************/
- /******************************************************************************
- * Function: SaveFontStruct (font_struct)
- *
- *****************************************************************************/
- static int
- SaveFontStruct (
- XFontStruct *font_struct,
- DtHelpDAFontInfo *font_info)
- {
- int fontIndex;
- fontIndex = font_info->struct_cnt++;
- if (font_info->struct_cnt >= font_info->max_structs)
- {
- font_info->max_structs += GROW_SIZE;
- if (font_info->font_structs != NULL)
- font_info->font_structs = (XFontStruct **) realloc (
- ((char *) font_info->font_structs),
- (sizeof (XFontStruct *) * font_info->max_structs));
- else
- font_info->font_structs = (XFontStruct **) malloc (
- sizeof (XFontStruct *) * font_info->max_structs);
- }
- font_info->font_structs[fontIndex] = font_struct;
- return (fontIndex);
- }
- /******************************************************************************
- * Function: SaveFontSet (font_set)
- *
- *****************************************************************************/
- static int
- SaveFontSet (
- XFontSet font_set,
- DtHelpDAFontInfo *font_info)
- {
- int fontIndex = 0;
- fontIndex = font_info->set_cnt++;
- if (font_info->set_cnt >= font_info->max_sets)
- {
- font_info->max_sets += GROW_SIZE;
- if (font_info->font_sets != NULL)
- {
- font_info->font_sets = (XFontSet *) realloc (
- ((char *) font_info->font_sets),
- (sizeof (XFontSet) * font_info->max_sets));
- font_info->fs_metrics = (DtHelpDAFSMetrics *) realloc (
- ((char *) font_info->fs_metrics),
- (sizeof (DtHelpDAFSMetrics) * font_info->max_sets));
- }
- else
- {
- font_info->font_sets = (XFontSet *) malloc (
- sizeof(XFontSet) * font_info->max_sets);
- font_info->fs_metrics = (DtHelpDAFSMetrics *) malloc (
- sizeof (DtHelpDAFSMetrics) * font_info->max_sets);
- }
- }
- font_info->font_sets[fontIndex] = font_set;
- font_info->fs_metrics[fontIndex] = DefaultMetrics;
- /*
- * want the font sets to go from -1 to -n because negative numbers
- * indicate a font set.
- */
- fontIndex++;
- return (-fontIndex);
- }
- /******************************************************************************
- * Function: LoadFont (char *font_string, int *ret_index)
- *
- *****************************************************************************/
- static short
- LoadFont (
- Display *dpy,
- DtHelpDAFontInfo *font_info,
- char *font_string,
- long *ret_index)
- {
- short found = False;
- short colon = False;
- int len;
- char *junk;
- char *strPtr;
- char **missingFontSet = NULL;
- XFontStruct *fontStruct = NULL;
- XFontSet fontSet;
- strPtr = font_string;
- /*
- * if working with one byte environment, do it the fast, cheap way.
- */
- if (MB_CUR_MAX == 1)
- {
- len = strlen(strPtr);
- if (len > 0)
- len--;
- while (len > 0 && strPtr[len] == ' ')
- len--;
- if (strPtr[len] == ':')
- {
- colon = True;
- junk = strPtr + len;
- }
- }
- else
- {
- /*
- * Multibyte environment, have to go through the characters one at
- * a time.
- */
- while (*strPtr != '\0')
- {
- /*
- * Process looking for a colon.
- */
- len = mblen(strPtr, MB_CUR_MAX);
- if (len == -1)
- len = 1;
- else if (len == 1 && *strPtr == ':')
- {
- colon = True;
- junk = strPtr;
- }
- else if (len != 1 || *strPtr != ' ')
- colon = False;
-
- strPtr += len;
- }
- }
- if (colon == False)
- {
- fontStruct = XLoadQueryFont (dpy, font_string);
- if (fontStruct != NULL)
- {
- *ret_index = SaveFontStruct (fontStruct, font_info);
- found = True;
- }
- }
- else
- {
- *junk = '\0';
- fontSet = XCreateFontSet (dpy, font_string, &missingFontSet,
- &len, NULL);
- if (fontSet != NULL)
- {
- /*
- * want the font sets to go from -1 to -n because 0 is
- * the default font.
- */
- *ret_index = SaveFontSet (fontSet, font_info);
- found = True;
- }
- if (len)
- XFreeStringList (missingFontSet);
- /*
- * restore colon
- */
- *junk = ':';
- }
- return found;
- }
- /******************************************************************************
- *
- * Semi Public Functions
- *
- *****************************************************************************/
- /******************************************************************************
- * Function: int __DtHelpFontIndexGet (Display dpy, XrmQuarkList xrm_list)
- *
- * Parameters: xrm_list Specifies the quark list for the font desired.
- *
- * Return Value: 0 if successful, -1 if using default font index.
- *
- * Purpose: Find the appropriate font to use for a quark set.
- *
- *****************************************************************************/
- int
- __DtHelpFontIndexGet (
- DtHelpDispAreaStruct *pDAS,
- XrmQuarkList xrm_list,
- long *ret_idx)
- {
- int result = -1;
- long fontIndex = pDAS->font_info.def_idx;
- XrmRepresentation retType;
- XrmValue retValue;
- char buffer[10];
- char *fontSpec;
- XrmName xrmList[3];
- DtHelpDAFontInfo *fontInfo = &(pDAS->font_info);
- Display *dpy = XtDisplay(pDAS->dispWid);
- /*
- * look in my font data base to see if I've already processed
- * this sequence of quarks.
- */
- if (XrmQGetResource (fontInfo->font_idx_db, xrm_list, xrm_list, &retType,
- &retValue))
- {
- fontIndex = *((int *)retValue.addr);
- result = 0;
- }
- else
- {
- /*
- * Check my parent's data base for an XLFD spec.
- */
- fontSpec = NULL;
- if (XrmQGetResource (XrmGetDatabase(dpy), xrm_list, xrm_list,
- &retType, &retValue))
- {
- fontSpec = ((char *) retValue.addr);
- if (LoadFont (dpy, fontInfo, fontSpec, &fontIndex))
- result = 0;
- }
- /*
- * If my parent didn't have anything, check my private database.
- */
- if (result != 0 &&
- XrmQGetResource (fontInfo->def_font_db, xrm_list, xrm_list,
- &retType, &retValue))
- {
- fontSpec = ((char *) retValue.addr);
- if (LoadFont (dpy, fontInfo, fontSpec, &fontIndex))
- result = 0;
- }
- /*
- * if unsuccessful on finding a font for this quark list.
- * save out using the default font
- */
- retValue.size = sizeof (int);
- retValue.addr = (XtPointer) &fontIndex;
- XrmQPutResource (&(fontInfo->font_idx_db),
- ((XrmBindingList) FontBindings),
- xrm_list, _DtHelpXrmInt, &retValue);
- /*
- * remember the character set for this font.
- */
- sprintf (buffer, "%ld", fontIndex);
- retValue.size = sizeof (XrmQuark);
- retValue.addr = (XtPointer) &xrm_list[_DT_HELP_FONT_CHAR_SET];
- xrmList[0] = XrmStringToQuark (buffer);
- xrmList[1] = XrmStringToQuark ("code_set");
- xrmList[2] = 0;
- XrmQPutResource (&(fontInfo->font_idx_db),
- ((XrmBindingList) FontBindings),
- xrmList, _DtHelpXrmQuark, &retValue);
- /*
- * remember the language for this font.
- */
- retValue.addr = (XtPointer) &xrm_list[_DT_HELP_FONT_LANG_TER];
- xrmList[1] = XrmStringToQuark ("language");
- XrmQPutResource (&(fontInfo->font_idx_db),
- ((XrmBindingList) FontBindings),
- xrmList, _DtHelpXrmQuark, &retValue);
- }
- *ret_idx = fontIndex;
- return result;
- }
- /******************************************************************************
- * Function: int __DtHelpFontCharSetQuarkGet (font_index, XrmQuark *ret_quark)
- *
- * Parameters: font_index Specifies the font in the font table.
- * ret_quark Returns the quark specifying the character
- * set of the font.
- *
- * Return Value: Returns 0 if successful, -1 if failed.
- *
- * Purpose: Gets the character set associated with a font.
- *
- *****************************************************************************/
- int
- __DtHelpFontCharSetQuarkGet (
- DtHelpDispAreaStruct *pDAS,
- long font_index,
- XrmQuark *ret_quark )
- {
- XrmRepresentation retType;
- XrmValue retValue;
- char buffer[10];
- XrmName xrmList[3];
- int result = 0;
- /*
- * quarkize the font index
- */
- sprintf (buffer, "%ld", font_index);
- xrmList[0] = XrmStringToQuark (buffer);
- xrmList[1] = XrmStringToQuark ("code_set");
- xrmList[2] = 0;
- /*
- * look in my font data base for the quark.
- */
- if (XrmQGetResource (pDAS->font_info.font_idx_db, xrmList, xrmList,
- &retType, &retValue))
- *ret_quark = *((XrmQuark *)retValue.addr);
- else
- result = -1;
- return result;
- }
- /******************************************************************************
- * Function: int __DtHelpFontLangQuarkGet (font_index, XrmQuark *ret_quark)
- *
- * Parameters: font_index Specifies the font in the font table.
- * ret_quark Returns the quark specifying the character
- * set of the font.
- *
- * Return Value: Returns 0 if successful, -1 if failed.
- *
- * Purpose: Gets the character set associated with a font.
- *
- *****************************************************************************/
- int
- __DtHelpFontLangQuarkGet (
- DtHelpDispAreaStruct *pDAS,
- long font_index,
- XrmQuark *ret_quark )
- {
- XrmRepresentation retType;
- XrmValue retValue;
- char buffer[10];
- XrmName xrmList[3];
- int result = 0;
- /*
- * quarkize the font index
- */
- sprintf (buffer, "%ld", font_index);
- xrmList[0] = XrmStringToQuark (buffer);
- xrmList[1] = XrmStringToQuark ("language");
- xrmList[2] = 0;
- /*
- * look in my font data base for the quark.
- */
- if (XrmQGetResource (pDAS->font_info.font_idx_db, xrmList, xrmList,
- &retType, &retValue))
- *ret_quark = *((XrmQuark *)retValue.addr);
- else
- result = -1;
- return result;
- }
- /******************************************************************************
- * Function: void _DtHelpCopyDefaultList (xrm_name)
- *
- * Parameters: xrm_name The quark list to fill out.
- *
- * Return Value: void
- *
- * Purpose: Initializes the font data base.
- *****************************************************************************/
- void
- _DtHelpCopyDefaultList (
- XrmName *xrm_list)
- {
- int n;
- for (n = 0; n < _DT_HELP_FONT_END + 1; n++)
- xrm_list[n] = DefaultFontQuarks[n];
- }
- /******************************************************************************
- * Function: void _DtHelpGetStringQuarks (xrm_name)
- *
- * Parameters: xrm_name The quark list to fill out.
- *
- * Return Value: void
- *
- * Purpose: Initializes the font data base.
- *****************************************************************************/
- void
- _DtHelpGetStringQuarks (
- XrmName *xrm_list)
- {
- _DtHelpCopyDefaultList(xrm_list);
- xrm_list[_DT_HELP_FONT_CHAR_SET] = StringFontQuark;
- }
- /******************************************************************************
- * Function: void __DtHelpFontDatabaseInit (dpy, default_font, type, tmp)
- *
- * Parameters: dpy Specifies the connection to the display server.
- * default_font Specifies the base font.
- * type Specifies the type of font 'default_font' is.
- *
- * Return Value: void
- *
- * Purpose: Initializes the font data base.
- *
- *****************************************************************************/
- void
- __DtHelpFontDatabaseInit (
- DtHelpDispAreaStruct *pDAS,
- XtPointer string_font,
- XmFontType type,
- XFontStruct *user_font)
- {
- int n;
- int strIdx;
- int found = FALSE;
- Display *dpy = XtDisplay(pDAS->dispWid);
- DtHelpDAFontInfo *fontInfo = &(pDAS->font_info);
- XrmValue retValue;
- XrmRepresentation retType;
- XrmName xrmList[_DtHelpFontQuarkNumber];
- /*
- * build our default data base
- */
- *fontInfo = DefFontInfo;
- for (n = 0; FontResources[n]; n++)
- XrmPutLineResource (&(fontInfo->def_font_db), FontResources[n]);
- /*
- * build the default quark set.
- */
- _DtHelpProcessLock();
- if (QuarksInited == False)
- {
- StringFontQuark = XrmStringToQuark ("String");
- DefaultFontQuarks[_DT_HELP_FONT_SPACING] = XrmStringToQuark ("p");
- DefaultFontQuarks[_DT_HELP_FONT_SIZE] = XrmStringToQuark ("10");
- DefaultFontQuarks[_DT_HELP_FONT_ANGLE] = XrmStringToQuark ("roman");
- DefaultFontQuarks[_DT_HELP_FONT_WEIGHT] = XrmStringToQuark ("medium");
- DefaultFontQuarks[_DT_HELP_FONT_TYPE] =
- XrmStringToQuark ("sans_serif");
- DefaultFontQuarks[_DT_HELP_FONT_LANG_TER] = XrmStringToQuark ("C");
- DefaultFontQuarks[_DT_HELP_FONT_CHAR_SET] =
- XrmStringToQuark ("ISO-8859-1");
- DefaultFontQuarks[_DT_HELP_FONT_END] = 0;
- QuarksInited = True;
- }
- _DtHelpProcessUnlock();
- /*
- * if the string_font is null, used the default user's font for strings.
- */
- if (string_font == NULL)
- {
- /*
- * WARNING...what if the user_font is null? And what type is it?
- */
- string_font = (XtPointer) user_font;
- type = XmFONT_IS_FONT;
- }
- /*
- * save the string font in the lists
- */
- if (type == XmFONT_IS_FONTSET)
- strIdx = SaveFontSet ((XFontSet) string_font, fontInfo);
- else
- strIdx = SaveFontStruct ((XFontStruct *) string_font, fontInfo);
- /*
- * Save this idx font for ascii files and strings.
- */
- _DtHelpGetStringQuarks(xrmList);
- retValue.size = sizeof (int);
- retValue.addr = (XtPointer) &(strIdx);
- XrmQPutResource (&(fontInfo->font_idx_db), ((XrmBindingList) FontBindings),
- xrmList, _DtHelpXrmInt, &retValue);
- /*
- * try to get the default font for help information
- * from the parent's database.
- */
- if (XrmQGetResource (XrmGetDatabase(dpy), DefaultFontQuarks,
- DefaultFontQuarks, &retType, &retValue))
- found = LoadFont (dpy, fontInfo, ((char *) retValue.addr),
- &(fontInfo->def_idx));
- /*
- * If the XLFD font spec wasn't in the parent's database,
- * look at my private database.
- */
- if (found == False &&
- XrmQGetResource (fontInfo->def_font_db,
- DefaultFontQuarks, DefaultFontQuarks,
- &retType, &retValue))
- found = LoadFont (dpy, fontInfo, ((char *) retValue.addr),
- &(fontInfo->def_idx));
- /*
- * If still no luck, use the string font passed in.
- */
- if (found == False)
- fontInfo->def_idx = strIdx;
- /*
- * Remember we got this font for this quark string.
- */
- retValue.size = sizeof (int);
- retValue.addr = (XtPointer) &(fontInfo->def_idx);
- XrmQPutResource (&(fontInfo->font_idx_db), ((XrmBindingList) FontBindings),
- DefaultFontQuarks, _DtHelpXrmInt, &retValue);
- }
- /******************************************************************************
- * Function: XFontStruct *__DtHelpFontStructGet (long font_index );
- *
- * Parameters: font_index Specifies an index into the Font Structure
- * List.
- *
- * Return Value: Returns the font structure.
- *
- * Purpose:
- *
- *****************************************************************************/
- XFontStruct *
- __DtHelpFontStructGet (
- DtHelpDAFontInfo font_info,
- long font_index)
- {
- if (font_index > -1 && font_index < font_info.struct_cnt)
- return font_info.font_structs[font_index];
- return NULL;
- }
- /******************************************************************************
- * Function: XFontSet __DtHelpFontSetGet (long font_index);
- *
- * Parameters: font_index Specifies an index into the Font Set List.
- *
- * Return Value: Returns the font structure.
- *
- * Purpose:
- *
- *****************************************************************************/
- XFontSet
- __DtHelpFontSetGet (
- DtHelpDAFontInfo font_info,
- long font_index)
- {
- if (font_index < 0)
- {
- font_index = -font_index;
- font_index--;
- if (font_index < font_info.set_cnt)
- return font_info.font_sets[font_index];
- }
- return NULL;
- }
- /******************************************************************************
- * Function: long __DtHelpDefaultFontIndexGet ();
- *
- * Parameters:
- *
- * Return Value: Returns the index for the default font set/structure.
- *
- * Purpose:
- *
- *****************************************************************************/
- long
- __DtHelpDefaultFontIndexGet (
- DtHelpDispAreaStruct *pDAS)
- {
- return (pDAS->font_info.def_idx);
- }
- /******************************************************************************
- * Function: int __DtHelpFontMetrics (int font_index, int &ret_ascent,
- * &ret_descent);
- *
- * Parameters:
- *
- * Return Value: Returns the index for the default font set/structure.
- *
- * Purpose:
- *
- *****************************************************************************/
- void
- __DtHelpFontMetrics (
- DtHelpDAFontInfo font_info,
- long font_index,
- _DtCvUnit *ret_ascent,
- _DtCvUnit *ret_descent,
- _DtCvUnit *ret_char_width,
- _DtCvUnit *ret_super,
- _DtCvUnit *ret_sub)
- {
- XFontStruct **fontList;
- char **fontNames;
- int fontCount;
- _DtCvUnit maxAscent = -1;
- _DtCvUnit maxDescent = -1;
- _DtCvUnit maxCharW = -1;
- _DtCvUnit superOffset = 0;
- _DtCvUnit subOffset = 0;
- int i;
- if (font_index < 0)
- {
- font_index = -font_index;
- font_index--;
- if (font_index < font_info.set_cnt)
- {
- if (font_info.fs_metrics[font_index].inited == True)
- {
- maxAscent = font_info.fs_metrics[font_index].fm.ascent;
- maxDescent = font_info.fs_metrics[font_index].fm.descent;
- maxCharW = font_info.fs_metrics[font_index].fm.average_width;
- }
- else /* if (font_info.fs_metrics[font_index].inited == False) */
- {
- fontCount = XFontsOfFontSet(font_info.font_sets[font_index],
- &fontList, &fontNames);
- for (i = 0; i < fontCount; i++)
- {
- if (fontList[i]->ascent > maxAscent)
- maxAscent = fontList[i]->ascent;
- if (fontList[i]->descent > maxDescent)
- maxDescent = fontList[i]->descent;
- if (fontList[i]->max_bounds.width > maxCharW)
- maxCharW = fontList[i]->max_bounds.width;
- }
- font_info.fs_metrics[font_index].fm.ascent = maxAscent;
- font_info.fs_metrics[font_index].fm.descent = maxDescent;
- font_info.fs_metrics[font_index].fm.average_width = maxCharW;
- font_info.fs_metrics[font_index].inited = True;
- }
- }
- }
- else if (font_index < font_info.struct_cnt)
- {
- maxAscent = font_info.font_structs[font_index]->ascent;
- maxDescent = font_info.font_structs[font_index]->descent;
- maxCharW = font_info.font_structs[font_index]->max_bounds.width;
- }
- superOffset = (maxAscent * 40) / 100 + ((maxAscent % 40) > 19 ? 1 : 0);
- subOffset = superOffset;
- if (ret_ascent)
- *ret_ascent = maxAscent;
- if (ret_descent)
- *ret_descent = maxDescent;
- if (ret_char_width)
- *ret_char_width = maxCharW;
- if (ret_super)
- *ret_super = superOffset;
- if (ret_sub)
- *ret_sub = subOffset;
- }
- /******************************************************************************
- * Function: int _DtHelpGetExactFontIndex(Display dpy, char *xlfd_spec)
- *
- * Parameters:
- *
- * Return Value: 0 if successful, -1 if using default font index.
- *
- * Purpose: Try to load the specified font.
- *
- *****************************************************************************/
- int
- _DtHelpGetExactFontIndex (
- DtHelpDispAreaStruct *pDAS,
- const char *lang,
- const char *char_set,
- char *xlfd_spec,
- long *ret_idx)
- {
- int i = 0;
- int result = -1;
- long fontIndex = pDAS->font_info.def_idx;
- char **nameList;
- DtHelpDAFontInfo *fontInfo = &(pDAS->font_info);
- Display *dpy = XtDisplay(pDAS->dispWid);
- /*
- * look in my font data base to see if I've already processed
- * this xlfd_spec.
- */
- #ifndef REALLOC_INCR
- #define REALLOC_INCR 10
- #endif
- nameList = fontInfo->exact_fonts;
- if (NULL != nameList)
- {
- for (i = 0; NULL != *nameList && strcmp(*nameList, xlfd_spec); i++)
- nameList++;
- }
- if (NULL != nameList && NULL != *nameList)
- {
- fontIndex = fontInfo->exact_idx[i];
- result = 0;
- }
- else if (LoadFont(dpy, fontInfo, xlfd_spec, &fontIndex))
- {
- /*
- * make a copy of the font spec
- */
- xlfd_spec = strdup(xlfd_spec);
- if (NULL != xlfd_spec)
- {
- /*
- * now save it away for later tests.
- */
- fontInfo->exact_fonts = (char **) _DtHelpCeAddPtrToArray(
- (void **)fontInfo->exact_fonts,
- (void *) xlfd_spec);
- if (NULL != fontInfo->exact_fonts)
- {
- if (NULL == fontInfo->exact_idx)
- fontInfo->exact_idx = (int *) malloc(
- sizeof(int)*REALLOC_INCR);
- else if ((i + 1) % REALLOC_INCR == 0)
- fontInfo->exact_idx = (int *) realloc(fontInfo->exact_idx,
- sizeof(int) * (i + 1 + REALLOC_INCR));
-
- if (NULL != fontInfo->exact_idx)
- {
- char buffer[10];
- XrmValue retValue;
- XrmName xrmList[3];
- XrmQuark myQuark;
-
- fontInfo->exact_idx[i] = fontIndex;
- result = 0;
-
- /*
- * remember the character set for this font.
- */
- myQuark = XrmStringToQuark(char_set);
- sprintf (buffer, "%ld", fontIndex);
- retValue.size = sizeof (XrmQuark);
- retValue.addr = (XtPointer) &myQuark;
- xrmList[0] = XrmStringToQuark (buffer);
- xrmList[1] = XrmStringToQuark ("code_set");
- xrmList[2] = 0;
- XrmQPutResource (&(fontInfo->font_idx_db),
- ((XrmBindingList) FontBindings),
- xrmList, _DtHelpXrmQuark, &retValue);
-
- /*
- * remember the language for this font.
- */
- myQuark = XrmStringToQuark(lang);
- xrmList[1] = XrmStringToQuark ("language");
- XrmQPutResource (&(fontInfo->font_idx_db),
- ((XrmBindingList) FontBindings),
- xrmList, _DtHelpXrmQuark, &retValue);
- }
- }
- }
- }
- *ret_idx = fontIndex;
- return result;
- }
|