|
|
|
|
@@ -445,83 +445,229 @@ gdk_font_list_free (gchar **font_list)
|
|
|
|
|
* Blocks.txt from ftp.unicode.org. The bit number field is the bitfield
|
|
|
|
|
* number as in the FONTSIGNATURE struct's fsUsb field.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
U_BASIC_LATIN = 0,
|
|
|
|
|
U_LATIN_1_SUPPLEMENT = 1,
|
|
|
|
|
U_LATIN_EXTENDED_A = 2,
|
|
|
|
|
U_LATIN_EXTENDED_B = 3,
|
|
|
|
|
U_IPA_EXTENSIONS = 4,
|
|
|
|
|
U_SPACING_MODIFIER_LETTERS = 5,
|
|
|
|
|
U_COMBINING_DIACRITICAL_MARKS = 6,
|
|
|
|
|
U_BASIC_GREEK = 7,
|
|
|
|
|
U_GREEK_SYMBOLS_AND_COPTIC = 8,
|
|
|
|
|
U_CYRILLIC = 9,
|
|
|
|
|
U_ARMENIAN = 10,
|
|
|
|
|
U_HEBREW_EXTENDED = 12,
|
|
|
|
|
U_BASIC_HEBREW = 11,
|
|
|
|
|
U_BASIC_ARABIC = 13,
|
|
|
|
|
U_ARABIC_EXTENDED = 14,
|
|
|
|
|
U_DEVANAGARI = 15,
|
|
|
|
|
U_BENGALI = 16,
|
|
|
|
|
U_GURMUKHI = 17,
|
|
|
|
|
U_GUJARATI = 18,
|
|
|
|
|
U_ORIYA = 19,
|
|
|
|
|
U_TAMIL = 20,
|
|
|
|
|
U_TELUGU = 21,
|
|
|
|
|
U_KANNADA = 22,
|
|
|
|
|
U_MALAYALAM = 23,
|
|
|
|
|
U_THAI = 24,
|
|
|
|
|
U_LAO = 25,
|
|
|
|
|
U_GEORGIAN_EXTENDED = 27,
|
|
|
|
|
U_BASIC_GEORGIAN = 26,
|
|
|
|
|
U_HANGUL_JAMO = 28,
|
|
|
|
|
U_LATIN_EXTENDED_ADDITIONAL = 29,
|
|
|
|
|
U_GREEK_EXTENDED = 30,
|
|
|
|
|
U_GENERAL_PUNCTUATION = 31,
|
|
|
|
|
U_SUPERSCRIPTS_AND_SUBSCRIPTS = 32,
|
|
|
|
|
U_CURRENCY_SYMBOLS = 33,
|
|
|
|
|
U_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS = 34,
|
|
|
|
|
U_LETTERLIKE_SYMBOLS = 35,
|
|
|
|
|
U_NUMBER_FORMS = 36,
|
|
|
|
|
U_ARROWS = 37,
|
|
|
|
|
U_MATHEMATICAL_OPERATORS = 38,
|
|
|
|
|
U_MISCELLANEOUS_TECHNICAL = 39,
|
|
|
|
|
U_CONTROL_PICTURES = 40,
|
|
|
|
|
U_OPTICAL_CHARACTER_RECOGNITION = 41,
|
|
|
|
|
U_ENCLOSED_ALPHANUMERICS = 42,
|
|
|
|
|
U_BOX_DRAWING = 43,
|
|
|
|
|
U_BLOCK_ELEMENTS = 44,
|
|
|
|
|
U_GEOMETRIC_SHAPES = 45,
|
|
|
|
|
U_MISCELLANEOUS_SYMBOLS = 46,
|
|
|
|
|
U_DINGBATS = 47,
|
|
|
|
|
U_CJK_SYMBOLS_AND_PUNCTUATION = 48,
|
|
|
|
|
U_HIRAGANA = 49,
|
|
|
|
|
U_KATAKANA = 50,
|
|
|
|
|
U_BOPOMOFO = 51,
|
|
|
|
|
U_HANGUL_COMPATIBILITY_JAMO = 52,
|
|
|
|
|
U_CJK_MISCELLANEOUS = 53,
|
|
|
|
|
U_ENCLOSED_CJK = 54,
|
|
|
|
|
U_CJK_COMPATIBILITY = 55,
|
|
|
|
|
U_HANGUL = 56,
|
|
|
|
|
U_HANGUL_SUPPLEMENTARY_A = 57,
|
|
|
|
|
U_HANGUL_SUPPLEMENTARY_B = 58,
|
|
|
|
|
U_CJK_UNIFIED_IDEOGRAPHS = 59,
|
|
|
|
|
U_PRIVATE_USE_AREA = 60,
|
|
|
|
|
U_CJK_COMPATIBILITY_IDEOGRAPHS = 61,
|
|
|
|
|
U_ALPHABETIC_PRESENTATION_FORMS = 62,
|
|
|
|
|
U_ARABIC_PRESENTATION_FORMS_A = 63,
|
|
|
|
|
U_COMBINING_HALF_MARKS = 64,
|
|
|
|
|
U_CJK_COMPATIBILITY_FORMS = 65,
|
|
|
|
|
U_SMALL_FORM_VARIANTS = 66,
|
|
|
|
|
U_ARABIC_PRESENTATION_FORMS_B = 67,
|
|
|
|
|
U_SPECIALS = 69,
|
|
|
|
|
U_HALFWIDTH_AND_FULLWIDTH_FORMS = 68
|
|
|
|
|
} unicode_subset;
|
|
|
|
|
|
|
|
|
|
static struct {
|
|
|
|
|
wchar_t low, high;
|
|
|
|
|
guint bit;
|
|
|
|
|
unicode_subset bit;
|
|
|
|
|
gchar *name;
|
|
|
|
|
} utab[] =
|
|
|
|
|
{
|
|
|
|
|
{ 0x0000, 0x007E, 0, "Basic Latin" },
|
|
|
|
|
{ 0x00A0, 0x00FF, 1, "Latin-1 Supplement" },
|
|
|
|
|
{ 0x0100, 0x017F, 2, "Latin Extended-A" },
|
|
|
|
|
{ 0x0180, 0x024F, 3, "Latin Extended-B" },
|
|
|
|
|
{ 0x0250, 0x02AF, 4, "IPA Extensions" },
|
|
|
|
|
{ 0x02B0, 0x02FF, 5, "Spacing Modifier Letters" },
|
|
|
|
|
{ 0x0300, 0x036F, 6, "Combining Diacritical Marks" },
|
|
|
|
|
{ 0x0370, 0x03CF, 7, "Basic Greek" },
|
|
|
|
|
{ 0x03D0, 0x03FF, 8, "Greek Symbols and Coptic" },
|
|
|
|
|
{ 0x0400, 0x04FF, 9, "Cyrillic" },
|
|
|
|
|
{ 0x0530, 0x058F, 10, "Armenian" },
|
|
|
|
|
{ 0x0590, 0x05CF, 12, "Hebrew Extended" },
|
|
|
|
|
{ 0x05D0, 0x05FF, 11, "Basic Hebrew" },
|
|
|
|
|
{ 0x0600, 0x0652, 13, "Basic Arabic" },
|
|
|
|
|
{ 0x0653, 0x06FF, 14, "Arabic Extended" },
|
|
|
|
|
{ 0x0900, 0x097F, 15, "Devanagari" },
|
|
|
|
|
{ 0x0980, 0x09FF, 16, "Bengali" },
|
|
|
|
|
{ 0x0A00, 0x0A7F, 17, "Gurmukhi" },
|
|
|
|
|
{ 0x0A80, 0x0AFF, 18, "Gujarati" },
|
|
|
|
|
{ 0x0B00, 0x0B7F, 19, "Oriya" },
|
|
|
|
|
{ 0x0B80, 0x0BFF, 20, "Tamil" },
|
|
|
|
|
{ 0x0C00, 0x0C7F, 21, "Telugu" },
|
|
|
|
|
{ 0x0C80, 0x0CFF, 22, "Kannada" },
|
|
|
|
|
{ 0x0D00, 0x0D7F, 23, "Malayalam" },
|
|
|
|
|
{ 0x0E00, 0x0E7F, 24, "Thai" },
|
|
|
|
|
{ 0x0E80, 0x0EFF, 25, "Lao" },
|
|
|
|
|
{ 0x10A0, 0x10CF, 27, "Georgian Extended" },
|
|
|
|
|
{ 0x10D0, 0x10FF, 26, "Basic Georgian" },
|
|
|
|
|
{ 0x1100, 0x11FF, 28, "Hangul Jamo" },
|
|
|
|
|
{ 0x1E00, 0x1EFF, 29, "Latin Extended Additional" },
|
|
|
|
|
{ 0x1F00, 0x1FFF, 30, "Greek Extended" },
|
|
|
|
|
{ 0x2000, 0x206F, 31, "General Punctuation" },
|
|
|
|
|
{ 0x2070, 0x209F, 32, "Superscripts and Subscripts" },
|
|
|
|
|
{ 0x20A0, 0x20CF, 33, "Currency Symbols" },
|
|
|
|
|
{ 0x20D0, 0x20FF, 34, "Combining Diacritical Marks for Symbols" },
|
|
|
|
|
{ 0x2100, 0x214F, 35, "Letterlike Symbols" },
|
|
|
|
|
{ 0x2150, 0x218F, 36, "Number Forms" },
|
|
|
|
|
{ 0x2190, 0x21FF, 37, "Arrows" },
|
|
|
|
|
{ 0x2200, 0x22FF, 38, "Mathematical Operators" },
|
|
|
|
|
{ 0x2300, 0x23FF, 39, "Miscellaneous Technical" },
|
|
|
|
|
{ 0x2400, 0x243F, 40, "Control Pictures" },
|
|
|
|
|
{ 0x2440, 0x245F, 41, "Optical Character Recognition" },
|
|
|
|
|
{ 0x2460, 0x24FF, 42, "Enclosed Alphanumerics" },
|
|
|
|
|
{ 0x2500, 0x257F, 43, "Box Drawing" },
|
|
|
|
|
{ 0x2580, 0x259F, 44, "Block Elements" },
|
|
|
|
|
{ 0x25A0, 0x25FF, 45, "Geometric Shapes" },
|
|
|
|
|
{ 0x2600, 0x26FF, 46, "Miscellaneous Symbols" },
|
|
|
|
|
{ 0x2700, 0x27BF, 47, "Dingbats" },
|
|
|
|
|
{ 0x3000, 0x303F, 48, "CJK Symbols and Punctuation" },
|
|
|
|
|
{ 0x3040, 0x309F, 49, "Hiragana" },
|
|
|
|
|
{ 0x30A0, 0x30FF, 50, "Katakana" },
|
|
|
|
|
{ 0x3100, 0x312F, 51, "Bopomofo" },
|
|
|
|
|
{ 0x3130, 0x318F, 52, "Hangul Compatibility Jamo" },
|
|
|
|
|
{ 0x3190, 0x319F, 53, "CJK Miscellaneous" },
|
|
|
|
|
{ 0x3200, 0x32FF, 54, "Enclosed CJK" },
|
|
|
|
|
{ 0x3300, 0x33FF, 55, "CJK Compatibility" },
|
|
|
|
|
{ 0x3400, 0x3D2D, 56, "Hangul" },
|
|
|
|
|
{ 0x3D2E, 0x44B7, 57, "Hangul Supplementary-A" },
|
|
|
|
|
{ 0x44B8, 0x4DFF, 58, "Hangul Supplementary-B" },
|
|
|
|
|
{ 0x4E00, 0x9FFF, 59, "CJK Unified Ideographs" },
|
|
|
|
|
{ 0xE000, 0xF8FF, 60, "Private Use Area" },
|
|
|
|
|
{ 0xF900, 0xFAFF, 61, "CJK Compatibility Ideographs" },
|
|
|
|
|
{ 0xFB00, 0xFB4F, 62, "Alphabetic Presentation Forms" },
|
|
|
|
|
{ 0xFB50, 0xFDFF, 63, "Arabic Presentation Forms-A" },
|
|
|
|
|
{ 0xFE20, 0xFE2F, 64, "Combining Half Marks" },
|
|
|
|
|
{ 0xFE30, 0xFE4F, 65, "CJK Compatibility Forms" },
|
|
|
|
|
{ 0xFE50, 0xFE6F, 66, "Small Form Variants" },
|
|
|
|
|
{ 0xFE70, 0xFEFE, 67, "Arabic Presentation Forms-B" },
|
|
|
|
|
{ 0xFEFF, 0xFEFF, 69, "Specials" },
|
|
|
|
|
{ 0xFF00, 0xFFEF, 68, "Halfwidth and Fullwidth Forms" },
|
|
|
|
|
{ 0xFFF0, 0xFFFD, 69, "Specials" }
|
|
|
|
|
{ 0x0000, 0x007E,
|
|
|
|
|
U_BASIC_LATIN, "Basic Latin" },
|
|
|
|
|
{ 0x00A0, 0x00FF,
|
|
|
|
|
U_LATIN_1_SUPPLEMENT, "Latin-1 Supplement" },
|
|
|
|
|
{ 0x0100, 0x017F,
|
|
|
|
|
U_LATIN_EXTENDED_A, "Latin Extended-A" },
|
|
|
|
|
{ 0x0180, 0x024F,
|
|
|
|
|
U_LATIN_EXTENDED_B, "Latin Extended-B" },
|
|
|
|
|
{ 0x0250, 0x02AF,
|
|
|
|
|
U_IPA_EXTENSIONS, "IPA Extensions" },
|
|
|
|
|
{ 0x02B0, 0x02FF,
|
|
|
|
|
U_SPACING_MODIFIER_LETTERS, "Spacing Modifier Letters" },
|
|
|
|
|
{ 0x0300, 0x036F,
|
|
|
|
|
U_COMBINING_DIACRITICAL_MARKS, "Combining Diacritical Marks" },
|
|
|
|
|
{ 0x0370, 0x03CF,
|
|
|
|
|
U_BASIC_GREEK, "Basic Greek" },
|
|
|
|
|
{ 0x03D0, 0x03FF,
|
|
|
|
|
U_GREEK_SYMBOLS_AND_COPTIC, "Greek Symbols and Coptic" },
|
|
|
|
|
{ 0x0400, 0x04FF,
|
|
|
|
|
U_CYRILLIC, "Cyrillic" },
|
|
|
|
|
{ 0x0530, 0x058F,
|
|
|
|
|
U_ARMENIAN, "Armenian" },
|
|
|
|
|
{ 0x0590, 0x05CF,
|
|
|
|
|
U_HEBREW_EXTENDED, "Hebrew Extended" },
|
|
|
|
|
{ 0x05D0, 0x05FF,
|
|
|
|
|
U_BASIC_HEBREW, "Basic Hebrew" },
|
|
|
|
|
{ 0x0600, 0x0652,
|
|
|
|
|
U_BASIC_ARABIC, "Basic Arabic" },
|
|
|
|
|
{ 0x0653, 0x06FF,
|
|
|
|
|
U_ARABIC_EXTENDED, "Arabic Extended" },
|
|
|
|
|
{ 0x0900, 0x097F,
|
|
|
|
|
U_DEVANAGARI, "Devanagari" },
|
|
|
|
|
{ 0x0980, 0x09FF,
|
|
|
|
|
U_BENGALI, "Bengali" },
|
|
|
|
|
{ 0x0A00, 0x0A7F,
|
|
|
|
|
U_GURMUKHI, "Gurmukhi" },
|
|
|
|
|
{ 0x0A80, 0x0AFF,
|
|
|
|
|
U_GUJARATI, "Gujarati" },
|
|
|
|
|
{ 0x0B00, 0x0B7F,
|
|
|
|
|
U_ORIYA, "Oriya" },
|
|
|
|
|
{ 0x0B80, 0x0BFF,
|
|
|
|
|
U_TAMIL, "Tamil" },
|
|
|
|
|
{ 0x0C00, 0x0C7F,
|
|
|
|
|
U_TELUGU, "Telugu" },
|
|
|
|
|
{ 0x0C80, 0x0CFF,
|
|
|
|
|
U_KANNADA, "Kannada" },
|
|
|
|
|
{ 0x0D00, 0x0D7F,
|
|
|
|
|
U_MALAYALAM, "Malayalam" },
|
|
|
|
|
{ 0x0E00, 0x0E7F,
|
|
|
|
|
U_THAI, "Thai" },
|
|
|
|
|
{ 0x0E80, 0x0EFF,
|
|
|
|
|
U_LAO, "Lao" },
|
|
|
|
|
{ 0x10A0, 0x10CF,
|
|
|
|
|
U_GEORGIAN_EXTENDED, "Georgian Extended" },
|
|
|
|
|
{ 0x10D0, 0x10FF,
|
|
|
|
|
U_BASIC_GEORGIAN, "Basic Georgian" },
|
|
|
|
|
{ 0x1100, 0x11FF,
|
|
|
|
|
U_HANGUL_JAMO, "Hangul Jamo" },
|
|
|
|
|
{ 0x1E00, 0x1EFF,
|
|
|
|
|
U_LATIN_EXTENDED_ADDITIONAL, "Latin Extended Additional" },
|
|
|
|
|
{ 0x1F00, 0x1FFF,
|
|
|
|
|
U_GREEK_EXTENDED, "Greek Extended" },
|
|
|
|
|
{ 0x2000, 0x206F,
|
|
|
|
|
U_GENERAL_PUNCTUATION, "General Punctuation" },
|
|
|
|
|
{ 0x2070, 0x209F,
|
|
|
|
|
U_SUPERSCRIPTS_AND_SUBSCRIPTS, "Superscripts and Subscripts" },
|
|
|
|
|
{ 0x20A0, 0x20CF,
|
|
|
|
|
U_CURRENCY_SYMBOLS, "Currency Symbols" },
|
|
|
|
|
{ 0x20D0, 0x20FF,
|
|
|
|
|
U_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS, "Combining Diacritical Marks for Symbols" },
|
|
|
|
|
{ 0x2100, 0x214F,
|
|
|
|
|
U_LETTERLIKE_SYMBOLS, "Letterlike Symbols" },
|
|
|
|
|
{ 0x2150, 0x218F,
|
|
|
|
|
U_NUMBER_FORMS, "Number Forms" },
|
|
|
|
|
{ 0x2190, 0x21FF,
|
|
|
|
|
U_ARROWS, "Arrows" },
|
|
|
|
|
{ 0x2200, 0x22FF,
|
|
|
|
|
U_MATHEMATICAL_OPERATORS, "Mathematical Operators" },
|
|
|
|
|
{ 0x2300, 0x23FF,
|
|
|
|
|
U_MISCELLANEOUS_TECHNICAL, "Miscellaneous Technical" },
|
|
|
|
|
{ 0x2400, 0x243F,
|
|
|
|
|
U_CONTROL_PICTURES, "Control Pictures" },
|
|
|
|
|
{ 0x2440, 0x245F,
|
|
|
|
|
U_OPTICAL_CHARACTER_RECOGNITION, "Optical Character Recognition" },
|
|
|
|
|
{ 0x2460, 0x24FF,
|
|
|
|
|
U_ENCLOSED_ALPHANUMERICS, "Enclosed Alphanumerics" },
|
|
|
|
|
{ 0x2500, 0x257F,
|
|
|
|
|
U_BOX_DRAWING, "Box Drawing" },
|
|
|
|
|
{ 0x2580, 0x259F,
|
|
|
|
|
U_BLOCK_ELEMENTS, "Block Elements" },
|
|
|
|
|
{ 0x25A0, 0x25FF,
|
|
|
|
|
U_GEOMETRIC_SHAPES, "Geometric Shapes" },
|
|
|
|
|
{ 0x2600, 0x26FF,
|
|
|
|
|
U_MISCELLANEOUS_SYMBOLS, "Miscellaneous Symbols" },
|
|
|
|
|
{ 0x2700, 0x27BF,
|
|
|
|
|
U_DINGBATS, "Dingbats" },
|
|
|
|
|
{ 0x3000, 0x303F,
|
|
|
|
|
U_CJK_SYMBOLS_AND_PUNCTUATION, "CJK Symbols and Punctuation" },
|
|
|
|
|
{ 0x3040, 0x309F,
|
|
|
|
|
U_HIRAGANA, "Hiragana" },
|
|
|
|
|
{ 0x30A0, 0x30FF,
|
|
|
|
|
U_KATAKANA, "Katakana" },
|
|
|
|
|
{ 0x3100, 0x312F,
|
|
|
|
|
U_BOPOMOFO, "Bopomofo" },
|
|
|
|
|
{ 0x3130, 0x318F,
|
|
|
|
|
U_HANGUL_COMPATIBILITY_JAMO, "Hangul Compatibility Jamo" },
|
|
|
|
|
{ 0x3190, 0x319F,
|
|
|
|
|
U_CJK_MISCELLANEOUS, "CJK Miscellaneous" },
|
|
|
|
|
{ 0x3200, 0x32FF,
|
|
|
|
|
U_ENCLOSED_CJK, "Enclosed CJK" },
|
|
|
|
|
{ 0x3300, 0x33FF,
|
|
|
|
|
U_CJK_COMPATIBILITY, "CJK Compatibility" },
|
|
|
|
|
{ 0x3400, 0x3D2D,
|
|
|
|
|
U_HANGUL, "Hangul" },
|
|
|
|
|
{ 0x3D2E, 0x44B7,
|
|
|
|
|
U_HANGUL_SUPPLEMENTARY_A, "Hangul Supplementary-A" },
|
|
|
|
|
{ 0x44B8, 0x4DFF,
|
|
|
|
|
U_HANGUL_SUPPLEMENTARY_B, "Hangul Supplementary-B" },
|
|
|
|
|
{ 0x4E00, 0x9FFF,
|
|
|
|
|
U_CJK_UNIFIED_IDEOGRAPHS, "CJK Unified Ideographs" },
|
|
|
|
|
{ 0xE000, 0xF8FF,
|
|
|
|
|
U_PRIVATE_USE_AREA, "Private Use Area" },
|
|
|
|
|
{ 0xF900, 0xFAFF,
|
|
|
|
|
U_CJK_COMPATIBILITY_IDEOGRAPHS, "CJK Compatibility Ideographs" },
|
|
|
|
|
{ 0xFB00, 0xFB4F,
|
|
|
|
|
U_ALPHABETIC_PRESENTATION_FORMS, "Alphabetic Presentation Forms" },
|
|
|
|
|
{ 0xFB50, 0xFDFF,
|
|
|
|
|
U_ARABIC_PRESENTATION_FORMS_A, "Arabic Presentation Forms-A" },
|
|
|
|
|
{ 0xFE20, 0xFE2F,
|
|
|
|
|
U_COMBINING_HALF_MARKS, "Combining Half Marks" },
|
|
|
|
|
{ 0xFE30, 0xFE4F,
|
|
|
|
|
U_CJK_COMPATIBILITY_FORMS, "CJK Compatibility Forms" },
|
|
|
|
|
{ 0xFE50, 0xFE6F,
|
|
|
|
|
U_SMALL_FORM_VARIANTS, "Small Form Variants" },
|
|
|
|
|
{ 0xFE70, 0xFEFE,
|
|
|
|
|
U_ARABIC_PRESENTATION_FORMS_B, "Arabic Presentation Forms-B" },
|
|
|
|
|
{ 0xFEFF, 0xFEFF,
|
|
|
|
|
U_SPECIALS, "Specials" },
|
|
|
|
|
{ 0xFF00, 0xFFEF,
|
|
|
|
|
U_HALFWIDTH_AND_FULLWIDTH_FORMS, "Halfwidth and Fullwidth Forms" },
|
|
|
|
|
{ 0xFFF0, 0xFFFD,
|
|
|
|
|
U_SPECIALS, "Specials" }
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
@@ -541,9 +687,426 @@ print_unicode_subranges (FONTSIGNATURE *fsp)
|
|
|
|
|
need_comma = TRUE;
|
|
|
|
|
checked[i] = TRUE;
|
|
|
|
|
}
|
|
|
|
|
if (!need_comma)
|
|
|
|
|
g_print (" none!");
|
|
|
|
|
g_print ("\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
|
check_unicode_subranges (UINT charset,
|
|
|
|
|
FONTSIGNATURE *fsp)
|
|
|
|
|
{
|
|
|
|
|
gboolean retval = FALSE;
|
|
|
|
|
|
|
|
|
|
/* If the fsUsb bit array has some bits set, trust it */
|
|
|
|
|
if (fsp->fsUsb[0] || fsp->fsUsb[1] || fsp->fsUsb[2] || fsp->fsUsb[3])
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
/* Otherwise, guess what subranges there should be in the font */
|
|
|
|
|
fsp->fsUsb[0] = fsp->fsUsb[1] = fsp->fsUsb[2] = fsp->fsUsb[3] = 0;
|
|
|
|
|
|
|
|
|
|
#define set_bit(bitno) (fsp->fsUsb[(bitno)/32] |= (1 << ((bitno) % 32)))
|
|
|
|
|
|
|
|
|
|
#if 1
|
|
|
|
|
/* Set Unicode subrange bits based on code pages supported.
|
|
|
|
|
* This is mostly just guesswork.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#define check_cp(bit) (fsp->fsCsb[0] & (bit))
|
|
|
|
|
|
|
|
|
|
if (check_cp(FS_LATIN1))
|
|
|
|
|
{
|
|
|
|
|
set_bit (U_BASIC_LATIN);
|
|
|
|
|
set_bit (U_LATIN_1_SUPPLEMENT);
|
|
|
|
|
set_bit (U_CURRENCY_SYMBOLS);
|
|
|
|
|
retval = TRUE;
|
|
|
|
|
}
|
|
|
|
|
if (check_cp (FS_LATIN2))
|
|
|
|
|
{
|
|
|
|
|
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_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_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;
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
/* Guess based on charset. 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_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;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#undef set_bit
|
|
|
|
|
return retval;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GdkWin32SingleFont*
|
|
|
|
|
gdk_font_load_internal (const gchar *font_name)
|
|
|
|
|
{
|
|
|
|
|
@@ -555,6 +1118,7 @@ gdk_font_load_internal (const gchar *font_name)
|
|
|
|
|
fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily;
|
|
|
|
|
HGDIOBJ oldfont;
|
|
|
|
|
const char *lpszFace;
|
|
|
|
|
gchar face[100];
|
|
|
|
|
|
|
|
|
|
int numfields, n1, n2, tries;
|
|
|
|
|
char foundry[32], family[100], weight[32], slant[32], set_width[32],
|
|
|
|
|
@@ -852,20 +1416,27 @@ gdk_font_load_internal (const gchar *font_name)
|
|
|
|
|
singlefont = g_new (GdkWin32SingleFont, 1);
|
|
|
|
|
singlefont->xfont = hfont;
|
|
|
|
|
GetObject (singlefont->xfont, sizeof (logfont), &logfont);
|
|
|
|
|
if (TranslateCharsetInfo ((DWORD *) singlefont->charset, &csi,
|
|
|
|
|
TCI_SRCCHARSET))
|
|
|
|
|
singlefont->codepage = csi.ciACP;
|
|
|
|
|
else
|
|
|
|
|
singlefont->codepage = 0;
|
|
|
|
|
oldfont = SelectObject (gdk_DC, singlefont->xfont);
|
|
|
|
|
memset (&singlefont->fs, 0, sizeof (singlefont->fs));
|
|
|
|
|
singlefont->charset = GetTextCharsetInfo (gdk_DC, &singlefont->fs, 0);
|
|
|
|
|
if (singlefont->charset == SYMBOL_CHARSET)
|
|
|
|
|
{
|
|
|
|
|
/* SYMBOL_CHARSET is single-byte, so let's pretend it's ASCII+Latin-1 */
|
|
|
|
|
singlefont->fs.fsUsb[0] = (1 << 0) | (1 << 1);
|
|
|
|
|
}
|
|
|
|
|
GetTextFace (gdk_DC, sizeof (face), face);
|
|
|
|
|
SelectObject (gdk_DC, oldfont);
|
|
|
|
|
if (TranslateCharsetInfo ((DWORD *) singlefont->charset, &csi,
|
|
|
|
|
TCI_SRCCHARSET)
|
|
|
|
|
&& singlefont->charset != MAC_CHARSET)
|
|
|
|
|
singlefont->codepage = csi.ciACP;
|
|
|
|
|
else
|
|
|
|
|
singlefont->codepage = 0;
|
|
|
|
|
|
|
|
|
|
GDK_NOTE (MISC, (g_print ("... = %#x %s cs %s cp%d ",
|
|
|
|
|
singlefont->xfont, face,
|
|
|
|
|
charset_name (singlefont->charset),
|
|
|
|
|
singlefont->codepage),
|
|
|
|
|
g_print ("... Unicode subranges:"),
|
|
|
|
|
print_unicode_subranges (&singlefont->fs)));
|
|
|
|
|
if (check_unicode_subranges (singlefont->charset, &singlefont->fs))
|
|
|
|
|
GDK_NOTE (MISC, (g_print ("... Guesstimated Unicode subranges:"),
|
|
|
|
|
print_unicode_subranges (&singlefont->fs)));
|
|
|
|
|
|
|
|
|
|
return singlefont;
|
|
|
|
|
}
|
|
|
|
|
@@ -906,14 +1477,8 @@ gdk_font_load (const gchar *font_name)
|
|
|
|
|
font->ascent = textmetric.tmAscent;
|
|
|
|
|
font->descent = textmetric.tmDescent;
|
|
|
|
|
|
|
|
|
|
GDK_NOTE (MISC, (g_print ("... = %#x charset %s cp%d "
|
|
|
|
|
"asc %d desc %d\n",
|
|
|
|
|
singlefont->xfont,
|
|
|
|
|
charset_name (singlefont->charset),
|
|
|
|
|
singlefont->codepage,
|
|
|
|
|
font->ascent, font->descent),
|
|
|
|
|
g_print ("... Unicode subranges:"),
|
|
|
|
|
print_unicode_subranges (&singlefont->fs)));
|
|
|
|
|
GDK_NOTE (MISC, g_print ("... asc %d desc %d\n",
|
|
|
|
|
font->ascent, font->descent));
|
|
|
|
|
|
|
|
|
|
gdk_font_hash_insert (GDK_FONT_FONTSET, font, font_name);
|
|
|
|
|
|
|
|
|
|
@@ -969,13 +1534,6 @@ gdk_fontset_load (gchar *fontset_name)
|
|
|
|
|
singlefont = gdk_font_load_internal (s);
|
|
|
|
|
if (singlefont)
|
|
|
|
|
{
|
|
|
|
|
GDK_NOTE
|
|
|
|
|
(MISC, (g_print ("... = %#x charset %s cp%d\n",
|
|
|
|
|
singlefont->xfont,
|
|
|
|
|
charset_name (singlefont->charset),
|
|
|
|
|
singlefont->codepage),
|
|
|
|
|
g_print (" ... Unicode subranges:"),
|
|
|
|
|
print_unicode_subranges (&singlefont->fs)));
|
|
|
|
|
private->fonts = g_slist_append (private->fonts, singlefont);
|
|
|
|
|
oldfont = SelectObject (gdk_DC, singlefont->xfont);
|
|
|
|
|
GetTextMetrics (gdk_DC, &textmetric);
|
|
|
|
|
|