Skip to content

Instantly share code, notes, and snippets.

@dohyunkim
Last active June 11, 2019 00:36
Show Gist options
  • Select an option

  • Save dohyunkim/85f0a548368239021fe43d2da9492135 to your computer and use it in GitHub Desktop.

Select an option

Save dohyunkim/85f0a548368239021fe43d2da9492135 to your computer and use it in GitHub Desktop.
--[[
-- xindex-ko.lua
-- written by Dohyun Kim
-- license: LPPL
-- reference: KS X 1026-1:2007
--
-- usage: xindex -c ko -l ko file.idx
--
-- todo: hanja (?)
--]]
local jamo_sort_order = {
[0x1100] = { 0x1100, 0 },
[0x1101] = { 0x1100, 1 },
[0x1102] = { 0x1102, 0 },
[0x1103] = { 0x1103, 0 },
[0x1104] = { 0x1103, 2 },
[0x1105] = { 0x1105, 0 },
[0x1106] = { 0x1106, 0 },
[0x1107] = { 0x1107, 0 },
[0x1108] = { 0x1107, 7 },
[0x1109] = { 0x1109, 0 },
[0x110A] = { 0x1109, 9 },
[0x110B] = { 0x110B, 0 },
[0x110C] = { 0x110C, 0 },
[0x110D] = { 0x110C, 4 },
[0x110E] = { 0x110E, 0 },
[0x110F] = { 0x110F, 0 },
[0x1110] = { 0x1110, 0 },
[0x1111] = { 0x1111, 0 },
[0x1112] = { 0x1112, 0 },
[0x1113] = { 0x1102, 1 },
[0x1114] = { 0x1102, 2 },
[0x1115] = { 0x1102, 3 },
[0x1116] = { 0x1102, 5 },
[0x1117] = { 0x1103, 1 },
[0x1118] = { 0x1105, 5 },
[0x1119] = { 0x1105, 9 },
[0x111A] = { 0x1105, 30 },
[0x111B] = { 0x1105, 33 },
[0x111C] = { 0x1106, 7 },
[0x111D] = { 0x1106, 15 },
[0x111E] = { 0x1107, 1 },
[0x111F] = { 0x1107, 2 },
[0x1120] = { 0x1107, 3 },
[0x1121] = { 0x1107, 8 },
[0x1122] = { 0x1107, 9 },
[0x1123] = { 0x1107, 10 },
[0x1124] = { 0x1107, 11 },
[0x1125] = { 0x1107, 12 },
[0x1126] = { 0x1107, 13 },
[0x1127] = { 0x1107, 15 },
[0x1128] = { 0x1107, 16 },
[0x1129] = { 0x1107, 18 },
[0x112A] = { 0x1107, 19 },
[0x112B] = { 0x1107, 21 },
[0x112C] = { 0x1107, 22 },
[0x112D] = { 0x1109, 1 },
[0x112E] = { 0x1109, 2 },
[0x112F] = { 0x1109, 3 },
[0x1130] = { 0x1109, 4 },
[0x1131] = { 0x1109, 5 },
[0x1132] = { 0x1109, 6 },
[0x1133] = { 0x1109, 7 },
[0x1134] = { 0x1109, 13 },
[0x1135] = { 0x1109, 15 },
[0x1136] = { 0x1109, 16 },
[0x1137] = { 0x1109, 17 },
[0x1138] = { 0x1109, 18 },
[0x1139] = { 0x1109, 19 },
[0x113A] = { 0x1109, 20 },
[0x113B] = { 0x1109, 21 },
[0x113C] = { 0x1109, 22 },
[0x113D] = { 0x1109, 23 },
[0x113E] = { 0x1109, 24 },
[0x113F] = { 0x1109, 25 },
[0x1140] = { 0x1109, 26 },
[0x1141] = { 0x110B, 1 },
[0x1142] = { 0x110B, 2 },
[0x1143] = { 0x110B, 4 },
[0x1144] = { 0x110B, 5 },
[0x1145] = { 0x110B, 6 },
[0x1146] = { 0x110B, 7 },
[0x1147] = { 0x110B, 8 },
[0x1148] = { 0x110B, 9 },
[0x1149] = { 0x110B, 10 },
[0x114A] = { 0x110B, 11 },
[0x114B] = { 0x110B, 12 },
[0x114C] = { 0x110B, 14 },
[0x114D] = { 0x110C, 3 },
[0x114E] = { 0x110C, 6 },
[0x114F] = { 0x110C, 7 },
[0x1150] = { 0x110C, 8 },
[0x1151] = { 0x110C, 9 },
[0x1152] = { 0x110E, 1 },
[0x1153] = { 0x110E, 2 },
[0x1154] = { 0x110E, 3 },
[0x1155] = { 0x110E, 4 },
[0x1156] = { 0x1111, 1 },
[0x1157] = { 0x1111, 5 },
[0x1158] = { 0x1112, 6 },
[0x1159] = { 0x1112, 7 },
[0x115A] = { 0x1100, 3 },
[0x115B] = { 0x1102, 6 },
[0x115C] = { 0x1102, 8 },
[0x115D] = { 0x1102, 11 },
[0x115E] = { 0x1103, 4 },
[0x115F] = { 0x115F, 0 },
[0x1160] = { 0x1160, 0 },
[0x1161] = { 0x1161, 0 },
[0x1162] = { 0x1161, 4 },
[0x1163] = { 0x1163, 0 },
[0x1164] = { 0x1163, 4 },
[0x1165] = { 0x1165, 0 },
[0x1166] = { 0x1165, 4 },
[0x1167] = { 0x1167, 0 },
[0x1168] = { 0x1167, 4 },
[0x1169] = { 0x1169, 0 },
[0x116A] = { 0x1169, 1 },
[0x116B] = { 0x1169, 2 },
[0x116C] = { 0x1169, 12 },
[0x116D] = { 0x116D, 0 },
[0x116E] = { 0x116E, 0 },
[0x116F] = { 0x116E, 3 },
[0x1170] = { 0x116E, 5 },
[0x1171] = { 0x116E, 9 },
[0x1172] = { 0x1172, 0 },
[0x1173] = { 0x1173, 0 },
[0x1174] = { 0x1173, 7 },
[0x1175] = { 0x1175, 0 },
[0x1176] = { 0x1161, 1 },
[0x1177] = { 0x1161, 2 },
[0x1178] = { 0x1163, 1 },
[0x1179] = { 0x1163, 2 },
[0x117A] = { 0x1165, 1 },
[0x117B] = { 0x1165, 2 },
[0x117C] = { 0x1165, 3 },
[0x117D] = { 0x1167, 2 },
[0x117E] = { 0x1167, 3 },
[0x117F] = { 0x1169, 5 },
[0x1180] = { 0x1169, 6 },
[0x1181] = { 0x1169, 8 },
[0x1182] = { 0x1169, 9 },
[0x1183] = { 0x1169, 11 },
[0x1184] = { 0x116D, 3 },
[0x1185] = { 0x116D, 4 },
[0x1186] = { 0x116D, 6 },
[0x1187] = { 0x116D, 7 },
[0x1188] = { 0x116D, 8 },
[0x1189] = { 0x116E, 1 },
[0x118A] = { 0x116E, 2 },
[0x118B] = { 0x116E, 4 },
[0x118C] = { 0x116E, 7 },
[0x118D] = { 0x116E, 8 },
[0x118E] = { 0x1172, 1 },
[0x118F] = { 0x1172, 3 },
[0x1190] = { 0x1172, 4 },
[0x1191] = { 0x1172, 5 },
[0x1192] = { 0x1172, 6 },
[0x1193] = { 0x1172, 8 },
[0x1194] = { 0x1172, 9 },
[0x1195] = { 0x1173, 5 },
[0x1196] = { 0x1173, 6 },
[0x1197] = { 0x1173, 8 },
[0x1198] = { 0x1175, 1 },
[0x1199] = { 0x1175, 2 },
[0x119A] = { 0x1175, 7 },
[0x119B] = { 0x1175, 10 },
[0x119C] = { 0x1175, 12 },
[0x119D] = { 0x1175, 14 },
[0x119E] = { 0x119E, 0 },
[0x119F] = { 0x119E, 2 },
[0x11A0] = { 0x119E, 4 },
[0x11A1] = { 0x119E, 5 },
[0x11A2] = { 0x119E, 6 },
[0x11A3] = { 0x1161, 3 },
[0x11A4] = { 0x1163, 3 },
[0x11A5] = { 0x1167, 1 },
[0x11A6] = { 0x1169, 3 },
[0x11A7] = { 0x1169, 4 },
[0x11A8] = { 0x1100, 0 },
[0x11A9] = { 0x1100, 1 },
[0x11AA] = { 0x1100, 6 },
[0x11AB] = { 0x1102, 0 },
[0x11AC] = { 0x1102, 8 },
[0x11AD] = { 0x1102, 11 },
[0x11AE] = { 0x1103, 0 },
[0x11AF] = { 0x1105, 0 },
[0x11B0] = { 0x1105, 1 },
[0x11B1] = { 0x1105, 11 },
[0x11B2] = { 0x1105, 15 },
[0x11B3] = { 0x1105, 22 },
[0x11B4] = { 0x1105, 28 },
[0x11B5] = { 0x1105, 29 },
[0x11B6] = { 0x1105, 30 },
[0x11B7] = { 0x1106, 0 },
[0x11B8] = { 0x1107, 0 },
[0x11B9] = { 0x1107, 8 },
[0x11BA] = { 0x1109, 0 },
[0x11BB] = { 0x1109, 9 },
[0x11BC] = { 0x110B, 0 },
[0x11BD] = { 0x110C, 0 },
[0x11BE] = { 0x110E, 0 },
[0x11BF] = { 0x110F, 0 },
[0x11C0] = { 0x1110, 0 },
[0x11C1] = { 0x1111, 0 },
[0x11C2] = { 0x1112, 0 },
[0x11C3] = { 0x1100, 4 },
[0x11C4] = { 0x1100, 7 },
[0x11C5] = { 0x1102, 1 },
[0x11C6] = { 0x1102, 3 },
[0x11C7] = { 0x1102, 6 },
[0x11C8] = { 0x1102, 7 },
[0x11C9] = { 0x1102, 10 },
[0x11CA] = { 0x1103, 1 },
[0x11CB] = { 0x1103, 4 },
[0x11CC] = { 0x1105, 3 },
[0x11CD] = { 0x1105, 5 },
[0x11CE] = { 0x1105, 6 },
[0x11CF] = { 0x1105, 8 },
[0x11D0] = { 0x1105, 9 },
[0x11D1] = { 0x1105, 12 },
[0x11D2] = { 0x1105, 13 },
[0x11D3] = { 0x1105, 18 },
[0x11D4] = { 0x1105, 20 },
[0x11D5] = { 0x1105, 21 },
[0x11D6] = { 0x1105, 23 },
[0x11D7] = { 0x1105, 24 },
[0x11D8] = { 0x1105, 27 },
[0x11D9] = { 0x1105, 31 },
[0x11DA] = { 0x1106, 1 },
[0x11DB] = { 0x1106, 5 },
[0x11DC] = { 0x1106, 7 },
[0x11DD] = { 0x1106, 9 },
[0x11DE] = { 0x1106, 10 },
[0x11DF] = { 0x1106, 11 },
[0x11E0] = { 0x1106, 13 },
[0x11E1] = { 0x1106, 14 },
[0x11E2] = { 0x1106, 15 },
[0x11E3] = { 0x1107, 4 },
[0x11E4] = { 0x1107, 19 },
[0x11E5] = { 0x1107, 20 },
[0x11E6] = { 0x1107, 21 },
[0x11E7] = { 0x1109, 1 },
[0x11E8] = { 0x1109, 3 },
[0x11E9] = { 0x1109, 4 },
[0x11EA] = { 0x1109, 6 },
[0x11EB] = { 0x1109, 26 },
[0x11EC] = { 0x110B, 15 },
[0x11ED] = { 0x110B, 16 },
[0x11EE] = { 0x110B, 20 },
[0x11EF] = { 0x110B, 21 },
[0x11F0] = { 0x110B, 14 },
[0x11F1] = { 0x110B, 18 },
[0x11F2] = { 0x110B, 19 },
[0x11F3] = { 0x1111, 1 },
[0x11F4] = { 0x1111, 5 },
[0x11F5] = { 0x1112, 1 },
[0x11F6] = { 0x1112, 2 },
[0x11F7] = { 0x1112, 3 },
[0x11F8] = { 0x1112, 4 },
[0x11F9] = { 0x1112, 7 },
[0x11FA] = { 0x1100, 2 },
[0x11FB] = { 0x1100, 5 },
[0x11FC] = { 0x1100, 8 },
[0x11FD] = { 0x1100, 9 },
[0x11FE] = { 0x1100, 10 },
[0x11FF] = { 0x1102, 2 },
[0x3131] = { 0x1100, 0, 0x1160, 0, 4, 4 },
[0x3132] = { 0x1100, 1, 0x1160, 0, 4, 4 },
[0x3133] = { 0x1100, 6, 0x1160, 0, 4, 4 },
[0x3134] = { 0x1102, 0, 0x1160, 0, 4, 4 },
[0x3135] = { 0x1102, 8, 0x1160, 0, 4, 4 },
[0x3136] = { 0x1102, 11, 0x1160, 0, 4, 4 },
[0x3137] = { 0x1103, 0, 0x1160, 0, 4, 4 },
[0x3138] = { 0x1103, 2, 0x1160, 0, 4, 4 },
[0x3139] = { 0x1105, 0, 0x1160, 0, 4, 4 },
[0x313A] = { 0x1105, 1, 0x1160, 0, 4, 4 },
[0x313B] = { 0x1105, 11, 0x1160, 0, 4, 4 },
[0x313C] = { 0x1105, 15, 0x1160, 0, 4, 4 },
[0x313D] = { 0x1105, 22, 0x1160, 0, 4, 4 },
[0x313E] = { 0x1105, 28, 0x1160, 0, 4, 4 },
[0x313F] = { 0x1105, 29, 0x1160, 0, 4, 4 },
[0x3140] = { 0x1105, 30, 0x1160, 0, 4, 4 },
[0x3141] = { 0x1106, 0, 0x1160, 0, 4, 4 },
[0x3142] = { 0x1107, 0, 0x1160, 0, 4, 4 },
[0x3143] = { 0x1107, 7, 0x1160, 0, 4, 4 },
[0x3144] = { 0x1107, 8, 0x1160, 0, 4, 4 },
[0x3145] = { 0x1109, 0, 0x1160, 0, 4, 4 },
[0x3146] = { 0x1109, 9, 0x1160, 0, 4, 4 },
[0x3147] = { 0x110B, 0, 0x1160, 0, 4, 4 },
[0x3148] = { 0x110C, 0, 0x1160, 0, 4, 4 },
[0x3149] = { 0x110C, 4, 0x1160, 0, 4, 4 },
[0x314A] = { 0x110E, 0, 0x1160, 0, 4, 4 },
[0x314B] = { 0x110F, 0, 0x1160, 0, 4, 4 },
[0x314C] = { 0x1110, 0, 0x1160, 0, 4, 4 },
[0x314D] = { 0x1111, 0, 0x1160, 0, 4, 4 },
[0x314E] = { 0x1112, 0, 0x1160, 0, 4, 4 },
[0x314F] = { 0x115F, 0, 0x1161, 0, 4, 4 },
[0x3150] = { 0x115F, 0, 0x1161, 4, 4, 4 },
[0x3151] = { 0x115F, 0, 0x1163, 0, 4, 4 },
[0x3152] = { 0x115F, 0, 0x1163, 4, 4, 4 },
[0x3153] = { 0x115F, 0, 0x1165, 0, 4, 4 },
[0x3154] = { 0x115F, 0, 0x1165, 4, 4, 4 },
[0x3155] = { 0x115F, 0, 0x1167, 0, 4, 4 },
[0x3156] = { 0x115F, 0, 0x1167, 4, 4, 4 },
[0x3157] = { 0x115F, 0, 0x1169, 0, 4, 4 },
[0x3158] = { 0x115F, 0, 0x1169, 1, 4, 4 },
[0x3159] = { 0x115F, 0, 0x1169, 2, 4, 4 },
[0x315A] = { 0x115F, 0, 0x1169, 12, 4, 4 },
[0x315B] = { 0x115F, 0, 0x116D, 0, 4, 4 },
[0x315C] = { 0x115F, 0, 0x116E, 0, 4, 4 },
[0x315D] = { 0x115F, 0, 0x116E, 3, 4, 4 },
[0x315E] = { 0x115F, 0, 0x116E, 5, 4, 4 },
[0x315F] = { 0x115F, 0, 0x116E, 9, 4, 4 },
[0x3160] = { 0x115F, 0, 0x1172, 0, 4, 4 },
[0x3161] = { 0x115F, 0, 0x1173, 0, 4, 4 },
[0x3162] = { 0x115F, 0, 0x1173, 7, 4, 4 },
[0x3163] = { 0x115F, 0, 0x1175, 0, 4, 4 },
[0x3164] = { 0x115F, 0, 0x1160, 0, 4, 4 },
[0x3165] = { 0x1102, 2, 0x1160, 0, 4, 4 },
[0x3166] = { 0x1102, 3, 0x1160, 0, 4, 4 },
[0x3167] = { 0x1102, 6, 0x1160, 0, 4, 4 },
[0x3168] = { 0x1102, 7, 0x1160, 0, 4, 4 },
[0x3169] = { 0x1105, 3, 0x1160, 0, 4, 4 },
[0x316A] = { 0x1105, 6, 0x1160, 0, 4, 4 },
[0x316B] = { 0x1105, 18, 0x1160, 0, 4, 4 },
[0x316C] = { 0x1105, 24, 0x1160, 0, 4, 4 },
[0x316D] = { 0x1105, 31, 0x1160, 0, 4, 4 },
[0x316E] = { 0x1106, 7, 0x1160, 0, 4, 4 },
[0x316F] = { 0x1106, 9, 0x1160, 0, 4, 4 },
[0x3170] = { 0x1106, 11, 0x1160, 0, 4, 4 },
[0x3171] = { 0x1106, 15, 0x1160, 0, 4, 4 },
[0x3172] = { 0x1107, 1, 0x1160, 0, 4, 4 },
[0x3173] = { 0x1107, 3, 0x1160, 0, 4, 4 },
[0x3174] = { 0x1107, 9, 0x1160, 0, 4, 4 },
[0x3175] = { 0x1107, 10, 0x1160, 0, 4, 4 },
[0x3176] = { 0x1107, 15, 0x1160, 0, 4, 4 },
[0x3177] = { 0x1107, 18, 0x1160, 0, 4, 4 },
[0x3178] = { 0x1107, 21, 0x1160, 0, 4, 4 },
[0x3179] = { 0x1107, 22, 0x1160, 0, 4, 4 },
[0x317A] = { 0x1109, 1, 0x1160, 0, 4, 4 },
[0x317B] = { 0x1109, 2, 0x1160, 0, 4, 4 },
[0x317C] = { 0x1109, 3, 0x1160, 0, 4, 4 },
[0x317D] = { 0x1109, 6, 0x1160, 0, 4, 4 },
[0x317E] = { 0x1109, 16, 0x1160, 0, 4, 4 },
[0x317F] = { 0x1109, 26, 0x1160, 0, 4, 4 },
[0x3180] = { 0x110B, 8, 0x1160, 0, 4, 4 },
[0x3181] = { 0x110B, 14, 0x1160, 0, 4, 4 },
[0x3182] = { 0x110B, 18, 0x1160, 0, 4, 4 },
[0x3183] = { 0x110B, 19, 0x1160, 0, 4, 4 },
[0x3184] = { 0x1111, 5, 0x1160, 0, 4, 4 },
[0x3185] = { 0x1112, 6, 0x1160, 0, 4, 4 },
[0x3186] = { 0x1112, 7, 0x1160, 0, 4, 4 },
[0x3187] = { 0x115F, 0, 0x116D, 3, 4, 4 },
[0x3188] = { 0x115F, 0, 0x116D, 4, 4, 4 },
[0x3189] = { 0x115F, 0, 0x116D, 8, 4, 4 },
[0x318A] = { 0x115F, 0, 0x1172, 5, 4, 4 },
[0x318B] = { 0x115F, 0, 0x1172, 6, 4, 4 },
[0x318C] = { 0x115F, 0, 0x1172, 9, 4, 4 },
[0x318D] = { 0x115F, 0, 0x119E, 0, 4, 4 },
[0x318E] = { 0x115F, 0, 0x119E, 5, 4, 4 },
[0xA960] = { 0x1103, 5 },
[0xA961] = { 0x1103, 6 },
[0xA962] = { 0x1103, 7 },
[0xA963] = { 0x1103, 9 },
[0xA964] = { 0x1105, 1 },
[0xA965] = { 0x1105, 2 },
[0xA966] = { 0x1105, 6 },
[0xA967] = { 0x1105, 7 },
[0xA968] = { 0x1105, 11 },
[0xA969] = { 0x1105, 15 },
[0xA96A] = { 0x1105, 17 },
[0xA96B] = { 0x1105, 21 },
[0xA96C] = { 0x1105, 22 },
[0xA96D] = { 0x1105, 26 },
[0xA96E] = { 0x1105, 27 },
[0xA96F] = { 0x1106, 1 },
[0xA970] = { 0x1106, 4 },
[0xA971] = { 0x1106, 9 },
[0xA972] = { 0x1107, 14 },
[0xA973] = { 0x1107, 17 },
[0xA974] = { 0x1107, 20 },
[0xA975] = { 0x1109, 12 },
[0xA976] = { 0x110B, 3 },
[0xA977] = { 0x110B, 13 },
[0xA978] = { 0x110C, 5 },
[0xA979] = { 0x1110, 1 },
[0xA97A] = { 0x1111, 4 },
[0xA97B] = { 0x1112, 5 },
[0xA97C] = { 0x1112, 8 },
[0xD7B0] = { 0x1169, 7 },
[0xD7B1] = { 0x1169, 10 },
[0xD7B2] = { 0x116D, 1 },
[0xD7B3] = { 0x116D, 2 },
[0xD7B4] = { 0x116D, 5 },
[0xD7B5] = { 0x116E, 6 },
[0xD7B6] = { 0x116E, 10 },
[0xD7B7] = { 0x1172, 2 },
[0xD7B8] = { 0x1172, 7 },
[0xD7B9] = { 0x1173, 1 },
[0xD7BA] = { 0x1173, 2 },
[0xD7BB] = { 0x1173, 3 },
[0xD7BC] = { 0x1173, 4 },
[0xD7BD] = { 0x1175, 3 },
[0xD7BE] = { 0x1175, 4 },
[0xD7BF] = { 0x1175, 5 },
[0xD7C0] = { 0x1175, 6 },
[0xD7C1] = { 0x1175, 8 },
[0xD7C2] = { 0x1175, 9 },
[0xD7C3] = { 0x1175, 11 },
[0xD7C4] = { 0x1175, 13 },
[0xD7C5] = { 0x119E, 1 },
[0xD7C6] = { 0x119E, 3 },
[0xD7CB] = { 0x1102, 4 },
[0xD7CC] = { 0x1102, 9 },
[0xD7CD] = { 0x1103, 2 },
[0xD7CE] = { 0x1103, 3 },
[0xD7CF] = { 0x1103, 6 },
[0xD7D0] = { 0x1103, 7 },
[0xD7D1] = { 0x1103, 8 },
[0xD7D2] = { 0x1103, 9 },
[0xD7D3] = { 0x1103, 10 },
[0xD7D4] = { 0x1103, 11 },
[0xD7D5] = { 0x1105, 2 },
[0xD7D6] = { 0x1105, 4 },
[0xD7D7] = { 0x1105, 10 },
[0xD7D8] = { 0x1105, 14 },
[0xD7D9] = { 0x1105, 16 },
[0xD7DA] = { 0x1105, 19 },
[0xD7DB] = { 0x1105, 25 },
[0xD7DC] = { 0x1105, 32 },
[0xD7DD] = { 0x1105, 33 },
[0xD7DE] = { 0x1106, 2 },
[0xD7DF] = { 0x1106, 3 },
[0xD7E0] = { 0x1106, 6 },
[0xD7E1] = { 0x1106, 8 },
[0xD7E2] = { 0x1106, 12 },
[0xD7E3] = { 0x1107, 3 },
[0xD7E4] = { 0x1107, 5 },
[0xD7E5] = { 0x1107, 6 },
[0xD7E6] = { 0x1107, 7 },
[0xD7E7] = { 0x1107, 10 },
[0xD7E8] = { 0x1107, 15 },
[0xD7E9] = { 0x1107, 16 },
[0xD7EA] = { 0x1109, 5 },
[0xD7EB] = { 0x1109, 8 },
[0xD7EC] = { 0x1109, 10 },
[0xD7ED] = { 0x1109, 11 },
[0xD7EE] = { 0x1109, 14 },
[0xD7EF] = { 0x1109, 16 },
[0xD7F0] = { 0x1109, 17 },
[0xD7F1] = { 0x1109, 19 },
[0xD7F2] = { 0x1109, 21 },
[0xD7F3] = { 0x1109, 27 },
[0xD7F4] = { 0x1109, 28 },
[0xD7F5] = { 0x110B, 17 },
[0xD7F6] = { 0x110B, 22 },
[0xD7F7] = { 0x110C, 1 },
[0xD7F8] = { 0x110C, 2 },
[0xD7F9] = { 0x110C, 4 },
[0xD7FA] = { 0x1111, 2 },
[0xD7FB] = { 0x1111, 3 },
}
local function is_hangul (c)
return c >= 0xAC00 and c <= 0xD7A3
end
local function is_jamoV (c)
return c >= 0x1160 and c <= 0x11A7
or c >= 0xD7B0 and c <= 0xD7C6
end
local function is_jamoT (c)
return c >= 0x11A8 and c <= 0x11FF
or c >= 0xD7CB and c <= 0xD7FB
end
local SBase = 0xAC00
local LBase = 0x1100
local VBase = 0x1161
local TBase = 0x11A7
local VCount = 21
local TCount = 28
local NCount = VCount * TCount
local function append_chars (t, v)
if type(v) == "table" then
for _, c in ipairs(v) do
table.insert(t, c)
end
else
for i = 1, 2 do
table.insert(t, v)
end
end
end
function SORTprehook (data)
for _, v in ipairs(data) do
v.origEntry = v.Entry
local t, was_jamoV = {}, false
for _, c in utf8.codes(v.Entry) do
if is_jamoV(c) then
was_jamoV = true
else
if was_jamoV and not is_jamoT(c) then
append_chars(t, 0)
end
was_jamoV = false
end
if is_hangul(c) then
local SIndex = c - SBase
local LPart = SIndex // NCount + LBase
local VPart = (SIndex % NCount) // TCount + VBase
local TPart = SIndex % TCount + TBase
for _, i in ipairs{LPart, VPart, TPart} do
if i == TBase then
append_chars(t, 0)
else
append_chars(t, jamo_sort_order[i])
end
end
elseif is_jamoT(c) and t[#t-3] == 0x115F and t[#t-1] == 0x1160 then
-- jongsong alone -> end of chosong alone
t[#t-3], t[#t-2] = table.unpack(jamo_sort_order[c])
append_chars(t, 1)
elseif jamo_sort_order[c] then
append_chars(t, jamo_sort_order[c])
else
table.insert(t, c)
end
end
if was_jamoV then
append_chars(t, 0)
end
v.Entry = utf8.char(table.unpack(t))
local c = utf8.codepoint(v.sortChar)
if t[1] and (is_hangul(c) or jamo_sort_order[c]) then
v.sortChar = utf8.char(t[1])
end
end
return data
end
local headers = {
[0x1100] = 0x3131,
[0x1102] = 0x3134,
[0x1103] = 0x3137,
[0x1105] = 0x3139,
[0x1106] = 0x3141,
[0x1107] = 0x3142,
[0x1109] = 0x3145,
[0x110B] = 0x3147,
[0x110C] = 0x3148,
[0x110E] = 0x314A,
[0x110F] = 0x314B,
[0x1110] = 0x314C,
[0x1111] = 0x314D,
[0x1112] = 0x314E,
[0x115F] = 0x314F,
}
function SORTposthook (data)
for _, v in ipairs(data) do
v.Entry = v.origEntry
v.origEntry = nil
local c = utf8.codepoint(v.sortChar)
if headers[c] then
v.sortChar = utf8.char( headers[c] )
end
end
return data
end
function SORTendhook (data)
local en_begin, ko_begin
for i, v in ipairs(data) do
if not en_begin and string.find(v.sortChar, "%a") then
en_begin = i
elseif utf8.codepoint(v.sortChar) >= LBase then
ko_begin = i
break
end
end
if en_begin and ko_begin then
local t = {}
table.move(data, 1, en_begin-1, 1, t)
table.move(data, ko_begin, #data, #t+1, t)
table.move(data, en_begin, ko_begin-1, #t+1, t)
return t
end
return data
end
indexheader = indexheader or {}
indexheader.ko = { "기호", "숫자" }
--[[
-- below is copied from xindex-cfg.lua
--]]
itemPageDelimiter = "," -- Hello, 14
compressPages = true -- something like 12--15, instaead of 12,13,14,15. the |( ... |) syntax is still valid
fCompress = false -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
minCompress = 2 -- 14--16 or
numericPage = true -- for non numerical pagenumbers, like "VI-17"
sublabels = {"", "", "", ""} -- for the (sub(sub(sub-items first one is for item
pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17" -- not used !!!
indexOpening = "" -- commands after \begin{theindex}
--[[
Each character's position in this array-like table determines its 'priority'.
Several characters in the same slot have the same 'priority'.
--]]
alphabet_lower = { -- for sorting
{ ' ' }, -- only for internal tests
{ 'a', 'á', 'à', 'ä', 'å', 'æ', },
{ 'b' },
{ 'c', 'ç' },
{ 'd' },
{ 'e', 'é', 'è', 'ë' },
{ 'f' },
{ 'g' },
{ 'h' },
{ 'i', 'í', 'ì', 'ï' },
{ 'j' },
{ 'k' },
{ 'l' },
{ 'm' },
{ 'n', 'ñ' },
{ 'o', 'ó', 'ò', 'ö', 'ø', 'œ'},
{ 'p' },
{ 'q' },
{ 'r' },
{ 's', 'š', 'ß' },
{ 't' },
{ 'u', 'ú', 'ù', 'ü' , 'û'},
{ 'v' },
{ 'w' },
{ 'x' },
{ 'y', 'ý', 'ÿ' },
{ 'z', 'ž' },
}
alphabet_upper = { -- for sorting
{ ' ' },
{ 'A', 'Á', 'À', 'Ä', 'Å', 'Æ'},
{ 'B' },
{ 'C', 'Ç' },
{ 'D' },
{ 'E', 'È', 'È', 'Ë' },
{ 'F' },
{ 'G' },
{ 'H' },
{ 'I', 'Í', 'Ì', 'Ï' },
{ 'J' },
{ 'K' },
{ 'L' },
{ 'M' },
{ 'N', 'Ñ' },
{ 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ' },
{ 'P' },
{ 'Q' },
{ 'R' },
{ 'S', 'Š' },
{ 'T' },
{ 'U', 'Ú', 'Ù', 'Ü' },
{ 'V' },
{ 'W' },
{ 'X' },
{ 'Y', 'Ý', 'Ÿ' },
{ 'Z', 'Ž' }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment