diff --git a/src/main.zig b/src/main.zig index 898f907e9551a45a85d81a89e98dedd680b588f4..362097749f21628e98002c23dbff979903f0cb1a 100644 --- a/src/main.zig +++ b/src/main.zig @@ -87,7 +87,7 @@ export fn u_hasBinaryProperty(cp: u32, prop: t.UProperty) bool { .UCHAR_BLOCK => false, // TODO .UCHAR_CANONICAL_COMBINING_CLASS => false, // TODO .UCHAR_DECOMPOSITION_TYPE => false, // TODO - .UCHAR_EAST_ASIAN_WIDTH => false, // TODO + .UCHAR_EAST_ASIAN_WIDTH => icu.eastAsianWidth(cp) != null, .UCHAR_GENERAL_CATEGORY => false, // TODO .UCHAR_JOINING_GROUP => false, // TODO .UCHAR_JOINING_TYPE => false, // TODO diff --git a/src/root.zig b/src/root.zig index 7db54a563d3d6fcd1ae5f92f574675b951a7f6c0..5bf45ae3efffa754e7220cbb0e9498258954a0a8 100644 --- a/src/root.zig +++ b/src/root.zig @@ -47,3 +47,13 @@ pub fn age(cp: u32) [2]u8 { } return .{ 0, 0 }; } + +pub fn eastAsianWidth(cp: u32) ?ucd.EastAsianWidth { + @setEvalBranchQuota(100_000); + inline for (ucd.east_asian_width.data) |item| { + if (cp >= item.from and cp <= item.to) { + return item.prop; + } + } + return null; +}