- KK
How to set up GNUstep for East Asian languages
==============================================
Yen-Ju Chen
2003-07-04 Versions 2.0 beta
1. Introduction
---------------
This brief article illustrates how to set up your GNUstep for the East
Asian languages known as CJK (Chinese, Japanese, and Korean) in literature.
We assume that you already know how to set up your X Window System
for your language environment such as locale, fonts, and input methods.
We also assume that you selected 'art' as the backend of GNUstep's GUI.
Like other computer software made outside the region, GNUstep requires
some adjustment to use those languages. The adjustment consists of
the following steps:
1. Prepare one or more true type font files which contain characters
of your native language, and organize them in a certain way so that
the art backend can use them.
2. Set the environmental variable GNUSTEP_STRING_ENCODING to an appropriate
value for the language in use.
3. Set the NSGlobalDomain variables such as NSFont, NSFontSize, and
NSUserFont,
to name a few, to appropriate values using the GNUstep's
utility 'defaults'.
Now we explain each step in detail.
2. Fonts
--------
The art backend expects necessary true type font files to be found in the
specified directories, which are usually $GNUSTEP_USER_ROOT/Library/Fonts
and $GNUSTEP_SYSTEM_ROOT/Library/Fonts. You need to organize font files
in a certain way (see below) so that the art backend can recognize them.
For example, suppose you have a hypothetical true type font file called
MyFont.ttf and want to allow all other users to use it. Then, as root,
# cd $GNUSTEP_SYSTEM_ROOT/Library/Fonts
# mkdir MyFont.nfont
# cd MyFont.nfont
With your favorite editor, create a file whose contents is as follows:
{
Faces = (
{
PostScriptName = "MyFont";
Name = "Regular";
Files = ("MyFont.ttf");
}
);
}
Then save it as FontInfo.plist (the format above is known as property list
in
GNUstep, which explains why the extension is 'plist'). This small file
system
you've created just now is referred to as .nfont package.
The FontInfo.plist above is just a bare-bones version. For further
details,
we strongly recommend the reader to read nfont_packages.txt found at
http://wiki.gnustep.org/index.php/nfont%20packages
If you want to use the font file personally, replace GNUSTEP_SYSTEM_ROOT
with
GNUSTEP_USER_ROOT in the instruction above.
3. Encoding
-----------
As default, GNUstep assumes that a character is encoded in ISO8859-1 unless
the escape character \u precedes it (This exception applies to other
encodings).
Hence, if you want to use the characters of your native language with
GNUstep,
you have to tell it which encoding you use. This can be done by setting
the
environmental variable GNUSTEP_STRING_ENCODING to an appropriate value.
The possible values for GNUSTEP_STRING_ENCODING are as follows:
NSASCIIStringEncoding
NSNEXTSTEPStringEncoding
NSJapaneseEUCStringEncoding // Japanese
NSUTF8StringEncoding
NSISOLatin1StringEncoding // ISO-8859-1; West European
NSSymbolStringEncoding
NSNonLossyASCIIStringEncoding
NSShiftJISStringEncoding // Japanese
NSISOLatin2StringEncoding // ISO-8859-2; East European
NSUnicodeStringEncoding
NSWindowsCP1251StringEncoding
NSWindowsCP1252StringEncoding // WinLatin1
NSWindowsCP1253StringEncoding // Greek
NSWindowsCP1254StringEncoding // Turkish
NSWindowsCP1250StringEncoding // WinLatin2
NSISO2022JPStringEncoding // Japanese
NSMacOSRomanStringEncoding
NSProprietaryStringEncoding
// GNUstep additions
NSKOI8RStringEncoding // Russian/Cyrillic
NSISOLatin3StringEncoding // ISO-8859-3; South European
NSISOLatin4StringEncoding // ISO-8859-4; North European
NSISOCyrillicStringEncoding // ISO-8859-5
NSISOArabicStringEncoding // ISO-8859-6
NSISOGreekStringEncoding // ISO-8859-7
NSISOHebrewStringEncoding // ISO-8859-8
NSISOLatin5StringEncoding // ISO-8859-9; Turkish
NSISOLatin6StringEncoding // ISO-8859-10; Nordic
NSISOThaiStringEncoding // ISO-8859-11
NSISOLatin7StringEncoding // ISO-8859-13
NSISOLatin8StringEncoding // ISO-8859-14
NSISOLatin9StringEncoding // ISO-8859-15; Replaces ISOLatin1
NSGB2312StringEncoding
NSUTF7StringEncoding // RFC 2152
NSGSM0338StringEncoding // GSM (mobile phone) default alphabet
NSBIG5StringEncoding // Traditional chinese
Of these values, choose an appropriate one for your purpose and set the
environmental variable to it. For example, for sh or bash,
$ export GNUSTEP_STRING_ENCODING=NSBIG5StringEncoding
or, for csh,
% setenv GNUSTEP_STRING_ENCODING NSBIG5StringEncoding
4. User Default Values
----------------------
Now that you specify the encoding, you have to determine which fonts you
use to display the characters of your native language.
Becuase the fonts used in GNUstep GUI are initially set to those that are
appropriate for European languages, you have to overwrite them to display
the characters correctly.
At least, you need to change the user default value NSFont. For example,
suppose you have an .nfont package called MyFont and want to use it to
display
the characters. To do this, use the GNUstep's utility 'defaults' as
follows:
$ defaults write NSGlobalDomain NSFont MyFont
Depending on situation, you may also need to set NSUserFont to MyFont.
In GNUstep, a pair of a key and a value such as (NSFont, MyFont) is called
a dictionary.
To confirm the value, use
$ defaults read
If you want to remove the assignment entirely to revert to the original
default value, use
$ defaults delete NSGlobalDomain NSFont
For further details about the user default values, the reader can refer to
the documents DefaultsSummary.html and NSFont.html shipped with the GNUstep
packages.
5. Examples
-----------