Solaris Internationalization Guide For Developers
  Search only this book
Download this book in PDF
CHAPTER 4

Overview of UTF-8



The Universal Transformation Format

The File System Safe Universal Transformation Format, or UTF-8, is an encoding defined by X/Open-Uniforum Joint Internationalization Working Group (XoJIG) of X/Open as a multi-byte representation of Unicode. The en_US.UTF-8 locale is the first locale that uses UTF-8 as the codeset to support multi-scripts in the Solaris system.
The locale supports computation for every code point value defined at Unicode 2.0/ ISO/IEC 10646-1. However, due to the limited set of font resources and the fact that few users intend to use all of the code point values, users of the en_US.UTF-8 locale will see only character glyphs from the following scripts:
  • ISO 8859-1 (Latin-1)
  • ISO 8859-2 (Latin-2)
  • ISO 8859-4 (Latin-4)
  • ISO 8859-5 (Latin/Cyrillic)
  • ISO 8859-7 (Latin/Greek)
  • ISO 8859-9 (Latin-5)
Also, since this locale is primarily for developers, it belongs to the developer 's cluster of Solaris 2.6. Therefore, when you install Solaris 2.6, you should choose the developer's cluster to install the locale on your system. For more information, see Chapter 5, "Installation."

Note - Motif and the CDE libraries have support for the en_UTF-8 locale. OpenWindows, XView, and OPENLOOK do not support en_UTF-8.

System Environment

Locale Environment Variable

To use the en_US.UTF-8 locale environment, make sure the locale is installed on your system, then choose the locale as follows.
In a TTY environment, choose the locale by setting the LANG environment variable to en_US.UTF-8, as in the following C-shell example:

  system% setenv LANG en_US.UTF-8  

Make sure other categories are not set (or are set to en_US.UTF-8) since the LANG environment variable has a lower priority than other environment variables such as LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_NUMERIC, LC_MONETARY and LC_TIME at setting the locale. See the setlocale(3C) man page for more details about the hierarchy of environment variables.
To check current locale settings in various categories, use the locale(1) utility as shown below:

  system% locale  
           LANG=en_US.UTF-8  
           LC_CTYPE="en_US.UTF-8"  
           LC_NUMERIC="en_US.UTF-8"  
           LC_TIME="en_US.UTF-8"  
           LC_COLLATE="en_US.UTF-8"  
           LC_MONETARY="en_US.UTF-8"  
           LC_MESSAGES="en_US.UTF-8"  
           LC_ALL=  

You can also start the en_US.UTF-8 environment from the CDE desktop at the CDE login screen's Options -> Language menu and choosing en_US.UTF-8.

TTY Environment Setup

To ensure correct text edit operation by a terminal or by a terminal emulator such as dtterm(1), users should push certain locale-specific STREAMS modules onto their Streams.
For more information on STREAMS modules and streams in general, see the STREAMS Programming Guide.
The following table shows STREAMS modules supported by the en_US.UTF-8 locale in the terminal environment:
TABLE 4-1 en_US.UTF-8
STREAMS ModuleDescription
/usr/kernel/strmod/eucu8UTF-8 STREAMS module for tail side
/usr/kernel/strmod/u8eucUTF-8 STREAMS module for head side
/usr/kernel/strmod/u8lat1Code conversion STREAMS module between UTF-8 and ISO 8859-1
Western European /usr/kernel/strmod/u8lat2Code conversion STREAMS module between UTF-8 and ISO 8859-2
Eastern European /usr/kernel/strmod/u8koi8Code conversion STREAMS module between UTF-8 and KOI8-R (Cyrillic)

Loading a STREAMS Module at Kernel

To load a STREAMS module at kernel, first become superuser:

  system% su  
  Password:  
  system#  

Use modinfo(1M) to be certain that your system has not already loaded the STREAMS module:

  system# modinfo | grep modulename  

If the STREAMS module, such as eucu8, is already installed, the output will look as follows:

  system# modinfo | grep eucu8  
  89 ff798000  4b13  18   1  eucu8 (eucu8 module)  
  system#  

If the module is already installed, you don't need to load it. However, if the module has not yet been loaded, use modload(1M) as follows:

  system# modload /usr/kernel/strmod/modulename  

The STREAMS module is installed at the kernel, and you can now push it onto a Stream.
To unload a module from the kernel, use modunload(1M), as shown below. In this example, the eucu8 module is being unloaded.

  system# modinfo | grep eucu8  
  89 ff798000  4b13  18   1  eucu8 (eucu8 module)  
  system# modunload -i 89  

dtterm and Terminals Capable of Input and Output UTF-8

The dtterm(1) and any terminal that supports input and output of UTF-8 codeset should have following STREAMS configuration:
head <-> u8euc <-> ttcompat <-> ldterm <-> eucu8 <-> pseudo-TTY

In this example, u8euc and eucu8 are the modules supported by the en_US.UTF-8 locale.
To set up the above STREAMS configuration, use strchg(1), as shown below:

  system% cat > /tmp/mystreams  
  u8euc  
  ttcompat  
  ldterm  
  eucu8  
  ptem  
  ^D  
  system% strchg -f /tmp/mystreams  

When using strchg(1), be sure you are either superuser or the owner of the device. To see the current configuration of the STREAMS, use strconf(1) as shown below:

  system% strconf  
  u8euc  
  ttcompat  
  ldterm  
  eucu8  
  ptem  
  pts  
  system%  

To revert to the original configuration, set the STREAMS configuration again as shown below:

  system% cat > /tmp/orgstreams  
  ttcompat  
  ldterm  
  ptem  
  ^D  
  system% strchg -f /tmp/orgstreams  

Terminal Support for Latin-1, Latin-2, or KOI8-R

For terminals that support only Latin-1 (ISO 8859-1), Latin-2 (ISO 8859-2), or KOI8-R, you should have the following STREAMS configuration:
head <-> u8euc <-> ttcompat <-> ldterm <-> eucu8 <-> u8lat1 <-> TTY


Note - This configuration is only for terminals that support Latin-1. For Latin-2 terminals, replace the STREAMS module u8lat1 with u8lat2. For KOI8-R terminals, replace the module with u8koi8.

To set up the STREAMS configuration shown above, use strchg(1), as follows:

  system% cat > /tmp/mystreams  
  u8euc  
  ttcompat  
  ldterm  
  eucu8  
  u8lat1  
  ptem  
  ^D  
  system% strchg -f /tmp/mystreams  

Be sure that you are either superuser or the owner of the device when you use strchg(1). To see the current configuration, use strconf(1), as follows:

  system% strconf  
  u8euc  
  ttcompat  
  ldterm  
  eucu8  
  u8lat1  
  ptem  
  pts  
  system%  

To revert to the original configuration, set the STREAMS configuration as follows:

  system% cat > /tmp/orgstreams  
  ttcompat  
  ldterm  
  ptem  
  ^D  
  system% strchg -f /tmp/orgstreams  

Setting Terminal Options

To set up UTF-8 text edit behavior on TTY, you must first set some terminal options using stty(1), as follows:

  system% /bin/stty cs8 -istrip defeucw  


Note - Since /usr/ucb/stty is not yet internationalized, you should use /bin/stty instead.

You can also query the current settings using stty(1) with the -a option, as shown below:

  system% /bin/stty -a  

Saving the Settings in ~/.cshrc

Assuming the necessary STREAMS modules are already loaded with the kernel, you can save the following lines in your .cshrc file (C shell example) for convenience:

  setenv LANG en_US.UTF-8  
  if ($?USER != 0 && $?prompt != 0) then  
                 cat >! /tmp/mystreams$$ << _EOF  
                 u8euc  
                 ttcompat  
                 ldtterm  
                 eucu8  
                 ptem  
  _EOF  
                 /bin/strchg -f /tmp/mystream$$  
                 /bin/rm -f /tmp/mystream$$  
                 /bin/stty cs8 -istrip defeucw  
  endif  

With these lines in your.cshrc file, you do not have to type all of the commands each time. Note that the second _EOF should be in the first column of the file. You can also create a file called mystreams and save it so the .cshrc references to mystreams instead of creating it whenever you start a C shell.

Code Conversions

The en_US.UTF-8 locale supports various code conversions among major codesets of several countries through iconv(1) and iconv(3).
The available fromcode and tocode names that can be applied to iconv(1) and iconv_open(3)are shown in TABLE 4-2:
TABLE 4-2 en_US.UTF-8
From CodeTo CodeDescription
646UTF-8ISO 646 (US-ASCII) to UTF-8
UTF-88859-1UTF-8 to ISO 8859-1
UTF-88859-2UTF-8 to ISO 8859-2
UTF-88859-3UTF-8 to ISO 8859-3
UTF-88859-4UTF-8 to ISO 8859-4
UTF-88859-5UTF-8 to ISO 8859-5 (Cyrillic)
UTF-88859-6UTF-8 to ISO 8859-6 (Arabic)
UTF-88859-7UTF-8 to ISO 8859-7 (Greek)
UTF-88859-8UTF-8 to ISO 8859-8 (Hebrew)
UTF-88859-9UTF-8 to ISO 8859-9
UTF-88859-10UTF-8 to ISO 8859-10
8859-1UTF-8ISO 8859-1 to UTF-8
8859-2UTF-8ISO 8859-2 to UTF-8
8859-3UTF-8ISO 8859-3 to UTF-8
8859-4UTF-8ISO 8859-4 to UTF-8
8859-5UTF-8ISO 8859-5 (Cyrillic) to UTF-8
8859-6UTF-8ISO 8859-6 (Arabic) to UTF-8
8859-7UTF-8ISO 8859-7 (Greek) to UTF-8
8859-8UTF-8ISO 8859-8 (Hebrew) to UTF-8
8859-9UTF-8ISO 8859-9 to UTF-8
8859-10UTF-8ISO 8859-10 to UTF-8
UTF-8KOI8-RUTF-8 to KOI8-R (Cyrillic
KOI8-RUTF-8KOI8-R (Cyrillic) to UTF-8
UTF-8UCS-2UTF-8 to UCS-2
UCS-2UTF-8UCS-2 to UTF-8
UTF-8UCS-4UTF-8 to UCS-4
UCS-4UTF-8UCS-4 to UTF-8
UTF-8UTF-7UTF-8 to UTF-7
TABLE 4-2 en_US.UTF-8 (Continued)
From CodeTo CodeDescription
UTF-7UTF-8UTF-7 to UTF-8
UTF-8UTF-16UTF-8 to UTF-16
UTF-16UTF-8UTF-16 to UTF-8
UTF-8eucJPUTF-8 to Japanese EUC
UTF-8PCKUTF-8 to Japanese PC Kanji (a.k.a. SJIS)
eucJPUTF-8Japanese EUC to UTF-8
PCKUTF-8Japanese PC Kanji (a.k.a. SJIS) to UTF-8
UTF-8ko_KR-eucUTF-8 to Korean EUC
UTF-8ko_KR-johapUTF-8 to Korean Johap (KS C 5601-1987
UTF-8ko_KR-johap92UTF-8 to Korean Johap (KS C 5601-1992)
UTF-8ko_KR-iso2022-7UTF-8 to ISO-2022-KR
ko_KR-eucUTF-8Korean EUC to UTF-8
ko_KR-johapUTF-8Korean Johap (KS C 5601-1987) to UTF-8
ko_KR-johap92UTF-8Korean Johap (KS C 5601-1992) to UTF-8
ko_KR-iso2022-7UTF-8ISO-2022-KR to UTF-8
UTF-8gb2312UTF-8 to Chinese/PRC EUC (GB 2312-1980
UTF-8iso2022UTF-8 to ISO-2022-CN
gb2312UTF-8Chinese/PRC EUC (GB 2312-1980) to UTF-8
iso2022UTF-8ISO-2022-CN to UTF-8
UTF-8zh_TW-eucUTF-8 to Chinese/Taiwan EUC (CNS 11643-1992)
UTF-8zh_TW-big5UTF-8 to Chinese/Taiwan Big5
UTF-8zh_TW-iso2022-7UTF-8 to ISO-2022-TW
zh_TW-eucUTF-8Chinese/Taiwan EUC (CNS 11643-1992) to UTF-8
zh_TW-big5UTF-8Chinese/Taiwan Big5 to UTF-8
zh_TW-iso2022-7UTF-8ISO-2022-TW to UTF-8
For more details on iconv code conversion, see the iconv(1), iconv_open(3), iconv(3), and iconv_close(3) man pages. For more information on available code conversions, see iconv_en_US.UTF-8(5).

Script Selection and Input Modes

The en_US.UTF-8 locale supports multiple scripts. This section contains details about each of the input modes: English, Cyrillic, and Greek.

English Input Mode

The English input mode encompasses not only the English alphabet but also characters with diacritical marks (for example, á, è, î, õ, and ü) and special characters (such as ¡, £, ¢, §, ¿).
The English input mode is the default mode for any application. The input mode is displayed at the bottom left corner of the GUI application, as shown in FIGURE 4-1:

Graphic

FIGURE 4-1

To insert characters with diacritical marks or special characters from Latin-1, Latin-2, Latin-4, and Latin-5, you must type a compose sequence, as shown in the following examples:
  • For Ä, press and release Compose, then A, and then "
  • For ¿, press and release Compose, then +, and then -
The following tables are the most commonly used compose sequences in Latin-1, Latin-2, Latin-4, and Latin-5 script input.
TABLE 4-3
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
Compose[spacebar][spacebar]Non-breaking space
Composes1Superscripted 1
Composes2Superscripted 2
Composes3Superscripted 3
Compose!!Inverted exclamation mark
ComposexoCurrency symbol '¤'
Composep!Paragraph symbol '¶'
TABLE 4-3 (Continued)
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
Compose/umu 'u'
Compose'
apostrophe '''
Compose'
acute accent '´'
Compose,,cedilla '¸'
Compose""dieresis '¨'
Compose-^macron '¯'
Composeoodegree '°'
Composexxmultiplication sign 'x'
Compose+-plus-minus '¿'
Compose--soft hyphen '-'
Compose-:division sign '/'
Compose-aordinal (feminine) a 'ã'
Composea-ordinal (feminine) a 'ã'
Compose-oordinal (masculine) o 'õ'
Composeo-ordinal (masculine) o 'õ'
Compose-,not sign '¬'
Compose..middle dot '.'
Compose12vulgar fraction 1/2
Compose14vulgar fraction 1/4
Compose34vulgar fraction 3/4
Compose<<left double angle quotation mark '«'
Compose>>right double angle quotation mark '»'
Compose??inverted question mark '¿'
ComposeA`A grave 'À'
ComposeA'A acute 'Á'
ComposeA*A ring above 'Å'
ComposeA"A dieresis 'Ä'
ComposeA^A circumflex 'Â'
ComposeA~A tilde 'Ã'
TABLE 4-3 (Continued)
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
ComposeAEAE diphthong 'Æ'
ComposeC,C cedilla 'Ç'
ComposeCocopyright sign '(C)'
ComposeD-Capital eth 'D'
ComposeE`E grave 'È'
ComposeE'E acute 'É'
ComposeE"E dieresis 'Ë'
ComposeE^E circumflex 'Ê'
ComposeI`I grave 'Ì'
ComposeI'I acute 'Í'
ComposeI"I dieresis 'Ï'
ComposeI^I circumflex 'Î'
ComposeL-pound sign '£'
ComposeN~N tilde 'Ñ'
ComposeO`O grave 'Ò'
ComposeO'O acute 'Ó'
ComposeO/O slash 'Ø'
ComposeO"O dieresis 'Ö'
ComposeO^O circumflex 'Ô'
ComposeO~O tilde 'Õ'
ComposeROregistered mark '(R)'
ComposeTHThorn 'P'
ComposeU`U grave 'Ù'
ComposeU'U acute 'Ú'
ComposeU"U dieresis 'Ü'
ComposeU^U circumflex 'Û'
ComposeY'Y acute 'Y'
ComposeY-yen sign '¥'
Composea`a grave 'à'
TABLE 4-3 (Continued)
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
Composea'a acute 'á'
Composea*a ring above 'å'
Composea"a dieresis 'ä'
Composea^a circumflex 'â'
Composea~a tilde 'ã'
Composea^a circumflex 'â'
Composeaeae diphthong 'æ'
Composec,c cedilla 'ç'
Composec/cent sign '¢'
Composecocopyright sign '(C)'
Composed-eth 'd'
Composee`e grave 'è'
Composee'e acute 'é'
Composee"e dieresis 'ë'
Composee^e circumflex 'ê'
Composei`i grave 'ì'
Composei'i acute 'í'
Composei"i dieresis 'ï'
Composei^i circumflex 'î'
Composen~n tilde 'ñ'
Composeo`o grave 'ò'
Composeo'o acute 'ó'
Composeo/o slash 'ø'
Composeo"o dieresis 'ö'
Composeo^o circumflex 'ô'
Composeo~o tilde 'õ'
ComposessGerman double s 'ß'
Composeththorn 'p'
Composeu`u grave 'ù'
TABLE 4-3 (Continued)
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
Composeu'u acute 'ú'
Composeu"u dieresis 'ü'
Composeu^u circumflex 'û'
Composey'y acute 'y'
Composey"y dieresis 'y'
Compose||broken bar '|'
TABLE 4-4 contains the Latin-2 compose sequences.

Note - Composes sequences defined in TABLE 4-3 are not included in TABLE 4-4.

TABLE 4-4
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
Composea 'ogonek á
Composeu' 'breve ü
Composev' 'caron
Compose"' 'double acute ¨
ComposeAaA ogonek a
ComposeAuA breve
ComposeC'C acute
ComposeCvC caron
ComposeDvD caron
Compose-DD stroke
ComposeEvE caron
ComposeEaE ogonek
ComposeL'L acute
ComposeL-L stroke
ComposeL>L caron
ComposeN'N acute
TABLE 4-4 (Continued)
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
ComposeNvN caron
ComposeO>O double acute
ComposeS'S acute
ComposeSvS caron
ComposeS,S cedilla
ComposeR'R acute
ComposeRvR caron
ComposeTvT caron
ComposeT,T cedilla
ComposeU*U ring above
ComposeU>U double acute
ComposeZ'Z acute
ComposeZvZ caron
ComposeZ.Z dot above
Composeaaa ogonek
Composeaua breve
Composec'c acute
Composecvc caron
Composedvd caron
Compose-dd stroke
Composeeve caron
Composeeae ogonek
Composel'l acute
Composel-l stroke
Composel>l caron
Composen'n acute
Composenvn caron
Composeo>o double acute
Composes's acute
TABLE 4-4 (Continued)
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
Composesvs caron
Composes,s cedilla
Composer'r acute
Composervr caron
Composetvt caron
Composet,t cedilla
Composeu*u ring above
Composeu>u double acute
Composez'z acute
Composezvz caron
Composez.z dot above
TABLE 4-5 contains the Latin-4 compose sequences.

Note - Compose sequences defined in TABLE 4-3 or TABLE 4-4 are not included in this table.

TABLE 4-5
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
Composekkkra
ComposeA_A macron
ComposeE_E macron
ComposeE.E dot above
ComposeG,G cedilla
ComposeI_I macron
ComposeI~I tilde
ComposeIaI ogonek
ComposeK,K cedilla
ComposeL,L cedilla
TABLE 4-5 (Continued)
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
ComposeN,N cedilla
ComposeO_O macron
ComposeR,R cedilla
ComposeT|T stroke
ComposeU~U tilde
ComposeUaU ogonek
ComposeU_U macron
ComposeNNEng
Composea_a macron
Composee_e macron
Composee.e dot above
Composeg,g cedilla
Composei_i macron
Composei~i tilde
Composeiai ogonek
Composek,k cedilla
Composel,l cedilla
Composen,n cedilla
Composeo_o macron
Composer,r cedilla
Composet|t stroke
Composeu~u tilde
Composeuau ogonek
Composeu_u macron
Composenneng

Note - Compose sequences defined in TABLE 4-3, TABLE 4-4, or TABLE 4-6 are not
included in this table.
TABLE 4-6
Press and ReleaseThen Press and ReleaseThen Press and ReleaseResult
ComposeGuG breve
ComposeI.I dot above
Composegug breve
Composei.i dotless

Cyrillic Input Mode

To switch to Cyrillic input mode from English input mode, press Compose c c. If you are currently in Greek input mode, first return to English input mode, then switch to Cyrillic mode.
The input mode is displayed at the bottom left corner of your GUI application, as shown FIGURE 4-2:

Graphic

FIGURE 4-2

After you switch to Cyrillic input mode, you cannot enter English text. To switch back to English input mode, type Control-Space. The Russian keyboard layout appears in FIGURE 4-3:

Graphic

FIGURE 4-3

Greek Input Mode

To switch to Greek input mode from English input mode, press Compose g g. If you are currently in Cyrillic input mode, first return to English input mode and then switch to Greek mode.
The input mode is displayed at the left bottom corner of your GUI application is shown in FIGURE 4-4:

Graphic

FIGURE 4-4

After you switch to Greek input mode, you cannot enter English text. To switch back to English input mode, type Control-Space. The Greek keyboard layouts appear in FIGURE 4-5 and FIGURE 4-6:

Graphic

FIGURE 4-5

Graphic

FIGURE 4-6


Printing

The en_US.UTF-8 locale provides a printing utility, xutops(1). This utility can print flat text files written in UTF-8 using X11 bitmap fonts available on the system. Because the output from the utility is standard PostScript, the output can be sent to any PostScript printer.
To use the utility, type the following:

  system% xutops filename | lp  

You can also use the utility as a filter since the utility accepts stdin stream:

  system% lpr filename | xutops | lp  

You can also set the utility as a printing filter for a line printer. For example, the following command sequence tells the printer service LP that the printer lp1 accepts only xutops format files. This command line also installs the printer lp1 on port/dev/ttya. See the lpadmin(1M) man page for more details.

  system# lpadmin -p lp1 -v /dev/ttya -I XUTOPS  
  system# accept lp1  
  system# enable lp1  

Using lpfilter(1M), you can add the utility as a filter as follows:

  system# lpfilter -f filtername -F pathname  

The command tells LP that a converter (in this case, xutops) is available through the filter description file named pathname. Pathname can be as follows:

  Input types: simple  
  Output types: XUTOPS  
  Command: /usr/openwin/bin/xutops  

The filter converts default type file input to PostScript output using /usr/openwin/bin/xutops.
To print a UTF-8 text file, use the following command:

  system% lp -T XUTOPS UTF-8-file  

For more details on xutops(1), refer to xutops(1) and xutops(5) man pages.

Programming Environment

Appropriately internationalized applications should automatically enable the en_US.UTF-8 locale, but proper FontSet/XmFontList definitions in the application's resource file are required.
For information on internationalized applications, see Creating Worldwide Software: Solaris International Developer's Guide, 2nd edition.

FontSet Used with UTF-8

The en_US.UTF-8 locale in Solaris 2.6 supports fonts for the following charsets:
  • ISO 8859-1
  • ISO 8859-2
  • ISO 8859-4
  • ISO 8859-5
  • ISO 8859-7
  • ISO 8859-9
Because Solaris 2.6 supports the CDE desktop environment, each charset has guaranteed sets of fonts.
The following list shows the Latin-1 fonts that are supported in Solaris 2.6:
· -dt-interface system-medium-r-normal-xxs sans-10-100-72-72-p-59-iso8859-1
· -dt-interface system-medium-r-normal-xs sans-12-120-72-72-p-71-iso8859-1
· -dt-interface system-medium-r-normal-s sans-14-140-72-72-p-82-iso8859-1
· -dt-interface system-medium-r-normal-m sans-17-170-72-72-p-97-iso8859-1
· -dt-interface system-medium-r-normal-l sans-18-180-72-72-p-106-iso8859-1
· -dt-interface system-medium-r-normal-xl sans-20-200-72-72-p-114-iso8859-1
· -dt-interface system-medium-r-normal-xxl sans-24-240-72-72-p-137-iso8859-1

For information on CDE common font aliases, including -dt-interface user-* and -dt-application-* aliases, see Common Desktop Environment: Internationalization Programmer's Guide.
A fontset for an application should have a collection of fonts that contains each of the above charsets, as in the following example:

  fs = XCreateFontSet(display,  
       "-dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-iso8859-1,  
       -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-iso8859-2,  
       -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-iso8859-4,  
       -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-iso8859-5,  
       -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-iso8859-7,  
       -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-iso8859-9",  
       &missing_ptr, &missing_count, &def_string);