From e2f2e8f25e1b4507d502bea3900031c16eb6a52d Mon Sep 17 00:00:00 2001 From: Jose Colon Rodriguez Date: Sun, 18 Feb 2024 13:28:09 -0400 Subject: Added cjk build option to set ambiguous width to 2 at build time --- build.zig | 7 +++++++ codegen/dwp.zig | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) 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 { const ziglyph = b.dependency("ziglyph", .{}); // Code generation + // Grapheme break const gbp_gen_exe = b.addExecutable(.{ .name = "gbp", .root_source_file = .{ .path = "codegen/gbp.zig" }, @@ -17,12 +18,18 @@ pub fn build(b: *std.Build) void { const run_gbp_gen_exe = b.addRunArtifact(gbp_gen_exe); const gbp_gen_out = run_gbp_gen_exe.addOutputFileArg("gbp.zig"); + // Display width + const cjk = b.option(bool, "cjk", "Ambiguouse code points are wide (display width: 2).") orelse false; + const options = b.addOptions(); + options.addOption(bool, "cjk", cjk); + const dwp_gen_exe = b.addExecutable(.{ .name = "dwp", .root_source_file = .{ .path = "codegen/dwp.zig" }, .target = b.host, .optimize = .Debug, }); + dwp_gen_exe.root_module.addOptions("options", options); const run_dwp_gen_exe = b.addRunArtifact(dwp_gen_exe); const dwp_gen_out = run_dwp_gen_exe.addOutputFileArg("dwp.zig"); 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 @@ const std = @import("std"); +const options = @import("options"); + const block_size = 256; const Block = [block_size]i3; @@ -75,7 +77,10 @@ pub fn main() !void { }, 1 => { // Width - if (std.mem.eql(u8, field, "W") or std.mem.eql(u8, field, "F")) { + if (std.mem.eql(u8, field, "W") or + std.mem.eql(u8, field, "F") or + (options.cjk and std.mem.eql(u8, field, "A"))) + { for (current_code[0]..current_code[1] + 1) |cp| try flat_map.put(@intCast(cp), 2); } }, -- cgit v1.2.3