summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jose Colon Rodriguez2024-02-18 13:28:09 -0400
committerGravatar Jose Colon Rodriguez2024-02-18 13:28:09 -0400
commite2f2e8f25e1b4507d502bea3900031c16eb6a52d (patch)
tree8a2cab5d8166cb7f4cafa9fe9e3a1fd991bfce85
parentGrapheme -> grapheme (diff)
downloadzg-e2f2e8f25e1b4507d502bea3900031c16eb6a52d.tar.gz
zg-e2f2e8f25e1b4507d502bea3900031c16eb6a52d.tar.xz
zg-e2f2e8f25e1b4507d502bea3900031c16eb6a52d.zip
Added cjk build option to set ambiguous width to 2 at build time
-rw-r--r--build.zig7
-rw-r--r--codegen/dwp.zig7
2 files changed, 13 insertions, 1 deletions
diff --git a/build.zig b/build.zig
index 68e01e3..2895d49 100644
--- a/build.zig
+++ b/build.zig
@@ -8,6 +8,7 @@ pub fn build(b: *std.Build) void {
8 const ziglyph = b.dependency("ziglyph", .{}); 8 const ziglyph = b.dependency("ziglyph", .{});
9 9
10 // Code generation 10 // Code generation
11 // Grapheme break
11 const gbp_gen_exe = b.addExecutable(.{ 12 const gbp_gen_exe = b.addExecutable(.{
12 .name = "gbp", 13 .name = "gbp",
13 .root_source_file = .{ .path = "codegen/gbp.zig" }, 14 .root_source_file = .{ .path = "codegen/gbp.zig" },
@@ -17,12 +18,18 @@ pub fn build(b: *std.Build) void {
17 const run_gbp_gen_exe = b.addRunArtifact(gbp_gen_exe); 18 const run_gbp_gen_exe = b.addRunArtifact(gbp_gen_exe);
18 const gbp_gen_out = run_gbp_gen_exe.addOutputFileArg("gbp.zig"); 19 const gbp_gen_out = run_gbp_gen_exe.addOutputFileArg("gbp.zig");
19 20
21 // Display width
22 const cjk = b.option(bool, "cjk", "Ambiguouse code points are wide (display width: 2).") orelse false;
23 const options = b.addOptions();
24 options.addOption(bool, "cjk", cjk);
25
20 const dwp_gen_exe = b.addExecutable(.{ 26 const dwp_gen_exe = b.addExecutable(.{
21 .name = "dwp", 27 .name = "dwp",
22 .root_source_file = .{ .path = "codegen/dwp.zig" }, 28 .root_source_file = .{ .path = "codegen/dwp.zig" },
23 .target = b.host, 29 .target = b.host,
24 .optimize = .Debug, 30 .optimize = .Debug,
25 }); 31 });
32 dwp_gen_exe.root_module.addOptions("options", options);
26 const run_dwp_gen_exe = b.addRunArtifact(dwp_gen_exe); 33 const run_dwp_gen_exe = b.addRunArtifact(dwp_gen_exe);
27 const dwp_gen_out = run_dwp_gen_exe.addOutputFileArg("dwp.zig"); 34 const dwp_gen_out = run_dwp_gen_exe.addOutputFileArg("dwp.zig");
28 35
diff --git a/codegen/dwp.zig b/codegen/dwp.zig
index a8cef57..36ab7cb 100644
--- a/codegen/dwp.zig
+++ b/codegen/dwp.zig
@@ -1,5 +1,7 @@
1const std = @import("std"); 1const std = @import("std");
2 2
3const options = @import("options");
4
3const block_size = 256; 5const block_size = 256;
4const Block = [block_size]i3; 6const Block = [block_size]i3;
5 7
@@ -75,7 +77,10 @@ pub fn main() !void {
75 }, 77 },
76 1 => { 78 1 => {
77 // Width 79 // Width
78 if (std.mem.eql(u8, field, "W") or std.mem.eql(u8, field, "F")) { 80 if (std.mem.eql(u8, field, "W") or
81 std.mem.eql(u8, field, "F") or
82 (options.cjk and std.mem.eql(u8, field, "A")))
83 {
79 for (current_code[0]..current_code[1] + 1) |cp| try flat_map.put(@intCast(cp), 2); 84 for (current_code[0]..current_code[1] + 1) |cp| try flat_map.put(@intCast(cp), 2);
80 } 85 }
81 }, 86 },