mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-03 12:32:47 -05:00
On the Mac, support for setting the line codepage and for combining
characters. I've just used libcharset in macucs.c since there seemed little reason not to, and implemented combining characters by naive overprinting. It's not yet a lot of use without the ability to select a font, of course. [originally from svn r5322]
This commit is contained in:
33
mac/macucs.c
33
mac/macucs.c
@ -1,4 +1,4 @@
|
||||
/* $Id: macucs.c,v 1.7 2003/04/05 22:12:44 ben Exp $ */
|
||||
/* $Id$ */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -6,6 +6,7 @@
|
||||
|
||||
#include <time.h>
|
||||
#include "putty.h"
|
||||
#include "charset.h"
|
||||
#include "terminal.h"
|
||||
#include "misc.h"
|
||||
#include "mac.h"
|
||||
@ -13,14 +14,14 @@
|
||||
/*
|
||||
* Mac Unicode-handling routines.
|
||||
*
|
||||
* FIXME: currently trivial stub versions assuming all codepages
|
||||
* are ISO8859-1.
|
||||
*
|
||||
* BJH:
|
||||
* What we _should_ do is to use the Text Encoding Conversion Manager
|
||||
* when it's available, and have our own routines for converting to
|
||||
* standard Mac OS scripts when it's not. Support for ATSUI might be
|
||||
* nice, too.
|
||||
*/
|
||||
*
|
||||
* I (OSD) am unsure any of the above is necessary if we just use
|
||||
* libcharset */
|
||||
|
||||
/*
|
||||
* Determine whether a byte is the first byte of a double-byte
|
||||
@ -91,6 +92,8 @@ void init_ucs(Session *s)
|
||||
{
|
||||
int i;
|
||||
|
||||
s->ucsdata.line_codepage = decode_codepage(s->cfg.line_codepage);
|
||||
|
||||
/* Find the line control characters. FIXME: this is not right. */
|
||||
for (i = 0; i < 256; i++)
|
||||
if (i < ' ' || (i >= 0x7F && i < 0xA0))
|
||||
@ -112,19 +115,25 @@ void init_ucs(Session *s)
|
||||
|
||||
int decode_codepage(char *cp_name)
|
||||
{
|
||||
|
||||
return 0;
|
||||
if (!*cp_name)
|
||||
return CS_NONE; /* use font encoding */
|
||||
return charset_from_localenc(cp_name);
|
||||
}
|
||||
|
||||
char const *cp_enumerate (int index)
|
||||
{
|
||||
|
||||
if (index == 0) return "ISO/IEC 8859-1";
|
||||
return NULL;
|
||||
int charset;
|
||||
if (index == 0)
|
||||
return "Use font encoding";
|
||||
charset = charset_localenc_nth(index-1);
|
||||
if (charset == CS_NONE)
|
||||
return NULL;
|
||||
return charset_to_localenc(charset);
|
||||
}
|
||||
|
||||
char const *cp_name(int codepage)
|
||||
{
|
||||
|
||||
return "ISO/IEC 8859-1";
|
||||
if (codepage == CS_NONE)
|
||||
return "Use font encoding";
|
||||
return charset_to_localenc(codepage);
|
||||
}
|
||||
|
Reference in New Issue
Block a user