389 lines
8.9 KiB
C
389 lines
8.9 KiB
C
/*
|
|
* CDE - Common Desktop Environment
|
|
*
|
|
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
|
|
*
|
|
* These libraries and programs are free software; you can
|
|
* redistribute them and/or modify them under the terms of the GNU
|
|
* Lesser General Public License as published by the Free Software
|
|
* Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* These libraries and programs are distributed in the hope that
|
|
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
* PURPOSE. See the GNU Lesser General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with these libraries and programs; if not, write
|
|
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
* Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
/* $XConsortium: FaLib.h /main/5 1996/06/25 20:08:31 cde-fuj $ */
|
|
/*
|
|
* (c) Copyright 1995 FUJITSU LIMITED
|
|
* This is source code modified by FUJITSU LIMITED under the Joint
|
|
* Development Agreement for the CDEnext PST.
|
|
* This is unpublished proprietary source code of FUJITSU LIMITED
|
|
*/
|
|
|
|
#ifndef _FALIB_H
|
|
#define _FALIB_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define FAL_ERROR -1
|
|
|
|
extern int fal_utyerror; /* library error information */
|
|
extern int fal_utyderror; /* library error information */
|
|
extern int fal_utyexists; /* existence's flag of font pattern */
|
|
|
|
extern unsigned long fal_utyerrno ; /* library error information */
|
|
extern char fal_err_file[] ;
|
|
|
|
/*
|
|
*
|
|
* structure of the font information
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* the equipment of output permission
|
|
*/
|
|
#define FAL_FONT_DISPLAY 1
|
|
#define FAL_FONT_PRINTER 2
|
|
|
|
|
|
#define FAL_FONT_GLYPH_INDEX -1
|
|
/*
|
|
* codeset
|
|
*/
|
|
#define FAL_FONT_CS0 1
|
|
#define FAL_FONT_CS1 2
|
|
#define FAL_FONT_CS2 3
|
|
#define FAL_FONT_CS3 4
|
|
|
|
#define FAL_FONT_CS4 5
|
|
#define FAL_FONT_CS5 6
|
|
#define FAL_FONT_CS6 7
|
|
#define FAL_FONT_CS7 8
|
|
#define FAL_FONT_CS8 9
|
|
|
|
/*
|
|
* font search mask
|
|
*/
|
|
#define FAL_FONT_MASK_XLFDNAME (1L<<1)
|
|
#define FAL_FONT_MASK_SIZE_W (1L<<2)
|
|
#define FAL_FONT_MASK_SIZE_H (1L<<3)
|
|
#define FAL_FONT_MASK_LETTER_W (1L<<4)
|
|
#define FAL_FONT_MASK_LETTER_H (1L<<5)
|
|
#define FAL_FONT_MASK_LETTER_X (1L<<6)
|
|
#define FAL_FONT_MASK_LETTER_Y (1L<<7)
|
|
#define FAL_FONT_MASK_STYLE_DEF (1L<<8)
|
|
#define FAL_FONT_MASK_STYLE_NAME (1L<<9)
|
|
#define FAL_FONT_MASK_SHAPE_DEF (1L<<10)
|
|
#define FAL_FONT_MASK_SHAPE_NAME (1L<<11)
|
|
|
|
|
|
#define FAL_FONT_MASK_CODE_SET (1L<<14)
|
|
#define FAL_FONT_MASK_PERMISSION (1L<<15)
|
|
#define FAL_FONT_MASK_DEL_EQUALDATA (1L<<16)
|
|
#define FAL_FONT_MASK_CHECK_ALL 0x1FFFF
|
|
|
|
#define FAL_FONT_MASK_GLYPH_INDEX (1L<<17)
|
|
#define FAL_FONT_MASK_UPDATE (1L<<18)
|
|
#define FAL_FONT_MASK_DEFINED (1L<<19)
|
|
#define FAL_FONT_MASK_UNDEFINED (1L<<20)
|
|
|
|
|
|
/*
|
|
* undefined the character style,shape
|
|
*/
|
|
#define FAL_FONT_UNKNOWN 0
|
|
|
|
/*
|
|
* definition's data of character style
|
|
*/
|
|
#define FAL_FONT_MINCHO 1
|
|
#define FAL_FONT_STR_MINCHO "mincho"
|
|
#define FAL_FONT_GOTHIC 2
|
|
#define FAL_FONT_STR_GOTHIC "gothic"
|
|
#define FAL_FONT_MARU_GOTHIC 3
|
|
#define FAL_FONT_STR_MARU_GOTHIC "maru_gothic"
|
|
#define FAL_FONT_TEXTBOOK 4
|
|
#define FAL_FONT_STR_TEXTBOOK "textbook"
|
|
#define FAL_FONT_BRASH_GYOU 5
|
|
#define FAL_FONT_STR_BRASH_GYOU "brash_gyou"
|
|
#define FAL_FONT_BRASH_KAI 6
|
|
#define FAL_FONT_STR_BRASH_KAI "brash_kai"
|
|
#define FAL_FONT_HANDWRITING 7
|
|
#define FAL_FONT_STR_HANDWRITING "handwriting"
|
|
|
|
/*
|
|
* definition's data of character shape
|
|
*/
|
|
#define FAL_FONT_ZENKAKU 1
|
|
#define FAL_FONT_STR_ZENKAKU "zenkaku"
|
|
#define FAL_FONT_HANKAKU 2
|
|
#define FAL_FONT_STR_HANKAKU "hankaku"
|
|
#define FAL_FONT_QUARTER 3
|
|
#define FAL_FONT_STR_QUARTER "1/4kaku"
|
|
|
|
/*
|
|
* structures for font informations
|
|
*/
|
|
typedef struct {
|
|
int width; /* width */
|
|
int height; /* height */
|
|
int top; /* the head code */
|
|
int bottom; /* the final code */
|
|
} FalFontinfo ;
|
|
|
|
typedef struct {
|
|
int num;
|
|
char **path;
|
|
} FalFontPath;
|
|
|
|
typedef struct {
|
|
int def; /* definition data */
|
|
char *name; /* the information of the character line */
|
|
}FalFontDB;
|
|
|
|
|
|
/*
|
|
* structure of the font information
|
|
*/
|
|
typedef struct {
|
|
char *xlfdname; /* xlfd name */
|
|
struct {
|
|
int w; /* the width of the character size */
|
|
int h; /* the height of the character size */
|
|
}size;
|
|
struct {
|
|
int w; /* the width of the letter size */
|
|
int h; /* the height of the letter size */
|
|
int x; /* position x of the letter size */
|
|
int y; /* position y of the letter size */
|
|
}letter;
|
|
FalFontDB style; /* character style */
|
|
FalFontDB shape; /* character shape */
|
|
FalFontDB reserve ; /* reserve */
|
|
int cd_set; /* codeset */
|
|
int prm; /* the equipment of output permission */
|
|
}FalFontData;
|
|
|
|
typedef struct {
|
|
int num; /* the number of font data*/
|
|
FalFontData *list; /* the pointer to the array of
|
|
FalFontData structure */
|
|
}FalFontDataList;
|
|
|
|
/*
|
|
* UDC infomations
|
|
*/
|
|
typedef struct _FalCodeRegion {
|
|
int start ; /* first code */
|
|
int end ; /* last code */
|
|
} FalCodeRegion ;
|
|
|
|
typedef struct _FalGlyphRegion {
|
|
int start ; /* first glyph index */
|
|
int end ; /* last glyph index */
|
|
} FalGlyphRegion ;
|
|
|
|
typedef struct _FalGIInf {
|
|
char *charset_str; /* charcter set */
|
|
int glyph_index; /* glyph index */
|
|
} FalGIInf;
|
|
|
|
/*
|
|
* structure of the font identifier
|
|
*/
|
|
#include <X11/Xos.h>
|
|
#include <X11/Xmd.h>
|
|
#include <X11/X.h>
|
|
#include <X11/Xproto.h>
|
|
#include <stdlib.h>
|
|
#include <dirent.h>
|
|
|
|
#ifdef Bool
|
|
#undef Bool
|
|
#endif
|
|
|
|
#include "snfstruct.h"
|
|
#include <X11/fonts/fontstruct.h>
|
|
#include "pcf.h"
|
|
|
|
struct pcf_inf {
|
|
FontInfoRec info;
|
|
xCharInfo org_bounds;
|
|
PCFTablePtr tables;
|
|
int ntables;
|
|
CARD32 bmp_fmt; /* bitOrder ,byteOrder, glyph, scan */
|
|
int nbitmaps;
|
|
CARD32 *offsets;
|
|
int sizebitmaps;
|
|
char *bitmaps;
|
|
CARD32 enc_fmt;
|
|
CARD16 *encodingOffsets;
|
|
};
|
|
|
|
typedef struct _Oak_Finf {
|
|
int ismmap; /* used mmap()? */
|
|
int fsize; /* file size */
|
|
int fd; /* file descripter */
|
|
int isFef;
|
|
char *buf; /* font file allocated on memory */
|
|
char *fname; /* name of font file */
|
|
/* added by Rudie */
|
|
int isPcf;
|
|
struct pcf_inf pcfinf;
|
|
/* added by Rudie */
|
|
FontInfoPtr pFinf;
|
|
CharInfoPtr pCinf;
|
|
unsigned char *pGlyphs;
|
|
unsigned int width;
|
|
unsigned int height;
|
|
unsigned int start;
|
|
unsigned int end;
|
|
int sptnBufL;
|
|
char *sptnBuf;
|
|
int dptnBufL;
|
|
char *dptnBuf;
|
|
int dbufL;
|
|
char *dbuf;
|
|
} Oak_FontInf;
|
|
|
|
typedef Oak_FontInf * FalFontID; /* font distinction */
|
|
|
|
/*
|
|
* function prototypes
|
|
*/
|
|
extern FalFontID FalOpenSysFont(
|
|
FalFontData* /* open_font_data */,
|
|
int /* font_data_mask */,
|
|
FalFontDataList** /* missing_font_list_return */
|
|
) ;
|
|
|
|
extern int FalGetFontList(
|
|
FalFontData* /* key_data */,
|
|
int /* mask */,
|
|
FalFontDataList** /* list_ret */
|
|
) ;
|
|
|
|
extern int FalFreeFontList(
|
|
FalFontDataList* /* list */
|
|
) ;
|
|
|
|
extern char *
|
|
FalReadFont(
|
|
FalFontID /* fid */ ,
|
|
int /* code */ ,
|
|
int /* width */ ,
|
|
int /* height */
|
|
) ;
|
|
|
|
extern int FalQueryFont(
|
|
FalFontID /* fid */ ,
|
|
FalFontinfo* /* fontinfo */
|
|
) ;
|
|
|
|
extern int FalFontOfFontID(
|
|
FalFontID /* fid */,
|
|
FalFontData* /* fontdata */
|
|
) ;
|
|
|
|
extern int FalCloseFont(
|
|
FalFontID /* fid */
|
|
) ;
|
|
|
|
extern int FalFontIDToFileName(
|
|
FalFontID /* fid */ ,
|
|
char** /* file_name */
|
|
) ;
|
|
|
|
extern int FalFree(
|
|
void* /* list */
|
|
) ;
|
|
|
|
extern int FalGetUDCCPArea(
|
|
char* /* locale */ ,
|
|
int /* code_set */ ,
|
|
char* /* charset_str */ ,
|
|
FalCodeRegion** /* cr */ ,
|
|
int* /* num_cr */
|
|
) ;
|
|
|
|
extern int FalGetUDCGIArea(
|
|
char* /* locale */ ,
|
|
int /* codeset */ ,
|
|
char* /* charset_str */ ,
|
|
FalGlyphRegion** /* gr */ ,
|
|
int* /* num_gr */
|
|
) ;
|
|
|
|
extern FalFontID FalOpenFont() ;
|
|
|
|
/*
|
|
* Code set
|
|
*/
|
|
#define FALGETFALCODESET( cd_set ) ( ((cd_set)==-1) ? FAL_FONT_GLYPH_INDEX : (cd_set)+1 )
|
|
|
|
#define FALCODESETTONUM( cd_set ) ( ((cd_set)==FAL_FONT_GLYPH_INDEX) ? -1 : (cd_set)-1 )
|
|
|
|
/*
|
|
* fal_utyerrno
|
|
*/
|
|
#define FAL_FUNCNUM_GFLST 0x0
|
|
#define FAL_FUNCNUM_SRCHFNM 0x0
|
|
#define FAL_FUNCNUM_OPNFNT 0x0
|
|
#define FAL_FUNCNUM_FRFLST 0x0
|
|
#define FAL_FUNCNUM_RDFNT 0x0
|
|
#define FAL_FUNCNUM_QRY 0x0
|
|
#define FAL_FUNCNUM_FID 0x0
|
|
#define FAL_FUNCNUM_IDTOFNM 0x0
|
|
#define FAL_FUNCNUM_CLSFNT 0x0
|
|
#define FAL_FUNCNUM_CPA 0x0
|
|
#define FAL_FUNCNUM_GIA 0x0
|
|
#define FAL_FUNCNUM_FREE 0x0
|
|
|
|
#define FAL_ERR_NON 0x00
|
|
|
|
#define FAL_ERR_FNT_OPN 0x01
|
|
#define FAL_ERR_FNT_RD 0x02
|
|
#define FAL_ERR_MALLOC 0x03
|
|
#define FAL_ERR_PARM 0x04
|
|
#define FAL_ERR_STAT 0x05
|
|
#define FAL_ERR_FONT 0x06
|
|
#define FAL_ERR_FDATA_OPN 0x07
|
|
#define FAL_ERR_FDATA_RD 0x08
|
|
#define FAL_ERR_FDATA_DSC 0x09
|
|
#define FAL_ERR_FPATH 0x0a
|
|
|
|
#define FAL_ERR_FNTDIR_OPN 0x0b
|
|
#define FAL_ERR_FNTDIR_RD 0x0c
|
|
#define FAL_ERR_PROP_RD 0x0d
|
|
#define FAL_ERR_PROP_FONT 0x0e
|
|
#define FAL_ERR_PROP_FNAME 0x0f
|
|
#define FAL_ERR_LCKD 0x10
|
|
#define FAL_ERR_FILELCK 0x11
|
|
#define FAL_ERR_FILEUNLCK 0x12
|
|
#define FAL_ERR_FILEGETLCK 0x13
|
|
#define FAL_ERR_NOFONT 0x14
|
|
|
|
#define FAL_ERR_XLC_CRTDB 0x15
|
|
#define FAL_ERR_XLC_GETCHARST 0x16
|
|
#define FAL_ERR_XLC_NOCHARST 0x17
|
|
|
|
#define FAL_ERR_FID_RD 0x18
|
|
#define FAL_ERR_FATAL 0x19
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* _FALIB_H */
|