Use GSEncodingFromLocale

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@14834 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Adam Fedor 2002-10-22 03:47:15 +00:00
parent f66abd75a6
commit 9b6ec6114a
4 changed files with 28 additions and 29 deletions

View file

@ -1,3 +1,11 @@
2002-10-21 Adam Fedor <fedor@gnu.org>
* Source/x11/XIMInputServer.m
([XIMInputServer -initWithDelegate:display:name:]): Use
GSEncodingFromLocale.
* Source/xlib/XGFont.m ([XGFontInfo -setupAttributes]): Idem.
* Source/xlib/XftFontInfo.m ([XftFontInfo -setupAttributes]): Idem.
2002-10-19 Adam Fedor <fedor@gnu.org>
* Source/x11/XGServerEvent.m ([XGServer

View file

@ -30,7 +30,9 @@
#include <Foundation/NSData.h>
#include <Foundation/NSDebug.h>
#include <Foundation/NSException.h>
#include <base/Unicode.h>
#include <AppKit/NSWindow.h>
#include <AppKit/GSFontInfo.h>
#include "x11/XGInputServer.h"
#include <X11/Xlocale.h>
@ -60,7 +62,6 @@
name: (NSString *)name
{
char *locale;
NSString *localeEncoding;
delegate = aDelegate;
ASSIGN(server_name, name);
dbuf = RETAIN([NSMutableData dataWithCapacity: BUF_LEN]);
@ -69,32 +70,23 @@
for X. Also just get CTYPE locale (which is typically the one that
deals with character handling */
locale = setlocale(LC_CTYPE, "");
localeEncoding = [NSString stringWithCString: locale];
if (XSupportsLocale() != True)
{
NSLog(@"Xlib does not support locale setting %@", localeEncoding);
NSLog(@"Xlib does not support locale setting %s", locale);
/* FIXME: Should we reset the locale or just hope that X
can deal with it? */
}
localeEncoding = [[[localeEncoding componentsSeparatedByString: @"."]
lastObject] lowercaseString];
NSDebugLLog(@"XIM", @"XIM locale encoding is %@", localeEncoding);
// FIXME: Use [GSFontInfo +encodingForRegistry:encoding:]?
if ([localeEncoding isEqualToString:@"big5"])
{
encoding = NSBIG5StringEncoding;
}
#ifdef HAVE_UTF8
else if ([localeEncoding isEqualToString:@"utf8"]
|| [localeEncoding isEqualToString:@"utf-8"] )
{
encoding = NSUTF8StringEncoding;
}
encoding = GSEncodingFromLocale(locale);
#ifndef HAVE_UTF8
if (encoding == NSUTF8StringEncoding)
encoding = GSUndefinedEncoding;
#endif
else
if (encoding == GSUndefinedEncoding)
{
encoding = [NSString defaultCStringEncoding];
}
NSDebugLLog(@"XIM", @"XIM locale encoding for %s is %@", locale,
GetEncodingName(encoding));
#ifdef USE_XIM
if ([self ximInit: dpy] == NO)

View file

@ -294,8 +294,9 @@ static BOOL XGInitAtoms(Display *dpy)
if (enc != nil)
{
mostCompatibleStringEncoding = [GSFontInfo encodingForRegistry: reg
encoding: enc];
mostCompatibleStringEncoding = GSEncodingForRegistry(reg, enc);
if (mostCompatibleStringEncoding == GSUndefinedEncoding)
mostCompatibleStringEncoding = NSASCIIStringEncoding;
encodingScheme = [NSString stringWithFormat: @"%@-%@",
reg, enc];
NSDebugLog(@"Found encoding %d for %@",

View file

@ -435,23 +435,21 @@ static NSMutableDictionary *_globalFontDictionary = nil;
reg = [encoding objectAtIndex: 0];
if (reg != nil)
{
NSString *enc = [encoding lastObject];
if (enc != nil)
if ([encoding count] > 1)
{
mostCompatibleStringEncoding = [GSFontInfo encodingForRegistry: reg
encoding: enc];
NSString *enc = [encoding lastObject];
mostCompatibleStringEncoding = GSEncodingForRegistry(reg, enc);
if (mostCompatibleStringEncoding == GSUndefinedEncoding)
mostCompatibleStringEncoding = NSASCIIStringEncoding;
if (mostCompatibleStringEncoding == NSUnicodeStringEncoding)
mostCompatibleStringEncoding = NSUTF8StringEncoding;
encodingScheme = [NSString stringWithFormat: @"%@-%@",
reg, enc];
//NSLog(@"Found encoding %d for %@", mostCompatibleStringEncoding, encodingScheme);
RETAIN(encodingScheme);
[fontDictionary setObject: encodingScheme
forKey: NSAFMEncodingScheme];
}
}
else
encodingScheme = nil;
/*
height = XGFontPropULong(xdpy, font_info, XA_X_HEIGHT);
if (height != 0)