1e9fcaa8aSmrg<?xml version="1.0" encoding="UTF-8" ?>
2e9fcaa8aSmrg<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
3eb411b4bSmrg                   "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
4eb411b4bSmrg[
5eb411b4bSmrg<!ENTITY % defs SYSTEM "defs.ent"> %defs;
6eb411b4bSmrg]>
7e9fcaa8aSmrg
857f47464Smrg<book id="localedb">
9e9fcaa8aSmrg
10e9fcaa8aSmrg<bookinfo>
11e9fcaa8aSmrg   <title>X Locale Database Specification</title>
12eb411b4bSmrg   <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
13e9fcaa8aSmrg   <authorgroup>
14e9fcaa8aSmrg      <author>
15e9fcaa8aSmrg         <firstname>Yoshio</firstname><surname>Horiuchi</surname>
16e9fcaa8aSmrg         <affiliation><orgname>IBM Japan</orgname></affiliation>
17e9fcaa8aSmrg      </author>
18e9fcaa8aSmrg   </authorgroup>
19e9fcaa8aSmrg   <copyright><year>1994</year><holder>IBM Corporation</holder></copyright>
20e9fcaa8aSmrg
21e9fcaa8aSmrg<legalnotice>
22e9fcaa8aSmrg<para>
23e9fcaa8aSmrgLicense to use, copy, modify, and distribute this software and its documentation for
24e9fcaa8aSmrgany purpose and without fee is hereby granted, provided that the above copyright notice
25e9fcaa8aSmrgappear in all copies and that both that copyright notice and this permission notice
26e9fcaa8aSmrgappear in supporting documentation, and that the name of IBM not be used in advertising
27e9fcaa8aSmrgor publicity pertaining to distribution of the software without specific, written
28e9fcaa8aSmrgprior permission.
29e9fcaa8aSmrg</para>
30e9fcaa8aSmrg<para>
31e9fcaa8aSmrgIBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
32e9fcaa8aSmrgWARRANTIES OF MERCHANTABILITY, FITNESS, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS,
33e9fcaa8aSmrgIN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES
34e9fcaa8aSmrgOR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
35e9fcaa8aSmrgAN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
36e9fcaa8aSmrgWITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
37e9fcaa8aSmrg</para>
38eb411b4bSmrg</legalnotice>
39e9fcaa8aSmrg
40eb411b4bSmrg<legalnotice>
41eb411b4bSmrg<para role="multiLicensing">Copyright © 1994 X Consortium</para>
42e9fcaa8aSmrg<para>
43e9fcaa8aSmrgPermission is hereby granted, free of charge, to any person obtaining a copy
44e9fcaa8aSmrgof this software and associated documentation files
45e9fcaa8aSmrg(the &ldquo;Software&rdquo;), to deal in the Software without restriction,
46e9fcaa8aSmrgincluding without limitation the rights to use, copy, modify, merge, publish,
47e9fcaa8aSmrgdistribute, sublicense, and/or sell copies of the Software, and to permit
48e9fcaa8aSmrgpersons to whom the Software is furnished to do so, subject to the following
49e9fcaa8aSmrgconditions:
50e9fcaa8aSmrg</para>
51e9fcaa8aSmrg
52e9fcaa8aSmrg<para>
53e9fcaa8aSmrgThe above copyright notice and this permission notice shall be included in all
54e9fcaa8aSmrgcopies or substantial portions of the Software.
55e9fcaa8aSmrg</para>
56e9fcaa8aSmrg
57e9fcaa8aSmrg<para>
58e9fcaa8aSmrgTHE SOFTWARE IS PROVIDED &ldquo;AS IS&rdquo;, WITHOUT WARRANTY OF ANY KIND,
59e9fcaa8aSmrgEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
60e9fcaa8aSmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN
61e9fcaa8aSmrgNO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
62e9fcaa8aSmrgLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
63e9fcaa8aSmrgOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
64e9fcaa8aSmrgTHE SOFTWARE.
65e9fcaa8aSmrg</para>
66e9fcaa8aSmrg
67e9fcaa8aSmrg<para>
68eb411b4bSmrgExcept as contained in this notice, the name of the X Consortium shall not be
69eb411b4bSmrgused in advertising or otherwise to promote the sale, use or other dealings in
70eb411b4bSmrgthis Software without prior written authorization from the X Consortium.
71e9fcaa8aSmrg</para>
72e9fcaa8aSmrg
73e9fcaa8aSmrg<para>X Window System is a trademark of The Open Group.</para>
74e9fcaa8aSmrg
75e9fcaa8aSmrg</legalnotice>
76e9fcaa8aSmrg</bookinfo>
77e9fcaa8aSmrg
78eb411b4bSmrg<chapter id='LocaleDB'>
79e9fcaa8aSmrg<title>LocaleDB</title>
80e9fcaa8aSmrg
81e9fcaa8aSmrg<sect1 id="General">
82e9fcaa8aSmrg<title>General</title>
83e9fcaa8aSmrg<para>
84e9fcaa8aSmrgAn X Locale Database contains the subset of a user's environment that
85e9fcaa8aSmrgdepends on language, in X Window System.  It is made up from one or more
86e9fcaa8aSmrgcategories.  Each category consists of some classes and sub-classes.
87e9fcaa8aSmrg</para>
88e9fcaa8aSmrg
89e9fcaa8aSmrg<para>
90e9fcaa8aSmrgIt is provided as a plain ASCII text file, so a user can change its
91e9fcaa8aSmrgcontents easily.  It allows a user to customize the behavior of
92e9fcaa8aSmrginternationalized portion of Xlib without changing Xlib itself.
93e9fcaa8aSmrg</para>
94e9fcaa8aSmrg
95e9fcaa8aSmrg<para>
96e9fcaa8aSmrgThis document describes;
97e9fcaa8aSmrg</para>
98e9fcaa8aSmrg
99e9fcaa8aSmrg<itemizedlist>
100e9fcaa8aSmrg  <listitem>
101e9fcaa8aSmrg    <para>
102e9fcaa8aSmrgDatabase Format Definition
103e9fcaa8aSmrg    </para>
104e9fcaa8aSmrg  </listitem>
105e9fcaa8aSmrg  <listitem>
106e9fcaa8aSmrg    <para>
107e9fcaa8aSmrgContents of Database in sample implementation
108e9fcaa8aSmrg<!-- .RE -->
109e9fcaa8aSmrg    </para>
110e9fcaa8aSmrg  </listitem>
111e9fcaa8aSmrg</itemizedlist>
112e9fcaa8aSmrg
113e9fcaa8aSmrg<para>
114e9fcaa8aSmrgSince it is hard to define the set of required information for all
115e9fcaa8aSmrgplatforms, only the flexible database format is defined.
116e9fcaa8aSmrgThe available entries in database are implementation dependent.
117e9fcaa8aSmrg</para>
118e9fcaa8aSmrg
119e9fcaa8aSmrg</sect1>
120e9fcaa8aSmrg<sect1 id="Database_Format_Definition">
121e9fcaa8aSmrg<title>Database Format Definition</title>
122e9fcaa8aSmrg<para>
123e9fcaa8aSmrgThe X Locale Database contains one or more category definitions.
124e9fcaa8aSmrgThis section describes the format of each category definition.
125e9fcaa8aSmrg</para>
126e9fcaa8aSmrg
127e9fcaa8aSmrg<para>
128e9fcaa8aSmrgThe category definition consists of one or more class definitions.
129e9fcaa8aSmrgEach class definition has a pair of class name and class value, or
130e9fcaa8aSmrghas several subclasses which are enclosed by the left brace ({) and
131e9fcaa8aSmrgthe right brace (}).
132e9fcaa8aSmrg</para>
133e9fcaa8aSmrg
134e9fcaa8aSmrg<para>
135e9fcaa8aSmrgComments can be placed by using the number sign character (#).
136e9fcaa8aSmrgPutting the number sign character on the top of the line indicates
137e9fcaa8aSmrgthat the entire line is comment.  Also, putting any whitespace character
138e9fcaa8aSmrgfollowed by the number sign character indicates that a part of the line
139e9fcaa8aSmrg(from the number sign to the end of the line) is comment.
140e9fcaa8aSmrgA line can be continued by placing backslash (\) character as the
141e9fcaa8aSmrglast character on the line;  this continuation character will be
142e9fcaa8aSmrgdiscarded from the input.  Comment lines cannot be continued on
143e9fcaa8aSmrga subsequent line using an escaped new line character.
144e9fcaa8aSmrg</para>
145e9fcaa8aSmrg
146e9fcaa8aSmrg<para>
147e9fcaa8aSmrgX Locale Database only accepts XPCS, the X Portable Character Set.
148e9fcaa8aSmrgThe reserved symbols are;  the quotation mark("), the number sign (#),
149e9fcaa8aSmrgthe semicolon(;), the backslash(\), the left brace({) and
150e9fcaa8aSmrgthe right brace(}).
151e9fcaa8aSmrg</para>
152e9fcaa8aSmrg
153e9fcaa8aSmrg<para>
154e9fcaa8aSmrgThe format of category definition is;
155e9fcaa8aSmrg</para>
156e9fcaa8aSmrg
157e9fcaa8aSmrg<informaltable frame="none">
158eb411b4bSmrg  <?dbfo keep-together="auto" ?>
159eb411b4bSmrg  <tgroup cols='3' align='left' colsep='0' rowsep='0'>
160eb411b4bSmrg  <colspec colname='c1' colwidth='3.0*'/>
161eb411b4bSmrg  <colspec colname='c2' colwidth='1.0*'/>
162eb411b4bSmrg  <colspec colname='c3' colwidth='6.0*'/>
163e9fcaa8aSmrg  <tbody>
164eb411b4bSmrg    <row>
165e9fcaa8aSmrg      <entry>CategoryDefinition</entry>
166e9fcaa8aSmrg      <entry>::=</entry>
167e9fcaa8aSmrg      <entry>CategoryHeader CategorySpec CategoryTrailer</entry>
168e9fcaa8aSmrg    </row>
169eb411b4bSmrg    <row>
170e9fcaa8aSmrg      <entry>CategoryHeader</entry>
171e9fcaa8aSmrg      <entry>::=</entry>
172e9fcaa8aSmrg      <entry>CategoryName NL</entry>
173e9fcaa8aSmrg    </row>
174eb411b4bSmrg    <row>
175e9fcaa8aSmrg      <entry>CategorySpec</entry>
176e9fcaa8aSmrg      <entry>::=</entry>
177e9fcaa8aSmrg      <entry>{ ClassSpec }</entry>
178e9fcaa8aSmrg    </row>
179eb411b4bSmrg    <row>
180e9fcaa8aSmrg      <entry>CategoryTrailer</entry>
181e9fcaa8aSmrg      <entry>::=</entry>
182e9fcaa8aSmrg      <entry>"END" Delimiter CategoryName NL</entry>
183e9fcaa8aSmrg    </row>
184eb411b4bSmrg    <row>
185e9fcaa8aSmrg      <entry>CategoryName</entry>
186e9fcaa8aSmrg      <entry>::=</entry>
187e9fcaa8aSmrg      <entry>String</entry>
188e9fcaa8aSmrg    </row>
189eb411b4bSmrg    <row>
190e9fcaa8aSmrg      <entry>ClassSpec</entry>
191e9fcaa8aSmrg      <entry>::=</entry>
192e9fcaa8aSmrg      <entry>ClassName Delimiter ClassValue NL</entry>
193e9fcaa8aSmrg    </row>
194eb411b4bSmrg    <row>
195e9fcaa8aSmrg      <entry>ClassName</entry>
196e9fcaa8aSmrg      <entry>::=</entry>
197e9fcaa8aSmrg      <entry>String</entry>
198e9fcaa8aSmrg    </row>
199eb411b4bSmrg    <row>
200e9fcaa8aSmrg      <entry>ClassValue</entry>
201e9fcaa8aSmrg      <entry>::=</entry>
202e9fcaa8aSmrg      <entry>ValueList | "{" NL { ClassSpec } "}"</entry>
203e9fcaa8aSmrg    </row>
204eb411b4bSmrg    <row>
205e9fcaa8aSmrg      <entry>ValueList</entry>
206e9fcaa8aSmrg      <entry>::=</entry>
207e9fcaa8aSmrg      <entry>Value | Value ";" ValueList</entry>
208e9fcaa8aSmrg    </row>
209eb411b4bSmrg    <row>
210e9fcaa8aSmrg      <entry>Value</entry>
211e9fcaa8aSmrg      <entry>::=</entry>
212e9fcaa8aSmrg      <entry>ValuePiece | ValuePiece Value</entry>
213e9fcaa8aSmrg    </row>
214eb411b4bSmrg    <row>
215e9fcaa8aSmrg      <entry>ValuePiece</entry>
216e9fcaa8aSmrg      <entry>::=</entry>
217e9fcaa8aSmrg      <entry>String | QuotedString | NumericString</entry>
218e9fcaa8aSmrg    </row>
219eb411b4bSmrg    <row>
220e9fcaa8aSmrg      <entry>String</entry>
221e9fcaa8aSmrg      <entry>::=</entry>
222e9fcaa8aSmrg      <entry>Char { Char }</entry>
223e9fcaa8aSmrg    </row>
224eb411b4bSmrg    <row>
225e9fcaa8aSmrg      <entry>QuotedString</entry>
226e9fcaa8aSmrg      <entry>::=</entry>
227e9fcaa8aSmrg      <entry>""" QuotedChar { QuotedChar } """</entry>
228e9fcaa8aSmrg    </row>
229eb411b4bSmrg    <row>
230e9fcaa8aSmrg      <entry>NumericString</entry>
231e9fcaa8aSmrg      <entry>::=</entry>
232e9fcaa8aSmrg      <entry>"\\o" OctDigit { OctDigit }</entry>
233e9fcaa8aSmrg    </row>
234eb411b4bSmrg    <row>
235e9fcaa8aSmrg      <entry></entry>
236e9fcaa8aSmrg      <entry>|</entry>
237e9fcaa8aSmrg      <entry>"\\d" DecDigit { DecDigit }</entry>
238e9fcaa8aSmrg    </row>
239eb411b4bSmrg    <row>
240e9fcaa8aSmrg      <entry></entry>
241e9fcaa8aSmrg      <entry>|</entry>
242e9fcaa8aSmrg      <entry>"\\x" HexDigit { HexDigit }</entry>
243e9fcaa8aSmrg    </row>
244eb411b4bSmrg    <row>
245e9fcaa8aSmrg      <entry>Char</entry>
246e9fcaa8aSmrg      <entry>::=</entry>
247e9fcaa8aSmrg      <entry>&lt;XPCS except NL, Space or unescaped reserved symbols&gt;</entry>
248e9fcaa8aSmrg    </row>
249eb411b4bSmrg    <row>
250e9fcaa8aSmrg      <entry>QuotedChar</entry>
251e9fcaa8aSmrg      <entry>::=</entry>
252e9fcaa8aSmrg      <entry>&lt;XPCS except unescaped """&gt;</entry>
253e9fcaa8aSmrg    </row>
254eb411b4bSmrg    <row>
255e9fcaa8aSmrg      <entry>OctDigit</entry>
256e9fcaa8aSmrg      <entry>::=</entry>
257e9fcaa8aSmrg      <entry>&lt;character in the range of "0" - "7"&gt;</entry>
258e9fcaa8aSmrg    </row>
259eb411b4bSmrg    <row>
260e9fcaa8aSmrg      <entry>DecDigit</entry>
261e9fcaa8aSmrg      <entry>::=</entry>
262e9fcaa8aSmrg      <entry>&lt;character in the range of "0" - "9"&gt;</entry>
263e9fcaa8aSmrg    </row>
264eb411b4bSmrg    <row>
265e9fcaa8aSmrg      <entry>HexDigit</entry>
266e9fcaa8aSmrg      <entry>::=</entry>
267e9fcaa8aSmrg      <entry>&lt;character in the range of "0" - "9", "a" - "f", "A" - "F"&gt;</entry>
268e9fcaa8aSmrg    </row>
269eb411b4bSmrg    <row>
270e9fcaa8aSmrg      <entry>Delimiter</entry>
271e9fcaa8aSmrg      <entry>::=</entry>
272e9fcaa8aSmrg      <entry>Space { Space }</entry>
273e9fcaa8aSmrg    </row>
274eb411b4bSmrg    <row>
275e9fcaa8aSmrg      <entry>Space</entry>
276e9fcaa8aSmrg      <entry>::=</entry>
277e9fcaa8aSmrg      <entry>&lt;space&gt; | &lt;horizontal tab&gt;</entry>
278e9fcaa8aSmrg    </row>
279eb411b4bSmrg    <row>
280e9fcaa8aSmrg      <entry>NL</entry>
281e9fcaa8aSmrg      <entry>::=</entry>
282e9fcaa8aSmrg      <entry>&lt;newline&gt;</entry>
283e9fcaa8aSmrg    </row>
284e9fcaa8aSmrg  </tbody>
285e9fcaa8aSmrg  </tgroup>
286e9fcaa8aSmrg</informaltable>
287e9fcaa8aSmrg
288e9fcaa8aSmrg<para>
289e9fcaa8aSmrgElements separated by vertical bar (|) are alternatives.  Curly
290e9fcaa8aSmrgbraces ({...}) indicate zero or more repetitions of the enclosed
291e9fcaa8aSmrgelements.  Square brackets ([...]) indicate that the enclosed element
292e9fcaa8aSmrgis optional. Quotes ("...") are used around literal characters.
293e9fcaa8aSmrg</para>
294e9fcaa8aSmrg
295e9fcaa8aSmrg<para>
296e9fcaa8aSmrgThe backslash, which is not the top character of the NumericString, is
297e9fcaa8aSmrgrecognized as an escape character, so that the next one character is
298e9fcaa8aSmrgtreated as a literal character.  For example, the two-character
299e9fcaa8aSmrgsequence, ""\"""(the backslash followed by the quotation mark) is
300e9fcaa8aSmrgrecognized and replaced with a quotation mark character.
301e9fcaa8aSmrgAny whitespace character, that is not the Delimiter, unquoted and
302e9fcaa8aSmrgunescaped, is ignored.
303e9fcaa8aSmrg</para>
304e9fcaa8aSmrg
305e9fcaa8aSmrg</sect1>
306eb411b4bSmrg<sect1 id='Contents_of_Database'>
307eb411b4bSmrg<title>Contents of Database</title>
308e9fcaa8aSmrg<para>
309e9fcaa8aSmrgThe available categories and classes depend on implementation, because
310e9fcaa8aSmrgdifferent platform will require different information set.
311e9fcaa8aSmrgFor example, some platform have system locale but some platform don't.
312e9fcaa8aSmrgFurthermore, there might be a difference in functionality even if the
313e9fcaa8aSmrgplatform has system locale.
314e9fcaa8aSmrg</para>
315e9fcaa8aSmrg
316e9fcaa8aSmrg<para>
317e9fcaa8aSmrgIn current sample implementation, categories listed below are available.
318e9fcaa8aSmrg</para>
319e9fcaa8aSmrg
320e9fcaa8aSmrg<informaltable frame="none">
321eb411b4bSmrg  <?dbfo keep-together="always" ?>
322eb411b4bSmrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
323eb411b4bSmrg  <colspec colname='c1' colwidth='1.0*'/>
324e9fcaa8aSmrg  <tbody>
325eb411b4bSmrg    <row>
326e9fcaa8aSmrg      <entry>XLC_FONTSET:XFontSet relative information</entry>
327e9fcaa8aSmrg    </row>
328eb411b4bSmrg    <row>
329e9fcaa8aSmrg      <entry>XLC_XLOCALE:Character classification and conversion information</entry>
330e9fcaa8aSmrg    </row>
331e9fcaa8aSmrg  </tbody>
332e9fcaa8aSmrg  </tgroup>
333e9fcaa8aSmrg</informaltable>
334e9fcaa8aSmrg
335e9fcaa8aSmrg</sect1>
336e9fcaa8aSmrg<sect1 id="XLC_FONTSET_Category">
337e9fcaa8aSmrg<title>XLC_FONTSET Category</title>
338e9fcaa8aSmrg<para>
339e9fcaa8aSmrgThe XLC_FONTSET category defines the XFontSet relative information.
340e9fcaa8aSmrgIt contains the CHARSET_REGISTRY-CHARSET_ENCODING name and character
341e9fcaa8aSmrgmapping side (GL, GR, etc), and is used in Output Method (OM).
342e9fcaa8aSmrg</para>
343e9fcaa8aSmrg
344eb411b4bSmrg<informaltable frame="topbot">
345eb411b4bSmrg  <?dbfo keep-together="always" ?>
346eb411b4bSmrg  <tgroup cols='3' align='left' colsep='0' rowsep='0'>
347e9fcaa8aSmrg  <thead>
348eb411b4bSmrg  <colspec colname='c1' colwidth='3.0*'/>
349eb411b4bSmrg  <colspec colname='c2' colwidth='1.0*'/>
350eb411b4bSmrg  <colspec colname='c3' colwidth='3.0*'/>
351eb411b4bSmrg    <row rowsep='1'>
352e9fcaa8aSmrg      <entry>class</entry>
353e9fcaa8aSmrg      <entry>super class</entry>
354e9fcaa8aSmrg      <entry>description</entry>
355e9fcaa8aSmrg    </row>
356e9fcaa8aSmrg  </thead>
357e9fcaa8aSmrg  <tbody>
358eb411b4bSmrg    <row>
359e9fcaa8aSmrg      <entry>fsN</entry>
360e9fcaa8aSmrg      <entry></entry>
361e9fcaa8aSmrg      <entry>Nth fontset (N=0,1,2, ...)</entry>
362e9fcaa8aSmrg    </row>
363eb411b4bSmrg    <row>
364e9fcaa8aSmrg      <entry>charset</entry>
365e9fcaa8aSmrg      <entry>fsN</entry>
366e9fcaa8aSmrg      <entry>list of encoding name</entry>
367e9fcaa8aSmrg    </row>
368eb411b4bSmrg    <row>
369e9fcaa8aSmrg      <entry>font</entry>
370e9fcaa8aSmrg      <entry>fsN</entry>
371e9fcaa8aSmrg      <entry>list of font encoding name</entry>
372e9fcaa8aSmrg    </row>
373e9fcaa8aSmrg  </tbody>
374e9fcaa8aSmrg  </tgroup>
375e9fcaa8aSmrg</informaltable>
376e9fcaa8aSmrg
377e9fcaa8aSmrg<variablelist>
378e9fcaa8aSmrg  <varlistentry>
379e9fcaa8aSmrg    <term>fsN</term>
380e9fcaa8aSmrg    <listitem>
381e9fcaa8aSmrg      <para>
382e9fcaa8aSmrgIncludes an encoding information for Nth charset, where N is
383e9fcaa8aSmrgthe index number (0,1,2,...).  If there are 4 charsets available
384e9fcaa8aSmrgin current locale, 4 fontsets, fs0, fs1, fs2 and fs3, should be
385e9fcaa8aSmrgdefined.
386e9fcaa8aSmrgThis class has two subclasses, 'charset' and 'font'.
387e9fcaa8aSmrg      </para>
388e9fcaa8aSmrg    </listitem>
389e9fcaa8aSmrg  </varlistentry>
390e9fcaa8aSmrg  <varlistentry>
391e9fcaa8aSmrg    <term>charset</term>
392e9fcaa8aSmrg    <listitem>
393e9fcaa8aSmrg      <para>
394e9fcaa8aSmrgSpecifies an encoding information to be used internally in Xlib
395e9fcaa8aSmrgfor this fontset.  The format of value is;
396e9fcaa8aSmrg      </para>
397e9fcaa8aSmrg<informaltable frame="none">
398eb411b4bSmrg  <?dbfo keep-together="always" ?>
399eb411b4bSmrg  <tgroup cols='3' align='left' colsep='0' rowsep='0'>
400eb411b4bSmrg  <colspec colname='c1' colwidth='3.0*'/>
401eb411b4bSmrg  <colspec colname='c2' colwidth='1.0*'/>
402eb411b4bSmrg  <colspec colname='c3' colwidth='4.0*'/>
403e9fcaa8aSmrg  <tbody>
404eb411b4bSmrg    <row>
405e9fcaa8aSmrg      <entry>EncodingInfo</entry>
406e9fcaa8aSmrg      <entry>::=</entry>
407e9fcaa8aSmrg      <entry>EncodingName [ ":" EncodingSide ]</entry>
408e9fcaa8aSmrg    </row>
409eb411b4bSmrg    <row>
410e9fcaa8aSmrg      <entry>EncodingName</entry>
411e9fcaa8aSmrg      <entry>::=</entry>
412e9fcaa8aSmrg      <entry>CHARSET_REGISTRY-CHARSET_ENCODING</entry>
413e9fcaa8aSmrg    </row>
414eb411b4bSmrg    <row>
415e9fcaa8aSmrg      <entry>EncodingSide</entry>
416e9fcaa8aSmrg      <entry>::=</entry>
417e9fcaa8aSmrg      <entry>"GL" | "GR"</entry>
418e9fcaa8aSmrg    </row>
419e9fcaa8aSmrg  </tbody>
420e9fcaa8aSmrg  </tgroup>
421e9fcaa8aSmrg</informaltable>
422e9fcaa8aSmrg
423e9fcaa8aSmrg<para>
424e9fcaa8aSmrgFor detail definition of CHARSET_REGISTRY-CHARSET_ENCODING, refer
425eb411b4bSmrgto the <olink targetdoc='xlfd' targetptr='xlfd'><citetitle>X Logical Font Description Conventions</citetitle></olink> document.
426e9fcaa8aSmrg</para>
427e9fcaa8aSmrg<literallayout>
428e9fcaa8aSmrgexample:
429e9fcaa8aSmrg     ISO8859-1:GL
430e9fcaa8aSmrg</literallayout>
431e9fcaa8aSmrg    </listitem>
432e9fcaa8aSmrg  </varlistentry>
433e9fcaa8aSmrg  <varlistentry>
434e9fcaa8aSmrg    <term>font</term>
435e9fcaa8aSmrg    <listitem>
436e9fcaa8aSmrg      <para>
437e9fcaa8aSmrgSpecifies a list of encoding information which is used for searching
438e9fcaa8aSmrgappropriate font for this fontset.  The left most entry has highest
439e9fcaa8aSmrgpriority.
440e9fcaa8aSmrg      </para>
441e9fcaa8aSmrg    </listitem>
442e9fcaa8aSmrg  </varlistentry>
443e9fcaa8aSmrg</variablelist>
444e9fcaa8aSmrg
445e9fcaa8aSmrg</sect1>
446e9fcaa8aSmrg<sect1 id="XLC_XLOCALE_Category">
447e9fcaa8aSmrg<title>XLC_XLOCALE Category</title>
448e9fcaa8aSmrg<para>
449e9fcaa8aSmrgThe XLC_XLOCALE category defines character classification, conversion
450e9fcaa8aSmrgand other character attributes.
451e9fcaa8aSmrg</para>
452e9fcaa8aSmrg
453eb411b4bSmrg<informaltable frame="topbot">
454eb411b4bSmrg  <?dbfo keep-together="always" ?>
455eb411b4bSmrg  <tgroup cols='3' align='left' colsep='0' rowsep='0'>
456eb411b4bSmrg  <colspec colname='c1' colwidth='3.0*'/>
457eb411b4bSmrg  <colspec colname='c2' colwidth='1.0*'/>
458eb411b4bSmrg  <colspec colname='c3' colwidth='3.0*'/>
459e9fcaa8aSmrg  <thead>
460eb411b4bSmrg    <row rowsep='1'>
461e9fcaa8aSmrg      <entry>class</entry>
462e9fcaa8aSmrg      <entry>super class</entry>
463e9fcaa8aSmrg      <entry>description</entry>
464e9fcaa8aSmrg    </row>
465e9fcaa8aSmrg  </thead>
466e9fcaa8aSmrg  <tbody>
467eb411b4bSmrg    <row>
468e9fcaa8aSmrg      <entry>encoding_name</entry>
469e9fcaa8aSmrg      <entry></entry>
470e9fcaa8aSmrg      <entry>codeset name</entry>
471e9fcaa8aSmrg    </row>
472eb411b4bSmrg    <row>
473e9fcaa8aSmrg      <entry>mb_cur_max</entry>
474e9fcaa8aSmrg      <entry></entry>
475e9fcaa8aSmrg      <entry>MB_CUR_MAX</entry>
476e9fcaa8aSmrg    </row>
477eb411b4bSmrg    <row>
478e9fcaa8aSmrg      <entry>state_depend_encoding</entry>
479e9fcaa8aSmrg      <entry></entry>
480e9fcaa8aSmrg      <entry>state dependent or not</entry>
481e9fcaa8aSmrg    </row>
482eb411b4bSmrg    <row>
483e9fcaa8aSmrg      <entry>wc_encoding_mask</entry>
484e9fcaa8aSmrg      <entry></entry>
485e9fcaa8aSmrg      <entry>for parsing wc string</entry>
486e9fcaa8aSmrg    </row>
487eb411b4bSmrg    <row>
488e9fcaa8aSmrg      <entry>wc_shift_bits</entry>
489e9fcaa8aSmrg      <entry></entry>
490e9fcaa8aSmrg      <entry>for conversion between wc and mb</entry>
491e9fcaa8aSmrg    </row>
492eb411b4bSmrg    <row>
493e9fcaa8aSmrg      <entry>csN</entry>
494e9fcaa8aSmrg      <entry></entry>
495e9fcaa8aSmrg      <entry>Nth charset (N=0,1,2,...)</entry>
496e9fcaa8aSmrg    </row>
497eb411b4bSmrg    <row>
498e9fcaa8aSmrg      <entry>side</entry>
499e9fcaa8aSmrg      <entry>csN</entry>
500e9fcaa8aSmrg      <entry>mapping side (GL, etc)</entry>
501e9fcaa8aSmrg    </row>
502eb411b4bSmrg    <row>
503e9fcaa8aSmrg      <entry>length</entry>
504e9fcaa8aSmrg      <entry>csN</entry>
505e9fcaa8aSmrg      <entry>length of a character</entry>
506e9fcaa8aSmrg    </row>
507eb411b4bSmrg    <row>
508e9fcaa8aSmrg      <entry>mb_encoding</entry>
509e9fcaa8aSmrg      <entry>csN</entry>
510e9fcaa8aSmrg      <entry>for parsing mb string</entry>
511e9fcaa8aSmrg    </row>
512eb411b4bSmrg    <row>
513e9fcaa8aSmrg      <entry>wc_encoding</entry>
514e9fcaa8aSmrg      <entry>csN</entry>
515e9fcaa8aSmrg      <entry>for parsing wc string</entry>
516e9fcaa8aSmrg    </row>
517eb411b4bSmrg    <row>
518e9fcaa8aSmrg      <entry>ct_encoding</entry>
519e9fcaa8aSmrg      <entry>csN</entry>
520e9fcaa8aSmrg      <entry>list of encoding name for ct</entry>
521e9fcaa8aSmrg    </row>
522e9fcaa8aSmrg  </tbody>
523e9fcaa8aSmrg  </tgroup>
524e9fcaa8aSmrg</informaltable>
525e9fcaa8aSmrg
526e9fcaa8aSmrg<variablelist>
527e9fcaa8aSmrg  <varlistentry>
528e9fcaa8aSmrg    <term>encoding_name</term>
529e9fcaa8aSmrg    <listitem>
530e9fcaa8aSmrg      <para>
531e9fcaa8aSmrgSpecifies a codeset name of current locale.
532e9fcaa8aSmrg      </para>
533e9fcaa8aSmrg    </listitem>
534e9fcaa8aSmrg  </varlistentry>
535e9fcaa8aSmrg  <varlistentry>
536e9fcaa8aSmrg    <term>mb_cur_max</term>
537e9fcaa8aSmrg    <listitem>
538e9fcaa8aSmrg      <para>
539e9fcaa8aSmrgSpecifies a maximum allowable number of bytes in a multi-byte character.
540e9fcaa8aSmrgIt is corresponding to MB_CUR_MAX of "ISO/IEC 9899:1990 C Language Standard".
541e9fcaa8aSmrg      </para>
542e9fcaa8aSmrg    </listitem>
543e9fcaa8aSmrg  </varlistentry>
544e9fcaa8aSmrg  <varlistentry>
545e9fcaa8aSmrg    <term>state_depend_encoding</term>
546e9fcaa8aSmrg    <listitem>
547e9fcaa8aSmrg      <para>
548e9fcaa8aSmrgIndicates a current locale is state dependent. The value should be
549e9fcaa8aSmrgspecified "True" or "False".
550e9fcaa8aSmrg      </para>
551e9fcaa8aSmrg    </listitem>
552e9fcaa8aSmrg  </varlistentry>
553e9fcaa8aSmrg  <varlistentry>
554e9fcaa8aSmrg    <term>wc_encoding_mask</term>
555e9fcaa8aSmrg    <listitem>
556e9fcaa8aSmrg      <para>
557e9fcaa8aSmrgSpecifies a bit-mask for parsing wide-char string.  Each wide character is
558e9fcaa8aSmrgapplied bit-and operation with this bit-mask, then is classified into
559e9fcaa8aSmrgthe unique charset, by using 'wc_encoding'.
560e9fcaa8aSmrg      </para>
561e9fcaa8aSmrg    </listitem>
562e9fcaa8aSmrg  </varlistentry>
563e9fcaa8aSmrg  <varlistentry>
564e9fcaa8aSmrg    <term>wc_shift_bits</term>
565e9fcaa8aSmrg    <listitem>
566e9fcaa8aSmrg      <para>
567e9fcaa8aSmrgSpecifies a number of bit to be shifted for converting from a multi-byte
568e9fcaa8aSmrgcharacter to a wide character, and vice-versa.
569e9fcaa8aSmrg      </para>
570e9fcaa8aSmrg    </listitem>
571e9fcaa8aSmrg  </varlistentry>
572e9fcaa8aSmrg  <varlistentry>
573e9fcaa8aSmrg    <term>csN</term>
574e9fcaa8aSmrg    <listitem>
575e9fcaa8aSmrg      <para>
576e9fcaa8aSmrg<!-- .br -->
577e9fcaa8aSmrgIncludes a character set information for Nth charset, where N is the
578e9fcaa8aSmrgindex number (0,1,2,...).  If there are 4 charsets available in current
579e9fcaa8aSmrglocale, cs0, cs1, cs2 and cs3 should be defined. This class has five
580e9fcaa8aSmrgsubclasses, 'side', 'length', 'mb_encoding' 'wc_encoding' and 'ct_encoding'.
581e9fcaa8aSmrg      </para>
582e9fcaa8aSmrg    </listitem>
583e9fcaa8aSmrg  </varlistentry>
584e9fcaa8aSmrg  <varlistentry>
585e9fcaa8aSmrg    <term>side</term>
586e9fcaa8aSmrg    <listitem>
587e9fcaa8aSmrg      <para>
588e9fcaa8aSmrgSpecifies a mapping side of this charset. The format of this value is;
589e9fcaa8aSmrg      </para>
590e9fcaa8aSmrg      <literallayout>
591e9fcaa8aSmrg   Side    ::=  EncodingSide[":Default"]
592e9fcaa8aSmrg      </literallayout>
593e9fcaa8aSmrg      <para>
594e9fcaa8aSmrgThe suffix ":Default" can be specified.  It indicates that a character
595e9fcaa8aSmrgbelongs to the specified side is mapped to this charset in initial state.
596e9fcaa8aSmrg      </para>
597e9fcaa8aSmrg    </listitem>
598e9fcaa8aSmrg  </varlistentry>
599e9fcaa8aSmrg  <varlistentry>
600e9fcaa8aSmrg    <term>length</term>
601e9fcaa8aSmrg    <listitem>
602e9fcaa8aSmrg      <para>
603e9fcaa8aSmrg<!-- .br -->
604e9fcaa8aSmrgSpecifies a number of bytes of a multi-byte character of this charset.
605e9fcaa8aSmrgIt should not contain the length of any single-shift sequence.
606e9fcaa8aSmrg      </para>
607e9fcaa8aSmrg    </listitem>
608e9fcaa8aSmrg  </varlistentry>
609e9fcaa8aSmrg  <varlistentry>
610e9fcaa8aSmrg    <term>mb_encoding</term>
611e9fcaa8aSmrg    <listitem>
612e9fcaa8aSmrg      <para>
613e9fcaa8aSmrgSpecifies a list of shift sequence for parsing multi-byte string.
614e9fcaa8aSmrgThe format of this value is;
615e9fcaa8aSmrg      </para>
616e9fcaa8aSmrg<informaltable frame="none">
617eb411b4bSmrg  <?dbfo keep-together="always" ?>
618eb411b4bSmrg  <tgroup cols='3' align='left' colsep='0' rowsep='0'>
619eb411b4bSmrg  <colspec colname='c1' colwidth='3.0*'/>
620eb411b4bSmrg  <colspec colname='c2' colwidth='1.0*'/>
621eb411b4bSmrg  <colspec colname='c3' colwidth='5.0*'/>
622e9fcaa8aSmrg  <tbody>
623eb411b4bSmrg    <row>
624e9fcaa8aSmrg      <entry>MBEncoding</entry>
625e9fcaa8aSmrg      <entry>::=</entry>
626e9fcaa8aSmrg      <entry>ShiftType ShiftSequence</entry>
627e9fcaa8aSmrg    </row>
628eb411b4bSmrg    <row>
629e9fcaa8aSmrg      <entry></entry>
630e9fcaa8aSmrg      <entry>|</entry>
631e9fcaa8aSmrg      <entry>ShiftType ShiftSequence ";" MBEncoding</entry>
632e9fcaa8aSmrg    </row>
633eb411b4bSmrg    <row>
634e9fcaa8aSmrg      <entry>ShiftType</entry>
635e9fcaa8aSmrg      <entry>::=</entry>
636e9fcaa8aSmrg      <entry>"&lt;SS&gt;"|"&lt;LSL&gt;"|"&lt;LSR&gt;"</entry>
637e9fcaa8aSmrg    </row>
638eb411b4bSmrg    <row>
639e9fcaa8aSmrg      <entry>ShiftSequence</entry>
640e9fcaa8aSmrg      <entry>::=</entry>
641e9fcaa8aSmrg      <entry>SequenceValue|SequenceValue ShiftSequence</entry>
642e9fcaa8aSmrg    </row>
643eb411b4bSmrg    <row>
644e9fcaa8aSmrg      <entry>SequenceValue</entry>
645e9fcaa8aSmrg      <entry>::=</entry>
646e9fcaa8aSmrg      <entry>NumericString</entry>
647e9fcaa8aSmrg    </row>
648e9fcaa8aSmrg  </tbody>
649e9fcaa8aSmrg  </tgroup>
650e9fcaa8aSmrg</informaltable>
651e9fcaa8aSmrg
652e9fcaa8aSmrg      <literallayout>
653e9fcaa8aSmrgexample:
654e9fcaa8aSmrg     &lt;LSL&gt; \x1b \x28 \x4a; &lt;LSL&gt; \x1b \x28 \x42
655e9fcaa8aSmrg      </literallayout>
656e9fcaa8aSmrg    </listitem>
657e9fcaa8aSmrg  </varlistentry>
658e9fcaa8aSmrg  <varlistentry>
659e9fcaa8aSmrg    <term>wc_encoding</term>
660e9fcaa8aSmrg    <listitem>
661e9fcaa8aSmrg      <para>
662e9fcaa8aSmrgSpecifies an integer value for parsing wide-char string.
663e9fcaa8aSmrgIt is used to determine the charset for each wide character, after
664e9fcaa8aSmrgapplying bit-and operation using 'wc_encoding_mask'.
665e9fcaa8aSmrgThis value should be unique in all csN classes.
666e9fcaa8aSmrg      </para>
667e9fcaa8aSmrg    </listitem>
668e9fcaa8aSmrg  </varlistentry>
669e9fcaa8aSmrg  <varlistentry>
670e9fcaa8aSmrg    <term>ct_encoding</term>
671e9fcaa8aSmrg    <listitem>
672e9fcaa8aSmrg      <para>
673e9fcaa8aSmrgSpecifies a list of encoding information that can be used for Compound
674e9fcaa8aSmrgText.
675e9fcaa8aSmrg      </para>
676e9fcaa8aSmrg    </listitem>
677e9fcaa8aSmrg  </varlistentry>
678e9fcaa8aSmrg</variablelist>
679e9fcaa8aSmrg</sect1>
680e9fcaa8aSmrg
681e9fcaa8aSmrg<sect1 id="Sample_of_X_Locale_Database">
682e9fcaa8aSmrg<title>Sample of X Locale Database</title>
683e9fcaa8aSmrg<para>
684e9fcaa8aSmrgThe following is sample X Locale Database file.
685e9fcaa8aSmrg</para>
686e9fcaa8aSmrg
687e9fcaa8aSmrg<literallayout class="monospaced">
688e9fcaa8aSmrg#  XLocale Database Sample for ja_JP.euc
689e9fcaa8aSmrg#
690e9fcaa8aSmrg
691e9fcaa8aSmrg#
692e9fcaa8aSmrg#      XLC_FONTSET category
693e9fcaa8aSmrg#
694e9fcaa8aSmrgXLC_FONTSET
695e9fcaa8aSmrg#      fs0 class (7 bit ASCII)
696e9fcaa8aSmrgfs0     {
697e9fcaa8aSmrg        charset              ISO8859-1:GL
698e9fcaa8aSmrg        font                 ISO8859-1:GL; JISX0201.1976-0:GL
699e9fcaa8aSmrg}
700e9fcaa8aSmrg#      fs1 class (Kanji)
701e9fcaa8aSmrgfs1     {
702e9fcaa8aSmrg        charset              JISX0208.1983-0:GL
703e9fcaa8aSmrg        font                 JISX0208.1983-0:GL
704e9fcaa8aSmrg}
705e9fcaa8aSmrg#      fs2 class (Half Kana)
706e9fcaa8aSmrgfs2     {
707e9fcaa8aSmrg        charset              JISX0201.1976-0:GR
708e9fcaa8aSmrg        font                 JISX0201.1976-0:GR
709e9fcaa8aSmrg}
710e9fcaa8aSmrg#      fs3 class (User Defined Character)
711e9fcaa8aSmrg# fs3     {
712e9fcaa8aSmrg#        charset             JISX0212.1990-0:GL
713e9fcaa8aSmrg#        font                JISX0212.1990-0:GL
714e9fcaa8aSmrg# }
715e9fcaa8aSmrgEND XLC_FONTSET
716e9fcaa8aSmrg
717e9fcaa8aSmrg#
718e9fcaa8aSmrg#      XLC_XLOCALE category
719e9fcaa8aSmrg#
720e9fcaa8aSmrgXLC_XLOCALE
721e9fcaa8aSmrg
722e9fcaa8aSmrgencoding_name             ja.euc
723e9fcaa8aSmrgmb_cur_max                3
724e9fcaa8aSmrgstate_depend_encoding     False
725e9fcaa8aSmrg
726e9fcaa8aSmrgwc_encoding_mask          \x00008080
727e9fcaa8aSmrgwc_shift_bits             8
728e9fcaa8aSmrg
729e9fcaa8aSmrg#      cs0 class
730e9fcaa8aSmrgcs0     {
731e9fcaa8aSmrg        side                 GL:Default
732e9fcaa8aSmrg        length               1
733e9fcaa8aSmrg        wc_encoding          \x00000000
734e9fcaa8aSmrg        ct_encoding          ISO8859-1:GL; JISX0201.1976-0:GL
735e9fcaa8aSmrg}
736e9fcaa8aSmrg#      cs1 class
737e9fcaa8aSmrgcs1     {
738e9fcaa8aSmrg        side                 GR:Default
739e9fcaa8aSmrg        length               2
740e9fcaa8aSmrg
741e9fcaa8aSmrg        wc_encoding          \x00008080
742e9fcaa8aSmrg
743e9fcaa8aSmrg        ct_encoding          JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
744e9fcaa8aSmrg                             JISX0208.1983-1:GL; JISX0208.1983-1:GR
745e9fcaa8aSmrg}
746e9fcaa8aSmrg
747e9fcaa8aSmrg#      cs2 class
748e9fcaa8aSmrgcs2     {
749e9fcaa8aSmrg        side                 GR
750e9fcaa8aSmrg        length               1
751e9fcaa8aSmrg        mb_encoding          &lt;SS&gt; \x8e
752e9fcaa8aSmrg
753e9fcaa8aSmrg        wc_encoding          \x00000080
754e9fcaa8aSmrg
755e9fcaa8aSmrg        ct_encoding          JISX0201.1976-0:GR
756e9fcaa8aSmrg}
757e9fcaa8aSmrg
758e9fcaa8aSmrg#      cs3 class
759e9fcaa8aSmrg# cs3     {
760e9fcaa8aSmrg#         side               GL
761e9fcaa8aSmrg#         length             2
762e9fcaa8aSmrg#         mb_encoding        &lt;SS&gt; \x8f
763e9fcaa8aSmrg# #if HasWChar32
764e9fcaa8aSmrg#         wc_encoding        \x20000000
765e9fcaa8aSmrg# #else
766e9fcaa8aSmrg#         wc_encoding        \x00008000
767e9fcaa8aSmrg# #endif
768e9fcaa8aSmrg#         ct_encoding        JISX0212.1990-0:GL; JISX0212.1990-0:GR
769e9fcaa8aSmrg# }
770e9fcaa8aSmrg
771e9fcaa8aSmrgEND XLC_XLOCALE
772e9fcaa8aSmrg</literallayout>
773e9fcaa8aSmrg</sect1>
774e9fcaa8aSmrg
775e9fcaa8aSmrg<sect1 id="Reference">
776e9fcaa8aSmrg<title>Reference</title>
777e9fcaa8aSmrg<para>
778e9fcaa8aSmrg[1] <emphasis remap='I'>ISO/IEC 9899:1990 C Language Standard</emphasis>
779e9fcaa8aSmrg</para>
780e9fcaa8aSmrg<para>
781eb411b4bSmrg[2] <olink targetdoc='xlfd' targetptr='xlfd'><citetitle>X Logical Font Description Conventions</citetitle></olink>
782e9fcaa8aSmrg</para>
783e9fcaa8aSmrg
784e9fcaa8aSmrg</sect1>
785e9fcaa8aSmrg</chapter>
786e9fcaa8aSmrg</book>
787