?? gdkfont-win32.c
字號:
} if (check_cp (FS_CYRILLIC)) { set_bit (U_BASIC_LATIN); set_bit (U_CYRILLIC); retval = TRUE; } if (check_cp (FS_GREEK)) { set_bit (U_BASIC_LATIN); set_bit (U_BASIC_GREEK); retval = TRUE; } if (check_cp (FS_TURKISH)) { set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_A); set_bit (U_CURRENCY_SYMBOLS); retval = TRUE; } if (check_cp (FS_HEBREW)) { set_bit (U_BASIC_LATIN); set_bit (U_CURRENCY_SYMBOLS); set_bit (U_BASIC_HEBREW); set_bit (U_HEBREW_EXTENDED); retval = TRUE; } if (check_cp (FS_ARABIC)) { set_bit (U_BASIC_LATIN); set_bit (U_CURRENCY_SYMBOLS); set_bit (U_BASIC_ARABIC); set_bit (U_ARABIC_EXTENDED); retval = TRUE; } if (check_cp (FS_BALTIC)) { set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_CURRENCY_SYMBOLS); set_bit (U_LATIN_EXTENDED_A); set_bit (U_LATIN_EXTENDED_B); retval = TRUE; } if (check_cp (FS_VIETNAMESE)) { /* ??? */ set_bit (U_BASIC_LATIN); retval = TRUE; } if (check_cp (FS_THAI)) { set_bit (U_BASIC_LATIN); set_bit (U_THAI); retval = TRUE; } if (check_cp (FS_JISJAPAN)) { /* Based on MS Gothic */ set_bit (U_BASIC_LATIN); set_bit (U_CJK_SYMBOLS_AND_PUNCTUATION); set_bit (U_HIRAGANA); set_bit (U_KATAKANA); set_bit (U_CJK_UNIFIED_IDEOGRAPHS); set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS); retval = TRUE; } if (check_cp (FS_CHINESESIMP)) { /* Based on MS Hei */ set_bit (U_BASIC_LATIN); set_bit (U_HIRAGANA); set_bit (U_KATAKANA); set_bit (U_BOPOMOFO); set_bit (U_CJK_UNIFIED_IDEOGRAPHS); retval = TRUE; } if (check_cp (FS_WANSUNG) || check_cp (FS_JOHAB)) /* ??? */ { /* Based on GulimChe. I wonder if all Korean fonts * really support this large range of Unicode subranges? */ set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_A); set_bit (U_SPACING_MODIFIER_LETTERS); set_bit (U_BASIC_GREEK); set_bit (U_CYRILLIC); set_bit (U_HANGUL_JAMO); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS); set_bit (U_CURRENCY_SYMBOLS); set_bit (U_LETTERLIKE_SYMBOLS); set_bit (U_NUMBER_FORMS); set_bit (U_ARROWS); set_bit (U_MATHEMATICAL_OPERATORS); set_bit (U_MISCELLANEOUS_TECHNICAL); set_bit (U_ENCLOSED_ALPHANUMERICS); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_GEOMETRIC_SHAPES); set_bit (U_MISCELLANEOUS_SYMBOLS); set_bit (U_CJK_SYMBOLS_AND_PUNCTUATION); set_bit (U_HIRAGANA); set_bit (U_KATAKANA); set_bit (U_HANGUL_COMPATIBILITY_JAMO); set_bit (U_ENCLOSED_CJK); set_bit (U_CJK_COMPATIBILITY_FORMS); set_bit (U_HANGUL); set_bit (U_CJK_UNIFIED_IDEOGRAPHS); set_bit (U_CJK_COMPATIBILITY_IDEOGRAPHS); set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS); retval = TRUE; } if (check_cp (FS_CHINESETRAD)) { /* Based on MingLiU */ set_bit (U_BASIC_LATIN); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_CJK_SYMBOLS_AND_PUNCTUATION); set_bit (U_BOPOMOFO); set_bit (U_CJK_UNIFIED_IDEOGRAPHS); set_bit (U_CJK_COMPATIBILITY_IDEOGRAPHS); set_bit (U_SMALL_FORM_VARIANTS); set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS); retval = TRUE; } if (check_cp (FS_SYMBOL) || charset == MAC_CHARSET) { /* Non-Unicode encoding, I guess. Pretend it covers * the single-byte range of values. */ set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); retval = TRUE; } if (retval) return TRUE; GDK_NOTE (MISC, g_print ("... No code page bits set!\n")); /* Sigh. Not even any code page bits were set. Guess based on * charset, then. These somewhat optimistic guesses are based on the * table in Appendix M in the book "Developing ..." mentioned * above. */ switch (charset) { case ANSI_CHARSET: set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_A); set_bit (U_LATIN_EXTENDED_B); set_bit (U_SPACING_MODIFIER_LETTERS); set_bit (U_COMBINING_DIACRITICAL_MARKS); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS); set_bit (U_CURRENCY_SYMBOLS);#if 0 /* I find this too hard to believe... */ set_bit (U_BASIC_GREEK); set_bit (U_CYRILLIC); set_bit (U_BASIC_HEBREW); set_bit (U_HEBREW_EXTENDED); set_bit (U_BASIC_ARABIC); set_bit (U_ARABIC_EXTENDED); set_bit (U_LETTERLIKE_SYMBOLS); set_bit (U_NUMBER_FORMS); set_bit (U_ARROWS); set_bit (U_MATHEMATICAL_OPERATORS); set_bit (U_MISCELLANEOUS_TECHNICAL); set_bit (U_ENCLOSED_ALPHANUMERICS); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_GEOMETRIC_SHAPES); set_bit (U_MISCELLANEOUS_SYMBOLS); set_bit (U_HIRAGANA); set_bit (U_KATAKANA); set_bit (U_BOPOMOFO); set_bit (U_HANGUL_COMPATIBILITY_JAMO); set_bit (U_CJK_MISCELLANEOUS); set_bit (U_CJK_COMPATIBILITY); set_bit (U_HANGUL); set_bit (U_HANGUL_SUPPLEMENTARY_A); set_bit (U_CJK_COMPATIBILITY_IDEOGRAPHS); set_bit (U_ALPHABETIC_PRESENTATION_FORMS); set_bit (U_SMALL_FORM_VARIANTS); set_bit (U_ARABIC_PRESENTATION_FORMS_B); set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS); set_bit (U_SPECIALS);#endif retval = TRUE; break; case SYMBOL_CHARSET: /* Unggh */ set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); retval = TRUE; break; case SHIFTJIS_CHARSET: case HANGEUL_CHARSET: case GB2312_CHARSET: case CHINESEBIG5_CHARSET: case JOHAB_CHARSET: /* The table really does claim these "locales" (it doesn't * talk about charsets per se) cover the same Unicode * subranges */ set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_A); set_bit (U_LATIN_EXTENDED_B); set_bit (U_SPACING_MODIFIER_LETTERS); set_bit (U_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS); set_bit (U_BASIC_GREEK); set_bit (U_CYRILLIC); set_bit (U_HANGUL_JAMO); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS); set_bit (U_CURRENCY_SYMBOLS); set_bit (U_LETTERLIKE_SYMBOLS); set_bit (U_NUMBER_FORMS); set_bit (U_ARROWS); set_bit (U_MATHEMATICAL_OPERATORS); set_bit (U_MISCELLANEOUS_TECHNICAL); set_bit (U_ENCLOSED_ALPHANUMERICS); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_GEOMETRIC_SHAPES); set_bit (U_MISCELLANEOUS_SYMBOLS); set_bit (U_CJK_SYMBOLS_AND_PUNCTUATION); set_bit (U_HIRAGANA); set_bit (U_KATAKANA); set_bit (U_BOPOMOFO); set_bit (U_HANGUL_COMPATIBILITY_JAMO); set_bit (U_CJK_MISCELLANEOUS); set_bit (U_CJK_COMPATIBILITY); set_bit (U_HANGUL); set_bit (U_HANGUL_SUPPLEMENTARY_A); set_bit (U_CJK_UNIFIED_IDEOGRAPHS); set_bit (U_CJK_COMPATIBILITY_IDEOGRAPHS); set_bit (U_ALPHABETIC_PRESENTATION_FORMS); set_bit (U_SMALL_FORM_VARIANTS); set_bit (U_ARABIC_PRESENTATION_FORMS_B); set_bit (U_SPECIALS); retval = TRUE; break; case HEBREW_CHARSET: set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_B); set_bit (U_SPACING_MODIFIER_LETTERS); set_bit (U_BASIC_HEBREW); set_bit (U_HEBREW_EXTENDED); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_LETTERLIKE_SYMBOLS); retval = TRUE; break; case ARABIC_CHARSET: set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_A); set_bit (U_LATIN_EXTENDED_B); set_bit (U_SPACING_MODIFIER_LETTERS); set_bit (U_BASIC_GREEK); set_bit (U_BASIC_ARABIC); set_bit (U_ARABIC_EXTENDED); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_LETTERLIKE_SYMBOLS); set_bit (U_ARROWS); set_bit (U_MATHEMATICAL_OPERATORS); set_bit (U_MISCELLANEOUS_TECHNICAL); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_GEOMETRIC_SHAPES); set_bit (U_MISCELLANEOUS_SYMBOLS); set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS); retval = TRUE; break; case GREEK_CHARSET: set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_B); set_bit (U_BASIC_GREEK); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS); set_bit (U_LETTERLIKE_SYMBOLS); set_bit (U_ARROWS); set_bit (U_MATHEMATICAL_OPERATORS); set_bit (U_MISCELLANEOUS_TECHNICAL); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_GEOMETRIC_SHAPES); set_bit (U_MISCELLANEOUS_SYMBOLS); retval = TRUE; break; case TURKISH_CHARSET: set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_A); set_bit (U_LATIN_EXTENDED_B); set_bit (U_SPACING_MODIFIER_LETTERS); set_bit (U_BASIC_GREEK); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS); set_bit (U_CURRENCY_SYMBOLS); set_bit (U_LETTERLIKE_SYMBOLS); set_bit (U_ARROWS); set_bit (U_MATHEMATICAL_OPERATORS); set_bit (U_MISCELLANEOUS_TECHNICAL); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_GEOMETRIC_SHAPES); set_bit (U_MISCELLANEOUS_SYMBOLS); retval = TRUE; break; case VIETNAMESE_CHARSET: case THAI_CHARSET: /* These are not in the table, so I have no idea */ break; case BALTIC_CHARSET: set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_A); set_bit (U_LATIN_EXTENDED_B); set_bit (U_SPACING_MODIFIER_LETTERS); set_bit (U_BASIC_GREEK); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS); set_bit (U_CURRENCY_SYMBOLS); set_bit (U_LETTERLIKE_SYMBOLS); set_bit (U_ARROWS); set_bit (U_MATHEMATICAL_OPERATORS); set_bit (U_MISCELLANEOUS_TECHNICAL); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_GEOMETRIC_SHAPES); set_bit (U_MISCELLANEOUS_SYMBOLS); retval = TRUE; break; case EASTEUROPE_CHARSET: set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_LATIN_EXTENDED_A); set_bit (U_LATIN_EXTENDED_B); set_bit (U_SPACING_MODIFIER_LETTERS); set_bit (U_BASIC_GREEK); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS); set_bit (U_CURRENCY_SYMBOLS); set_bit (U_LETTERLIKE_SYMBOLS); set_bit (U_ARROWS); set_bit (U_MATHEMATICAL_OPERATORS); set_bit (U_MISCELLANEOUS_TECHNICAL); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_GEOMETRIC_SHAPES); set_bit (U_MISCELLANEOUS_SYMBOLS); retval = TRUE; break; case RUSSIAN_CHARSET: set_bit (U_BASIC_LATIN); set_bit (U_LATIN_1_SUPPLEMENT); set_bit (U_CYRILLIC); set_bit (U_GENERAL_PUNCTUATION); set_bit (U_LETTERLIKE_SYMBOLS); set_bit (U_ARROWS); set_bit (U_MATHEMATICAL_OPERATORS); set_bit (U_MISCELLANEOUS_TECHNICAL); set_bit (U_BOX_DRAWING); set_bit (U_BLOCK_ELEMENTS); set_bit (U_GEOMETRIC_SHAPES); set_bit (U_MISCELLANEOUS_SYMBOLS); retval = TRUE; break; }#undef set_bit return retval;}static GdkWin32SingleFont *gdk_font_load_logfont (LOGFONT *lfp){ GdkWin32SingleFont *singlefont; HFONT hfont; LOGFONT logfont; CHARSETINFO csi; HGDIOBJ oldfont; int tries; gchar face[100]; for (tries = 0; ; tries++) { GDK_NOTE (MISC, g_print ("... trying %ld,%ld,%ld,%ld," "%ld,%d,%d,%d," "%d,%d,%d," "%d,%#.02x,\"%s\"\n", lfp->lfHeight, lfp->lfWidth, lfp->lfEscapement, lfp->lfOrientation, lfp->lfWeight, lfp->lfItalic, lfp->lfUnderline, lfp->lfStrikeOut, lfp->lfCharSet, lfp->lfOutPrecision, lfp->lfClipPrecision, lfp->lfQuality, lfp->lfPitchAndFamily, lfp->lfFaceName)); hfont = CreateFontIndirect (lfp); if (hfont != NULL) break; /* If we fail, try some similar fonts often found on Windows. */ if (tries == 0) { if (g_strcasecmp (lfp->lfFaceName, "helvetica") == 0) strcpy (lfp->lfFaceName, "arial"); else if (g_strcasecmp (lfp->lfFaceName, "new century schoolbook") == 0) strcpy (lfp->lfFaceName, "century schoolbook"); else if (g_strcasecmp (lfp->lfFaceName, "courier") == 0) strcpy (lfp->lfFaceName, "courier new"); else if (g_strcasecmp (lfp->lfFaceName, "lucida") == 0) strcpy (lfp->lfFaceName, "lucida sans unicode"); else if (g_strcasecmp (lfp->lfFaceName, "lucidatypewriter") == 0) strcpy (lfp->lfFaceName, "lucida console");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -