tune length of devfont name fields; devfont now supports family aliases

This commit is contained in:
Vincent Wei
2019-01-17 14:55:06 +08:00
parent 58275c88e9
commit b35e38bdff
19 changed files with 249 additions and 179 deletions
+5 -5
View File
@@ -239,9 +239,9 @@ int GUIAPI GetFirstWord (PLOGFONT log_font, const char* mstr, int len,
496 static int euckr_is_this_charset (const unsigned char* charset)
497 {
498 int i;
499 char name [LEN_FONT_NAME + 1];
499 char name [LEN_LOGFONT_NAME_FIELD + 1];
500
501 for (i = 0; i < LEN_FONT_NAME + 1; i++) {
501 for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
502 if (charset [i] == '\0')
503 break;
504 name [i] = toupper (charset [i]);
@@ -388,9 +388,9 @@ int GUIAPI GetFirstWord (PLOGFONT log_font, const char* mstr, int len,
<table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td> <pre>
228 typedef struct _LOGFONT {
229 char type [LEN_FONT_NAME + 1];
230 char family [LEN_FONT_NAME + 1];
231 char charset [LEN_FONT_NAME + 1];
229 char type [LEN_LOGFONT_NAME_FIELD + 1];
230 char family [LEN_LOGFONT_NAME_FIELD + 1];
231 char charset [LEN_LOGFONT_NAME_FIELD + 1];
232 DWORD style;
233 int size;
234 int rotation;
+17 -8
View File
@@ -5456,9 +5456,9 @@ MG_EXPORT int GUIAPI SubtractRect (RECT* rc, const RECT* psrc1, const RECT* psrc
*/
/* Font-related structures */
#define LEN_FONT_NAME 31
#define LEN_DEVFONT_NAME 79
#define LEN_UNIDEVFONT_NAME 127
#define LEN_LOGFONT_NAME_FIELD 31
#define LEN_UNIDEVFONT_NAME 255
#define LEN_DEVFONT_NAME LEN_UNIDEVFONT_NAME
#define FONT_WEIGHT_NIL '\0'
#define FONT_WEIGHT_ALL '*'
@@ -5728,11 +5728,11 @@ typedef struct _DEVFONT DEVFONT;
/** The logical font structure. */
typedef struct _LOGFONT {
/** The type of the logical font. */
char type [LEN_FONT_NAME + 1];
char type [LEN_LOGFONT_NAME_FIELD + 1];
/** The family name of the logical font. */
char family [LEN_FONT_NAME + 1];
char family [LEN_LOGFONT_NAME_FIELD + 1];
/** The charset of the logical font. */
char charset [LEN_FONT_NAME + 1];
char charset [LEN_LOGFONT_NAME_FIELD + 1];
/** The styles of the logical font. */
DWORD style;
/** The size of the logical font. */
@@ -5888,11 +5888,20 @@ struct _CHARSETOPS;
typedef struct _FONTOPS FONTOPS;
typedef struct _CHARSETOPS CHARSETOPS;
/* charops fontops devont structure is here. */
/* charops fontops devont structure is here. */
/** The device font structure. */
struct _DEVFONT
{
/** The device font name. */
/**
* The device font name.
* The family name supports aliases since 3.4.0:
*
* <fonttype>-<family[,aliase]*>-<styles>-<width>-<height>-<charsets>
*
* for example:
*
* ttf-courier,monospace-rrncnn-8-16-ISO8859-1,UTF-8
*/
char name [LEN_UNIDEVFONT_NAME + 1];
/** The styles of the device font. */
+1 -1
View File
@@ -469,7 +469,7 @@ DEVFONT *CreateBMPDevFont (const char *bmpfont_name, const BITMAP* glyph_bmp,
{
DEVFONT* bitmapfont_dev_font = NULL;
CHARSETOPS* charset_ops;
char charset[LEN_FONT_NAME + 1];
char charset[LEN_LOGFONT_NAME_FIELD + 1];
BMPFONTINFO *bmpfont_info;
int offset;
+2 -2
View File
@@ -94,9 +94,9 @@ static const SHAPEINFO shape_info[SHAPENUMBER] = {
static int iso8859_6_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
+56 -56
View File
@@ -180,9 +180,9 @@ static const unsigned char* sb_get_next_word (const unsigned char* mstr,
static int ascii_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -242,10 +242,10 @@ static CHARSETOPS CharsetOps_ascii = {
static int iso8859_1_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
char* sub_enc;
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -308,9 +308,9 @@ static CHARSETOPS CharsetOps_iso8859_1 = {
static int iso8859_2_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -422,9 +422,9 @@ static CHARSETOPS CharsetOps_iso8859_2 = {
static int iso8859_3_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -535,9 +535,9 @@ static CHARSETOPS CharsetOps_iso8859_3 = {
static int iso8859_4_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -650,9 +650,9 @@ static CHARSETOPS CharsetOps_iso8859_4 = {
static int iso8859_5_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -799,9 +799,9 @@ static BOOL get_mirror_glyph (const BIDICHAR_MIRROR_MAP* map, int n, Glyph32 gly
static int iso8859_7_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -901,9 +901,9 @@ static CHARSETOPS CharsetOps_iso8859_7 = {
static int iso8859_8_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -1170,9 +1170,9 @@ static CHARSETOPS CharsetOps_iso8859_8 = {
static int iso8859_9_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -1272,9 +1272,9 @@ static CHARSETOPS CharsetOps_iso8859_9 = {
static int iso8859_10_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -1386,9 +1386,9 @@ static CHARSETOPS CharsetOps_iso8859_10 = {
static int iso8859_11_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -1499,9 +1499,9 @@ static CHARSETOPS CharsetOps_iso8859_11 = {
static int iso8859_13_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -1612,9 +1612,9 @@ static CHARSETOPS CharsetOps_iso8859_13 = {
static int iso8859_14_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -1725,9 +1725,9 @@ static CHARSETOPS CharsetOps_iso8859_14 = {
static int iso8859_15_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -1836,9 +1836,9 @@ static CHARSETOPS CharsetOps_iso8859_15 = {
static int iso8859_16_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -2059,9 +2059,9 @@ static Glyph32 gb2312_0_char_glyph_value (const unsigned char* pre_mchar,
static int gb2312_0_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -2214,9 +2214,9 @@ static Glyph32 gbk_char_glyph_value (const unsigned char* pre_mchar, int pre_le
static int gbk_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -2390,9 +2390,9 @@ static Glyph32 gb18030_0_char_glyph_value (const unsigned char* pre_mchar,
static int gb18030_0_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -2638,9 +2638,9 @@ static Glyph32 big5_char_glyph_value (const unsigned char* pre_mchar, int pre_l
static int big5_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -2798,9 +2798,9 @@ static Glyph32 ksc5601_0_char_glyph_value (const unsigned char* pre_mchar,
static int ksc5601_0_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -2970,9 +2970,9 @@ static int jisx0201_0_nr_chars_in_str (const unsigned char* mstr, int mstrlen)
static int jisx0201_0_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -3065,9 +3065,9 @@ static Glyph32 jisx0208_0_char_glyph_value (const unsigned char* pre_mchar,
static int jisx0208_0_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -3183,9 +3183,9 @@ static CHARSETOPS CharsetOps_jisx0208_0 = {
static int jisx0201_1_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -3320,9 +3320,9 @@ static Glyph32 jisx0208_1_char_glyph_value (const unsigned char* pre_mchar,
static int jisx0208_1_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -3642,9 +3642,9 @@ static int utf8_nr_chars_in_str (const unsigned char* mstr, int mstrlen)
static int utf8_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -3892,9 +3892,9 @@ static int utf16le_nr_chars_in_str (const unsigned char* mstr, int mstrlen)
static int utf16le_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -4118,9 +4118,9 @@ static int utf16be_nr_chars_in_str (const unsigned char* mstr, int mstrlen)
static int utf16be_is_this_charset (const unsigned char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
@@ -4375,9 +4375,9 @@ CHARSETOPS* GetCharsetOps (const char* charset)
CHARSETOPS* GetCharsetOpsEx (const char* charset)
{
int i;
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < LEN_FONT_NAME + 1; i++) {
for (i = 0; i < LEN_LOGFONT_NAME_FIELD + 1; i++) {
if (charset [i] == '\0')
break;
name [i] = toupper (charset [i]);
+26 -20
View File
@@ -124,7 +124,6 @@ static DEVFONT* get_matched_devfont (LOGFONT* log_font, DEVFONT* list_head,
dev_font = list_head;
while (dev_font) {
int type_req;
char family [LEN_FONT_NAME + 1];
int weight_req = log_font->style & FS_WEIGHT_MASK;
int weight_cur = dev_font->style & FS_WEIGHT_MASK;
@@ -139,10 +138,17 @@ static DEVFONT* get_matched_devfont (LOGFONT* log_font, DEVFONT* list_head,
match_bits [i] |= MATCHED_TYPE;
/* does match this family? */
#if 0 // since 3.4.0
char family [LEN_LOGFONT_NAME_FIELD + 1];
fontGetFamilyFromName (dev_font->name, family);
if (strcasecmp (family, log_font->family) == 0) {
match_bits [i] |= MATCHED_FAMILY;
}
#else
if (fontDoesMatchFamily(dev_font->name, log_font->family)) {
match_bits [i] |= MATCHED_FAMILY;
}
#endif
/* does match this charset */
if (IsCompatibleCharset (req_charset, dev_font->charset_ops)) {
@@ -238,7 +244,7 @@ DEVFONT* font_GetMatchedSBDevFont (LOGFONT* log_font)
if (GetCharsetOps (log_font->charset)->bytes_maxlen_char > 1) {
/*mbc logfont --- sbc devfont*/
char sysfont_charset [LEN_FONT_NAME + 1];
char sysfont_charset [LEN_LOGFONT_NAME_FIELD + 1];
fontGetCharsetFromName (g_SysLogFont[0]->sbc_devfont->name, sysfont_charset);
matched_devfont = get_matched_devfont (log_font, sb_dev_font_head,
nr_sb_dev_fonts, sysfont_charset);
@@ -351,26 +357,26 @@ void dbg_dumpDevFonts (void)
*/
void font_DelSBDevFont (DEVFONT* dev_font)
{
DEVFONT *tmp, *prev = NULL;
DEVFONT *tmp, *prev = NULL;
tmp = sb_dev_font_head;
while (tmp != NULL) {
if (tmp == dev_font) {
if (prev != NULL)
prev->next = tmp->next;
else
sb_dev_font_head = tmp->next;
tmp = sb_dev_font_head;
while (tmp != NULL) {
if (tmp == dev_font) {
if (prev != NULL)
prev->next = tmp->next;
else
sb_dev_font_head = tmp->next;
nr_sb_dev_fonts --;
nr_sb_dev_fonts --;
break;
}
break;
}
prev = tmp;
tmp = prev->next;
}
prev = tmp;
tmp = prev->next;
}
return;
return;
}
/*
@@ -392,7 +398,7 @@ void font_DelMBDevFont (DEVFONT* dev_font)
nr_mb_dev_fonts --;
break;
break;
}
prev = tmp;
tmp = prev->next;
@@ -407,7 +413,7 @@ static DEVFONT* make_devfont (const char* font_name, void* data, BOOL is_filenam
FONTOPS_INFO* fontops_info = __mg_fontops_infos;
DEVFONT* devfont;
CHARSETOPS* charset_ops;
char charset [LEN_FONT_NAME + 1];
char charset [LEN_LOGFONT_NAME_FIELD + 1];
/*find the FONTOPS and LOADER*/
while (fontops_info->type) {
@@ -473,7 +479,7 @@ static void add_relating_devfonts_to_list (DEVFONT* related_devfont)
{
DEVFONT* sub_devfont;
char charset [LEN_FONT_NAME + 1];
char charset [LEN_LOGFONT_NAME_FIELD + 1];
char charsets [LEN_UNIDEVFONT_NAME + 1];
int nr_charsets;
+8 -8
View File
@@ -87,9 +87,9 @@ typedef struct _HashDirectory {
makeHashKeyFunc : the function which make hash key */
typedef struct cache {
/* Information about font */
char family[LEN_FONT_NAME + 1];
char family[LEN_LOGFONT_NAME_FIELD + 1];
// VincentWei: no need to check charset for TrueType
//char charset[LEN_FONT_NAME + 1];
//char charset[LEN_LOGFONT_NAME_FIELD + 1];
int render_style; // render style
int fontsize;
int rotation;
@@ -480,8 +480,8 @@ __mg_ttc_create(char *family, char *charset,
return (HCACHE)(0);
}
strncpy(temp->cache.family, family, LEN_FONT_NAME);
//strncpy(temp->cache.charset, charset, LEN_FONT_NAME);
strncpy(temp->cache.family, family, LEN_LOGFONT_NAME_FIELD);
//strncpy(temp->cache.charset, charset, LEN_LOGFONT_NAME_FIELD);
temp->cache.render_style = (style & FS_RENDER_MASK);
temp->cache.fontsize = size;
temp->cache.rotation = rotation;
@@ -588,8 +588,8 @@ __mg_ttc_is_exist(char *family, char *charset,
/* If can not match font name*/
p = __mg_globalCache.queueDummyHead.nextCache;
while (p != &__mg_globalCache.queueDummyHead) {
if (strncmp(p->cache.family, family, LEN_FONT_NAME) == 0) {
if (strncmp(p->cache.charset, charset, LEN_FONT_NAME) == 0) {
if (strncmp(p->cache.family, family, LEN_LOGFONT_NAME_FIELD) == 0) {
if (strncmp(p->cache.charset, charset, LEN_LOGFONT_NAME_FIELD) == 0) {
if (p->cache.fontsize == size) {
int s = style & 0x000000FF;
if ((s == FS_WEIGHT_BOOK || s == FS_WEIGHT_DEMIBOLD || s == FS_WEIGHT_SUBPIXEL) &&
@@ -609,9 +609,9 @@ __mg_ttc_is_exist(char *family, char *charset,
#else
p = __mg_globalCache.queueDummyHead.nextCache;
while (p != &__mg_globalCache.queueDummyHead) {
if (strncmp(p->cache.family, family, LEN_FONT_NAME) == 0
if (strncmp(p->cache.family, family, LEN_LOGFONT_NAME_FIELD) == 0
#if 0 // VincentWei: do not need to check charset.
&& strncmp(p->cache.charset, charset, LEN_FONT_NAME) == 0
&& strncmp(p->cache.charset, charset, LEN_LOGFONT_NAME_FIELD) == 0
#endif
&& p->cache.fontsize == size
&& p->cache.rotation == rotation
+65 -11
View File
@@ -42,6 +42,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "common.h"
#include "minigui.h"
@@ -96,7 +97,7 @@ BOOL fontGetTypeNameFromName (const char* name, char* type)
int fontGetFontTypeFromName (const char* name)
{
char type [LEN_FONT_NAME + 1];
char type [LEN_LOGFONT_NAME_FIELD + 1];
if (!fontGetTypeNameFromName (name, type))
return -1;
@@ -114,8 +115,8 @@ BOOL fontGetFamilyFromName (const char* name, char* family)
if (*(++family_part) == '\0')
return FALSE;
while (family_part [i] && i <= LEN_FONT_NAME) {
if (family_part [i] == '-') {
while (family_part [i] && i <= LEN_LOGFONT_NAME_FIELD) {
if (family_part [i] == '-' || family_part [i] == ',') {
family [i] = '\0';
break;
}
@@ -127,6 +128,59 @@ BOOL fontGetFamilyFromName (const char* name, char* family)
return TRUE;
}
static BOOL get_family_part_lower (const char* name, char* family)
{
int i = 0;
const char* family_part;
if ((family_part = strchr (name, '-')) == NULL)
return FALSE;
if (*(++family_part) == '\0')
return FALSE;
while (family_part [i] && i <= LEN_UNIDEVFONT_NAME) {
if (family_part [i] == '-') {
family [i] = '\0';
break;
}
family [i] = tolower(family_part [i]);
i++;
}
return TRUE;
}
/* devfont family specification:
* family[,alias]...
*/
BOOL fontDoesMatchFamily (const char* name, const char* family)
{
char family_part[LEN_UNIDEVFONT_NAME + 2];
char family_request[LEN_LOGFONT_NAME_FIELD + 2];
int i = 0;
if (!get_family_part_lower(name, family_part)) {
return FALSE;
}
// add ',' to the tail
family_part[strlen(family_part)] = ',';
// lowercase for family_request
strncpy(family_request, family, LEN_LOGFONT_NAME_FIELD);
while (family_request[i]) {
family_request[i] = tolower(family_request[i]);
i++;
}
// add ',' to the tail
family_request[strlen(family_request)] = ',';
// try "<family_request>,"
return strstr(family_part, family_request) != NULL;
}
DWORD fontConvertStyle (const char* style_part)
{
DWORD style = 0;
@@ -345,7 +399,7 @@ int fontGetWidthFromName (const char* name)
{
int i;
const char* width_part = name;
char width [LEN_FONT_NAME + 1];
char width [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < NR_LOOP_FOR_WIDTH; i++) {
if ((width_part = strchr (width_part, '-')) == NULL)
@@ -376,7 +430,7 @@ int fontGetHeightFromName (const char* name)
{
int i;
const char* height_part = name;
char height [LEN_FONT_NAME + 1];
char height [LEN_LOGFONT_NAME_FIELD + 1];
for (i = 0; i < NR_LOOP_FOR_HEIGHT; i++) {
if ((height_part = strchr (height_part, '-')) == NULL)
@@ -423,8 +477,8 @@ BOOL fontGetCharsetFromName (const char* name, char* charset)
return TRUE;
}
strncpy (charset, charset_part, LEN_FONT_NAME);
charset [LEN_FONT_NAME] = '\0';
strncpy (charset, charset_part, LEN_LOGFONT_NAME_FIELD);
charset [LEN_LOGFONT_NAME_FIELD] = '\0';
return TRUE;
}
@@ -446,8 +500,8 @@ BOOL fontGetCompatibleCharsetFromName (const char* name, char* charset)
if (*(++charset_part) == '\0')
return FALSE;
strncpy (charset, charset_part, LEN_FONT_NAME);
charset [LEN_FONT_NAME] = '\0';
strncpy (charset, charset_part, LEN_LOGFONT_NAME_FIELD);
charset [LEN_LOGFONT_NAME_FIELD] = '\0';
return TRUE;
}
@@ -505,8 +559,8 @@ BOOL charsetGetSpecificCharset (const char* charsets, int _index, char* charset)
return TRUE;
}
strncpy (charset, charsets, LEN_FONT_NAME);
charset [LEN_FONT_NAME] = '\0';
strncpy (charset, charsets, LEN_LOGFONT_NAME_FIELD);
charset [LEN_LOGFONT_NAME_FIELD] = '\0';
return TRUE;
}
+1 -1
View File
@@ -626,7 +626,7 @@ static DEVFONT* new_instance (LOGFONT* logfont, DEVFONT* devfont,
memcpy (new_devfont, devfont, sizeof (DEVFONT));
if (need_sbc_font && devfont->charset_ops->bytes_maxlen_char > 1) {
char charset [LEN_FONT_NAME + 1];
char charset [LEN_LOGFONT_NAME_FIELD + 1];
fontGetCompatibleCharsetFromName (devfont->name, charset);
new_devfont->charset_ops = GetCharsetOpsEx (charset);
+1 -1
View File
@@ -706,7 +706,7 @@ new_instance (LOGFONT* logfont, DEVFONT* devfont, BOOL need_sbc_font)
/* copy CharsetOps */
if (need_sbc_font && devfont->charset_ops->bytes_maxlen_char > 1) {
char charset [LEN_FONT_NAME + 1];
char charset [LEN_LOGFONT_NAME_FIELD + 1];
fontGetCompatibleCharsetFromName (devfont->name, charset);
new_devfont->charset_ops = GetCharsetOps (charset);
+22 -22
View File
@@ -72,7 +72,7 @@ static PLOGFONT gdiCreateLogFont (const char* type, const char* family,
{
PLOGFONT log_font;
int sbc_value, mbc_value = 0;
char dev_family [LEN_FONT_NAME + 1];
char dev_family [LEN_LOGFONT_NAME_FIELD + 1];
DEVFONT* sbc_devfont, *mbc_devfont;
// is valid style?
@@ -100,17 +100,17 @@ static PLOGFONT gdiCreateLogFont (const char* type, const char* family,
log_font->style = style;
if (type) {
strncpy (log_font->type, type, LEN_FONT_NAME);
log_font->type [LEN_FONT_NAME] = '\0';
strncpy (log_font->type, type, LEN_LOGFONT_NAME_FIELD);
log_font->type [LEN_LOGFONT_NAME_FIELD] = '\0';
}
else
strcpy (log_font->type, FONT_TYPE_NAME_ALL);
strncpy (log_font->family, family, LEN_FONT_NAME);
log_font->family [LEN_FONT_NAME] = '\0';
strncpy (log_font->family, family, LEN_LOGFONT_NAME_FIELD);
log_font->family [LEN_LOGFONT_NAME_FIELD] = '\0';
strncpy (log_font->charset, charset, LEN_FONT_NAME);
log_font->charset [LEN_FONT_NAME] = '\0';
strncpy (log_font->charset, charset, LEN_LOGFONT_NAME_FIELD);
log_font->charset [LEN_LOGFONT_NAME_FIELD] = '\0';
if (size > FONT_MAX_SIZE)
log_font->size = FONT_MAX_SIZE;
@@ -164,37 +164,37 @@ static PLOGFONT gdiCreateLogFont (const char* type, const char* family,
/*reset type name of logfont*/
if (log_font->mbc_devfont) {
fontGetTypeNameFromName (log_font->mbc_devfont->name, dev_family);
strncpy (log_font->type, dev_family, LEN_FONT_NAME);
log_font->type[LEN_FONT_NAME] = '\0';
strncpy (log_font->type, dev_family, LEN_LOGFONT_NAME_FIELD);
log_font->type[LEN_LOGFONT_NAME_FIELD] = '\0';
}
else {
fontGetTypeNameFromName (log_font->sbc_devfont->name, dev_family);
strncpy (log_font->type, dev_family, LEN_FONT_NAME);
log_font->type[LEN_FONT_NAME] = '\0';
strncpy (log_font->type, dev_family, LEN_LOGFONT_NAME_FIELD);
log_font->type[LEN_LOGFONT_NAME_FIELD] = '\0';
}
/*reset family name of logfont*/
if (log_font->mbc_devfont) {
fontGetFamilyFromName (log_font->mbc_devfont->name, dev_family);
strncpy (log_font->family, dev_family, LEN_FONT_NAME);
log_font->family [LEN_FONT_NAME] = '\0';
strncpy (log_font->family, dev_family, LEN_LOGFONT_NAME_FIELD);
log_font->family [LEN_LOGFONT_NAME_FIELD] = '\0';
}
else {
fontGetFamilyFromName (log_font->sbc_devfont->name, dev_family);
strncpy (log_font->family, dev_family, LEN_FONT_NAME);
log_font->family [LEN_FONT_NAME] = '\0';
strncpy (log_font->family, dev_family, LEN_LOGFONT_NAME_FIELD);
log_font->family [LEN_LOGFONT_NAME_FIELD] = '\0';
}
/*reset charset name of logfont*/
if (log_font->mbc_devfont) {
strncpy (log_font->charset,
log_font->mbc_devfont->charset_ops->name, LEN_FONT_NAME);
log_font->charset [LEN_FONT_NAME] = '\0';
log_font->mbc_devfont->charset_ops->name, LEN_LOGFONT_NAME_FIELD);
log_font->charset [LEN_LOGFONT_NAME_FIELD] = '\0';
}
else {
strncpy (log_font->charset,
log_font->sbc_devfont->charset_ops->name, LEN_FONT_NAME);
log_font->charset [LEN_FONT_NAME] = '\0';
log_font->sbc_devfont->charset_ops->name, LEN_LOGFONT_NAME_FIELD);
log_font->charset [LEN_LOGFONT_NAME_FIELD] = '\0';
}
/*reset ascent of logfont*/
@@ -345,9 +345,9 @@ PLOGFONT GUIAPI CreateLogFontEx (const char* type, const char* family,
PLOGFONT GUIAPI CreateLogFontByName (const char* font_name)
{
char type[LEN_FONT_NAME + 1];
char family[LEN_FONT_NAME + 1];
char charset[LEN_FONT_NAME + 1];
char type[LEN_LOGFONT_NAME_FIELD + 1];
char family[LEN_LOGFONT_NAME_FIELD + 1];
char charset[LEN_LOGFONT_NAME_FIELD + 1];
DWORD style;
int height;
+2 -2
View File
@@ -113,7 +113,7 @@ static BOOL load_fonts(void)
se_dev_fonts = calloc (font_table_size, sizeof (DEVFONT));
for (i = 0; i < font_table_size; i++) {
char charset[LEN_FONT_NAME + 1];
char charset[LEN_LOGFONT_NAME_FIELD + 1];
CHARSETOPS *charset_ops;
const char *font_name;
int font_id;
@@ -158,7 +158,7 @@ static BOOL load_fonts(void)
if ((nr_charsets = charsetGetCharsetsNumber (charsets)) > 1) {
int j;
for (j = 1; j < nr_charsets; j++) {
char charset [LEN_FONT_NAME + 1];
char charset [LEN_LOGFONT_NAME_FIELD + 1];
CHARSETOPS* charset_ops;
DEVFONT* new_devfont;
+4 -4
View File
@@ -102,10 +102,10 @@ BOOL mg_InitSysFont (void)
for (i = 0; i < nr_fonts; i++) {
char key [11];
char type [LEN_FONT_NAME + 1];
char family [LEN_FONT_NAME + 1];
char style [LEN_FONT_NAME + 1];
char charset [LEN_FONT_NAME + 1];
char type [LEN_LOGFONT_NAME_FIELD + 1];
char family [LEN_LOGFONT_NAME_FIELD + 1];
char style [LEN_LOGFONT_NAME_FIELD + 1];
char charset [LEN_LOGFONT_NAME_FIELD + 1];
char font_name [LEN_DEVFONT_NAME + 1];
int height;
int j = 0, need = 0;
+1 -1
View File
@@ -86,7 +86,7 @@ BOOL mg_InitSysFont (void)
for (i = 0; i < nr_fonts; i++) {
char key [11];
char charset [LEN_FONT_NAME + 1];
char charset [LEN_LOGFONT_NAME_FIELD + 1];
char file [MAX_PATH + 1];
sprintf (key, "name%d", i);
+6 -6
View File
@@ -197,13 +197,13 @@ static BOOL get_font_propt(FILE* fp, char* family, char* font_rrncnn, char* cha
/*FAMILY_NAME*/
if (strcmp (line_buf, "FAMILY_NAME") == 0)
{
if (strlen(body) > LEN_FONT_NAME)
if (strlen(body) > LEN_LOGFONT_NAME_FIELD)
{
fprintf(stderr, "the FAMILY_NAME is too long, "
"please truncation it to less than %d\n", LEN_FONT_NAME-2);
"please truncation it to less than %d\n", LEN_LOGFONT_NAME_FIELD-2);
return FALSE;
}
strncpy (family, body, LEN_FONT_NAME);
strncpy (family, body, LEN_LOGFONT_NAME_FIELD);
}
else if (strcmp (line_buf, "WEIGHT_NAME") == 0)
set_rrncnn (font_rrncnn, SET_WEIGHT_POS, body);
@@ -216,7 +216,7 @@ static BOOL get_font_propt(FILE* fp, char* family, char* font_rrncnn, char* cha
/*FIXME must inorder*/
else if (strcmp (line_buf, "CHARSET_REGISTRY") == 0)
strncpy (charset, body, LEN_FONT_NAME);
strncpy (charset, body, LEN_LOGFONT_NAME_FIELD);
else if (strcmp (line_buf, "CHARSET_ENCODING") == 0)
{
if (body[0] != '-')
@@ -494,8 +494,8 @@ typedef struct _FONT_PROPT {
} FONT_PROPT;
char font_name [LEN_UNIDEVFONT_NAME];
char family [LEN_FONT_NAME];
char charset [LEN_FONT_NAME];
char family [LEN_LOGFONT_NAME_FIELD];
char charset [LEN_LOGFONT_NAME_FIELD];
char new_file_name [LEN_UNIDEVFONT_NAME+5];
#define MAKE_HEADER(header, glyph_num)\
+3 -3
View File
@@ -54,7 +54,7 @@ typedef int BOOL;
#define TRUE 1
#define FALSE 0
#define LEN_FONT_NAME 23
#define LEN_LOGFONT_NAME_FIELD 23
#define LEN_DEVFONT_NAME 79
extern VBFINFO extern_vbfinfo;
@@ -64,8 +64,8 @@ extern VBFINFO extern_vbfinfo;
BOOL dumpVBF (VBFINFO* vbf, char* file)
{
FILE* fp;
char family [LEN_FONT_NAME + 1];
char style [LEN_FONT_NAME + 1];
char family [LEN_LOGFONT_NAME_FIELD + 1];
char style [LEN_LOGFONT_NAME_FIELD + 1];
int len_offsets;
int len_widths;
int len_header;
+10 -10
View File
@@ -70,13 +70,13 @@
typedef struct _CHARSET
{
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
struct _CHARSET* next;
}CHARSET;
typedef struct _FAMILY
{
char name [LEN_FONT_NAME + 1];
char name [LEN_LOGFONT_NAME_FIELD + 1];
CHARSET chset_head;
struct _FAMILY* next;
}FAMILY;
@@ -98,8 +98,8 @@ static FAMILY* find_insert_family (FAMILY* head, const char* fami_name)
}
cur = (FAMILY*)malloc(sizeof(*cur));
strncpy (cur->name, fami_name, LEN_FONT_NAME);
cur->name [LEN_FONT_NAME] = '\0';
strncpy (cur->name, fami_name, LEN_LOGFONT_NAME_FIELD);
cur->name [LEN_LOGFONT_NAME_FIELD] = '\0';
cur->chset_head.next = NULL;
cur->next = NULL;
@@ -133,8 +133,8 @@ static void insert_chset (FAMILY* fami, const char* chset_name)
}
cur = (CHARSET*)malloc(sizeof(*cur));
strncpy (cur->name, chset_name, LEN_FONT_NAME);
cur->name [LEN_FONT_NAME] = '\0';
strncpy (cur->name, chset_name, LEN_LOGFONT_NAME_FIELD);
cur->name [LEN_LOGFONT_NAME_FIELD] = '\0';
cur->next = NULL;
pre->next = cur;
@@ -416,7 +416,7 @@ static void insert_strings (HWND hWnd, char** strs, int str_num)
static int fresh_chset_list (HWND hWnd)
{
char str_buffer [LEN_FONT_NAME + 1];
char str_buffer [LEN_LOGFONT_NAME_FIELD + 1];
HWND fami_lb;
HWND chset_lb;
int cur_sel;
@@ -455,7 +455,7 @@ static int fresh_chset_list (HWND hWnd)
static int insert_listboxs (HWND hWnd)
{
FAMILY* fami_cur = ((FAMILY*)GetWindowAdditionalData(hWnd))->next;
char str_buffer [LEN_FONT_NAME + 1];
char str_buffer [LEN_LOGFONT_NAME_FIELD + 1];
int i;
HWND hctrl;
@@ -496,8 +496,8 @@ static int insert_listboxs (HWND hWnd)
static LOGFONT* create_sel_font(HWND hWnd)
{
char family [LEN_FONT_NAME +1];
char chset [LEN_FONT_NAME +1];
char family [LEN_LOGFONT_NAME_FIELD +1];
char chset [LEN_LOGFONT_NAME_FIELD +1];
char weight;
char slant;
char flip;
+1
View File
@@ -53,6 +53,7 @@ BOOL fontGetTypeNameFromName (const char* name, char* type);
int fontConvertFontType (const char* type);
BOOL fontGetFamilyFromName (const char* name, char* family);
BOOL fontDoesMatchFamily (const char* name, const char* family);
BOOL fontCopyStyleFromName (const char* name, char* style);
DWORD fontGetStyleFromName (const char* name);
+18 -18
View File
@@ -67,7 +67,7 @@ static PLOGFONT gdiCreateLogFont ( const char* type, const char* family,
{
PLOGFONT log_font;
int sbc_descent, mbc_descent = 0;
char dev_family [LEN_FONT_NAME + 1];
char dev_family [LEN_LOGFONT_NAME_FIELD + 1];
DEVFONT* sbc_devfont, *mbc_devfont;
// is valid style?
@@ -89,17 +89,17 @@ static PLOGFONT gdiCreateLogFont ( const char* type, const char* family,
#endif
if (type) {
strncpy (log_font->type, type, LEN_FONT_NAME);
log_font->type [LEN_FONT_NAME] = '\0';
strncpy (log_font->type, type, LEN_LOGFONT_NAME_FIELD);
log_font->type [LEN_LOGFONT_NAME_FIELD] = '\0';
}
else
strcpy (log_font->type, FONT_TYPE_NAME_ALL);
strncpy (log_font->family, family, LEN_FONT_NAME);
log_font->family [LEN_FONT_NAME] = '\0';
strncpy (log_font->family, family, LEN_LOGFONT_NAME_FIELD);
log_font->family [LEN_LOGFONT_NAME_FIELD] = '\0';
strncpy (log_font->charset, charset, LEN_FONT_NAME);
log_font->charset [LEN_FONT_NAME] = '\0';
strncpy (log_font->charset, charset, LEN_LOGFONT_NAME_FIELD);
log_font->charset [LEN_LOGFONT_NAME_FIELD] = '\0';
if (size > FONT_MAX_SIZE)
log_font->size = FONT_MAX_SIZE;
@@ -138,25 +138,25 @@ static PLOGFONT gdiCreateLogFont ( const char* type, const char* family,
// family name
if (log_font->mbc_devfont) {
fontGetFamilyFromName (log_font->mbc_devfont->name, dev_family);
strncpy (log_font->family, dev_family, LEN_FONT_NAME);
log_font->family [LEN_FONT_NAME] = '\0';
strncpy (log_font->family, dev_family, LEN_LOGFONT_NAME_FIELD);
log_font->family [LEN_LOGFONT_NAME_FIELD] = '\0';
}
else {
fontGetFamilyFromName (log_font->sbc_devfont->name, dev_family);
strncpy (log_font->family, dev_family, LEN_FONT_NAME);
log_font->family [LEN_FONT_NAME] = '\0';
strncpy (log_font->family, dev_family, LEN_LOGFONT_NAME_FIELD);
log_font->family [LEN_LOGFONT_NAME_FIELD] = '\0';
}
// charset name
if (log_font->mbc_devfont) {
strncpy (log_font->charset,
log_font->mbc_devfont->charset_ops->name, LEN_FONT_NAME);
log_font->charset [LEN_FONT_NAME] = '\0';
log_font->mbc_devfont->charset_ops->name, LEN_LOGFONT_NAME_FIELD);
log_font->charset [LEN_LOGFONT_NAME_FIELD] = '\0';
}
else {
strncpy (log_font->charset,
log_font->sbc_devfont->charset_ops->name, LEN_FONT_NAME);
log_font->charset [LEN_FONT_NAME] = '\0';
log_font->sbc_devfont->charset_ops->name, LEN_LOGFONT_NAME_FIELD);
log_font->charset [LEN_LOGFONT_NAME_FIELD] = '\0';
}
// size
@@ -215,9 +215,9 @@ PLOGFONT GUIAPI CreateLogFont (const char* type, const char* family,
PLOGFONT GUIAPI CreateLogFontByName (const char* font_name)
{
char type[LEN_FONT_NAME + 1];
char family[LEN_FONT_NAME + 1];
char charset[LEN_FONT_NAME + 1];
char type[LEN_LOGFONT_NAME_FIELD + 1];
char family[LEN_LOGFONT_NAME_FIELD + 1];
char charset[LEN_LOGFONT_NAME_FIELD + 1];
DWORD style;
int height;