From 5469607a00d84a07dc638eda46a87fc90142d64b Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Thu, 8 Apr 2010 18:48:12 +0000 Subject: add git-svn-id: http://skia.googlecode.com/svn/trunk@536 2bbb7eff-a529-9590-31e7-b0007b416f81 --- .../harfbuzz/contrib/harfbuzz-unicode-glib.c | 169 +++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 third_party/harfbuzz/contrib/harfbuzz-unicode-glib.c (limited to 'third_party/harfbuzz/contrib/harfbuzz-unicode-glib.c') diff --git a/third_party/harfbuzz/contrib/harfbuzz-unicode-glib.c b/third_party/harfbuzz/contrib/harfbuzz-unicode-glib.c new file mode 100644 index 0000000000..6a13433fea --- /dev/null +++ b/third_party/harfbuzz/contrib/harfbuzz-unicode-glib.c @@ -0,0 +1,169 @@ +#include "harfbuzz-external.h" + +#include + +static int +hb_category_for_char(HB_UChar32 ch) { + switch (g_unichar_type(ch)) { + case G_UNICODE_CONTROL: + return HB_Other_Control; + case G_UNICODE_FORMAT: + return HB_Other_Format; + case G_UNICODE_UNASSIGNED: + return HB_Other_NotAssigned; + case G_UNICODE_PRIVATE_USE: + return HB_Other_PrivateUse; + case G_UNICODE_SURROGATE: + return HB_Other_Surrogate; + case G_UNICODE_LOWERCASE_LETTER: + return HB_Letter_Lowercase; + case G_UNICODE_MODIFIER_LETTER: + return HB_Letter_Modifier; + case G_UNICODE_OTHER_LETTER: + return HB_Letter_Other; + case G_UNICODE_TITLECASE_LETTER: + return HB_Letter_Titlecase; + case G_UNICODE_UPPERCASE_LETTER: + return HB_Letter_Uppercase; + case G_UNICODE_COMBINING_MARK: + return HB_Mark_SpacingCombining; + case G_UNICODE_ENCLOSING_MARK: + return HB_Mark_Enclosing; + case G_UNICODE_NON_SPACING_MARK: + return HB_Mark_NonSpacing; + case G_UNICODE_DECIMAL_NUMBER: + return HB_Number_DecimalDigit; + case G_UNICODE_LETTER_NUMBER: + return HB_Number_Letter; + case G_UNICODE_OTHER_NUMBER: + return HB_Number_Other; + case G_UNICODE_CONNECT_PUNCTUATION: + return HB_Punctuation_Connector; + case G_UNICODE_DASH_PUNCTUATION: + return HB_Punctuation_Dash; + case G_UNICODE_CLOSE_PUNCTUATION: + return HB_Punctuation_Close; + case G_UNICODE_FINAL_PUNCTUATION: + return HB_Punctuation_FinalQuote; + case G_UNICODE_INITIAL_PUNCTUATION: + return HB_Punctuation_InitialQuote; + case G_UNICODE_OTHER_PUNCTUATION: + return HB_Punctuation_Other; + case G_UNICODE_OPEN_PUNCTUATION: + return HB_Punctuation_Open; + case G_UNICODE_CURRENCY_SYMBOL: + return HB_Symbol_Currency; + case G_UNICODE_MODIFIER_SYMBOL: + return HB_Symbol_Modifier; + case G_UNICODE_MATH_SYMBOL: + return HB_Symbol_Math; + case G_UNICODE_OTHER_SYMBOL: + return HB_Symbol_Other; + case G_UNICODE_LINE_SEPARATOR: + return HB_Separator_Line; + case G_UNICODE_PARAGRAPH_SEPARATOR: + return HB_Separator_Paragraph; + case G_UNICODE_SPACE_SEPARATOR: + return HB_Separator_Space; + default: + return HB_Symbol_Other; + } +} + +HB_LineBreakClass +HB_GetLineBreakClass(HB_UChar32 ch) { + switch (g_unichar_break_type(ch)) { + case G_UNICODE_BREAK_MANDATORY: + return HB_LineBreak_BK; + case G_UNICODE_BREAK_CARRIAGE_RETURN: + return HB_LineBreak_CR; + case G_UNICODE_BREAK_LINE_FEED: + return HB_LineBreak_LF; + case G_UNICODE_BREAK_COMBINING_MARK: + return HB_LineBreak_CM; + case G_UNICODE_BREAK_SURROGATE: + return HB_LineBreak_SG; + case G_UNICODE_BREAK_ZERO_WIDTH_SPACE: + return HB_LineBreak_ZW; + case G_UNICODE_BREAK_INSEPARABLE: + return HB_LineBreak_IN; + case G_UNICODE_BREAK_NON_BREAKING_GLUE: + return HB_LineBreak_GL; + case G_UNICODE_BREAK_CONTINGENT: + return HB_LineBreak_AL; + case G_UNICODE_BREAK_SPACE: + return HB_LineBreak_SP; + case G_UNICODE_BREAK_AFTER: + return HB_LineBreak_BA; + case G_UNICODE_BREAK_BEFORE: + return HB_LineBreak_BB; + case G_UNICODE_BREAK_BEFORE_AND_AFTER: + return HB_LineBreak_B2; + case G_UNICODE_BREAK_HYPHEN: + return HB_LineBreak_HY; + case G_UNICODE_BREAK_NON_STARTER: + return HB_LineBreak_NS; + case G_UNICODE_BREAK_OPEN_PUNCTUATION: + return HB_LineBreak_OP; + case G_UNICODE_BREAK_CLOSE_PUNCTUATION: + return HB_LineBreak_CL; + case G_UNICODE_BREAK_QUOTATION: + return HB_LineBreak_QU; + case G_UNICODE_BREAK_EXCLAMATION: + return HB_LineBreak_EX; + case G_UNICODE_BREAK_IDEOGRAPHIC: + return HB_LineBreak_ID; + case G_UNICODE_BREAK_NUMERIC: + return HB_LineBreak_NU; + case G_UNICODE_BREAK_INFIX_SEPARATOR: + return HB_LineBreak_IS; + case G_UNICODE_BREAK_SYMBOL: + return HB_LineBreak_SY; + case G_UNICODE_BREAK_ALPHABETIC: + return HB_LineBreak_AL; + case G_UNICODE_BREAK_PREFIX: + return HB_LineBreak_PR; + case G_UNICODE_BREAK_POSTFIX: + return HB_LineBreak_PO; + case G_UNICODE_BREAK_COMPLEX_CONTEXT: + return HB_LineBreak_SA; + case G_UNICODE_BREAK_AMBIGUOUS: + return HB_LineBreak_AL; + case G_UNICODE_BREAK_UNKNOWN: + return HB_LineBreak_AL; + case G_UNICODE_BREAK_NEXT_LINE: + return HB_LineBreak_AL; + case G_UNICODE_BREAK_WORD_JOINER: + return HB_LineBreak_WJ; + case G_UNICODE_BREAK_HANGUL_L_JAMO: + return HB_LineBreak_JL; + case G_UNICODE_BREAK_HANGUL_V_JAMO: + return HB_LineBreak_JV; + case G_UNICODE_BREAK_HANGUL_T_JAMO: + return HB_LineBreak_JT; + case G_UNICODE_BREAK_HANGUL_LV_SYLLABLE: + return HB_LineBreak_H2; + case G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE: + return HB_LineBreak_H3; + default: + return HB_LineBreak_AL; + } +} + +int +HB_GetUnicodeCharCombiningClass(HB_UChar32 ch) { + return g_unichar_combining_class(ch); +} + +void +HB_GetUnicodeCharProperties(HB_UChar32 ch, + HB_CharCategory *category, + int *combiningClass) { + *category = hb_category_for_char(ch); + *combiningClass = g_unichar_combining_class(ch); +} + +HB_CharCategory +HB_GetUnicodeCharCategory(HB_UChar32 ch) { + return hb_category_for_char(ch); +} -- cgit v1.2.3