Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static BOOL sortkey_get_extra_weights(struct sortkey_data* data, int flags, WCHAR c)
- {
- struct character_info info;
- if (!sortkey_get_char(data, &info, c))
- {
- return FALSE;
- }
- if (info.script_member == SORTKEY_JAPANESE)
- {
- if (info.weight_primary <= 1)
- {
- /* TODO */
- }
- else
- {
- const BYTE BASELINE_EXTRA = 0xc4;
- const BYTE ISOLATE_KANA = 0x20 | BASELINE_EXTRA; /* if bit is set then hiragana, else katakana */
- const BYTE ISOLATE_SMALL = 0x2 | BASELINE_EXTRA; /* if bit is set then normal kana, else small kana */
- const BYTE ISOLATE_WIDTH = 0x1 | BASELINE_EXTRA; /* if bit is set then full width, else half width */
- int weight_case = info.weight_case | BASELINE_EXTRA;
- BYTE flag_small = (BYTE)(weight_case & ISOLATE_SMALL);
- BYTE flag_kana = (BYTE)(weight_case & ISOLATE_KANA);
- BYTE flag_width = (BYTE)(weight_case & ISOLATE_WIDTH);
- if (flags & NORM_IGNOREKANATYPE)
- flag_kana = BASELINE_EXTRA;
- if (flags & NORM_IGNOREWIDTH)
- flag_width = BASELINE_EXTRA;
- if ((NORM_IGNORENONSPACE & flags) == 0)
- {
- sortkey_add_weight(data, flag_small);
- }
- sortkey_add_weight(data, flag_kana);
- sortkey_add_weight(data, flag_width);
- }
- }
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment