authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2022-12-21 13:27:19 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2022-12-21 13:27:19 -08:00
log0b3b5048df2b573b2ed551ecc72a7fc6d340cc8b
treed4976a68643726d81e246014f57148b9dc9dd9d2
parent0a163878eec9c3a75bf055562102c627d07ae572

add CompositionExclusions, fixes #9


5 files changed, 128 insertions(+), 0 deletions(-)

generate.zig+1
...@@ -7,6 +7,7 @@ const files = [_]type{...@@ -7,6 +7,7 @@ const files = [_]type{
7 @import("./scripts/BidiMirroring.zig"),7 @import("./scripts/BidiMirroring.zig"),
8 @import("./scripts/CJKRadicals.zig"),8 @import("./scripts/CJKRadicals.zig"),
9 @import("./scripts/CaseFolding.zig"),9 @import("./scripts/CaseFolding.zig"),
10 @import("./scripts/CompositionExclusions.zig"),
10};11};
1112
12pub fn main() !void {13pub fn main() !void {
scripts/CompositionExclusions.zig created+35
...@@ -0,0 +1,35 @@
1const std = @import("std");
2const common = @import("./_common.zig");
3const extras = @import("extras");
4
5pub usingnamespace common.Main(struct {
6 pub const source_file = "CompositionExclusions";
7
8 pub const dest_file = "src/composition_exclusions.zig";
9
10 pub const dest_header =
11 \\pub const data = [_]u21{
12 \\
13 ;
14
15 pub const dest_footer =
16 \\};
17 \\
18 ;
19
20 pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !bool {
21 _ = alloc;
22 var it = std.mem.split(u8, line, " ");
23 try writer.print(" 0x{s}, // ", .{it.next().?});
24
25 while (it.next()) |item| {
26 if (item.len == 0) continue;
27 if (std.mem.eql(u8, item, "#")) {
28 try writer.writeAll(std.mem.trimLeft(u8, it.rest(), " "));
29 try writer.writeAll("\n");
30 break;
31 }
32 }
33 return true;
34 }
35});
src/composition_exclusions.zig created+90
...@@ -0,0 +1,90 @@
1// This file is part of the Unicode Character Database
2// For documentation, see http://www.unicode.org/reports/tr44/
3//
4// Based on the source file: https://unicode.org/Public/13.0.0/ucd/CompositionExclusions.txt
5//
6// zig fmt: off
7
8pub const data = [_]u21{
9 0x0958, // DEVANAGARI LETTER QA
10 0x0959, // DEVANAGARI LETTER KHHA
11 0x095A, // DEVANAGARI LETTER GHHA
12 0x095B, // DEVANAGARI LETTER ZA
13 0x095C, // DEVANAGARI LETTER DDDHA
14 0x095D, // DEVANAGARI LETTER RHA
15 0x095E, // DEVANAGARI LETTER FA
16 0x095F, // DEVANAGARI LETTER YYA
17 0x09DC, // BENGALI LETTER RRA
18 0x09DD, // BENGALI LETTER RHA
19 0x09DF, // BENGALI LETTER YYA
20 0x0A33, // GURMUKHI LETTER LLA
21 0x0A36, // GURMUKHI LETTER SHA
22 0x0A59, // GURMUKHI LETTER KHHA
23 0x0A5A, // GURMUKHI LETTER GHHA
24 0x0A5B, // GURMUKHI LETTER ZA
25 0x0A5E, // GURMUKHI LETTER FA
26 0x0B5C, // ORIYA LETTER RRA
27 0x0B5D, // ORIYA LETTER RHA
28 0x0F43, // TIBETAN LETTER GHA
29 0x0F4D, // TIBETAN LETTER DDHA
30 0x0F52, // TIBETAN LETTER DHA
31 0x0F57, // TIBETAN LETTER BHA
32 0x0F5C, // TIBETAN LETTER DZHA
33 0x0F69, // TIBETAN LETTER KSSA
34 0x0F76, // TIBETAN VOWEL SIGN VOCALIC R
35 0x0F78, // TIBETAN VOWEL SIGN VOCALIC L
36 0x0F93, // TIBETAN SUBJOINED LETTER GHA
37 0x0F9D, // TIBETAN SUBJOINED LETTER DDHA
38 0x0FA2, // TIBETAN SUBJOINED LETTER DHA
39 0x0FA7, // TIBETAN SUBJOINED LETTER BHA
40 0x0FAC, // TIBETAN SUBJOINED LETTER DZHA
41 0x0FB9, // TIBETAN SUBJOINED LETTER KSSA
42 0xFB1D, // HEBREW LETTER YOD WITH HIRIQ
43 0xFB1F, // HEBREW LIGATURE YIDDISH YOD YOD PATAH
44 0xFB2A, // HEBREW LETTER SHIN WITH SHIN DOT
45 0xFB2B, // HEBREW LETTER SHIN WITH SIN DOT
46 0xFB2C, // HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
47 0xFB2D, // HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
48 0xFB2E, // HEBREW LETTER ALEF WITH PATAH
49 0xFB2F, // HEBREW LETTER ALEF WITH QAMATS
50 0xFB30, // HEBREW LETTER ALEF WITH MAPIQ
51 0xFB31, // HEBREW LETTER BET WITH DAGESH
52 0xFB32, // HEBREW LETTER GIMEL WITH DAGESH
53 0xFB33, // HEBREW LETTER DALET WITH DAGESH
54 0xFB34, // HEBREW LETTER HE WITH MAPIQ
55 0xFB35, // HEBREW LETTER VAV WITH DAGESH
56 0xFB36, // HEBREW LETTER ZAYIN WITH DAGESH
57 0xFB38, // HEBREW LETTER TET WITH DAGESH
58 0xFB39, // HEBREW LETTER YOD WITH DAGESH
59 0xFB3A, // HEBREW LETTER FINAL KAF WITH DAGESH
60 0xFB3B, // HEBREW LETTER KAF WITH DAGESH
61 0xFB3C, // HEBREW LETTER LAMED WITH DAGESH
62 0xFB3E, // HEBREW LETTER MEM WITH DAGESH
63 0xFB40, // HEBREW LETTER NUN WITH DAGESH
64 0xFB41, // HEBREW LETTER SAMEKH WITH DAGESH
65 0xFB43, // HEBREW LETTER FINAL PE WITH DAGESH
66 0xFB44, // HEBREW LETTER PE WITH DAGESH
67 0xFB46, // HEBREW LETTER TSADI WITH DAGESH
68 0xFB47, // HEBREW LETTER QOF WITH DAGESH
69 0xFB48, // HEBREW LETTER RESH WITH DAGESH
70 0xFB49, // HEBREW LETTER SHIN WITH DAGESH
71 0xFB4A, // HEBREW LETTER TAV WITH DAGESH
72 0xFB4B, // HEBREW LETTER VAV WITH HOLAM
73 0xFB4C, // HEBREW LETTER BET WITH RAFE
74 0xFB4D, // HEBREW LETTER KAF WITH RAFE
75 0xFB4E, // HEBREW LETTER PE WITH RAFE
76 0x2ADC, // FORKING
77 0x1D15E, // MUSICAL SYMBOL HALF NOTE
78 0x1D15F, // MUSICAL SYMBOL QUARTER NOTE
79 0x1D160, // MUSICAL SYMBOL EIGHTH NOTE
80 0x1D161, // MUSICAL SYMBOL SIXTEENTH NOTE
81 0x1D162, // MUSICAL SYMBOL THIRTY-SECOND NOTE
82 0x1D163, // MUSICAL SYMBOL SIXTY-FOURTH NOTE
83 0x1D164, // MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
84 0x1D1BB, // MUSICAL SYMBOL MINIMA
85 0x1D1BC, // MUSICAL SYMBOL MINIMA BLACK
86 0x1D1BD, // MUSICAL SYMBOL SEMIMINIMA WHITE
87 0x1D1BE, // MUSICAL SYMBOL SEMIMINIMA BLACK
88 0x1D1BF, // MUSICAL SYMBOL FUSA WHITE
89 0x1D1C0, // MUSICAL SYMBOL FUSA BLACK
90};
src/lib.zig+1
...@@ -4,3 +4,4 @@ pub const bidi_mirroring = @import("./bidi_mirroring.zig");...@@ -4,3 +4,4 @@ pub const bidi_mirroring = @import("./bidi_mirroring.zig");
4pub const blocks = @import("./blocks.zig");4pub const blocks = @import("./blocks.zig");
5pub const cjk_radicals = @import("./cjk_radicals.zig");5pub const cjk_radicals = @import("./cjk_radicals.zig");
6pub const case_folding = @import("./case_folding.zig");6pub const case_folding = @import("./case_folding.zig");
7pub const composition_exclusions = @import("./composition_exclusions.zig");
src/main.zig+1
...@@ -12,6 +12,7 @@ pub fn main() !void {...@@ -12,6 +12,7 @@ pub fn main() !void {
12 ucd.blocks,12 ucd.blocks,
13 ucd.cjk_radicals,13 ucd.cjk_radicals,
14 ucd.case_folding,14 ucd.case_folding,
15 ucd.composition_exclusions,
15 };16 };
1617
17 inline for (data) |b| {18 inline for (data) |b| {