From 18e60e77de77785c773cb8908cd99a9514cb9bb8 Mon Sep 17 00:00:00 2001 From: yuyi Date: Mon, 4 Sep 2023 04:51:56 +0800 Subject: [PATCH] fmt: remove inline comments (#19263) --- cmd/tools/vtest-fmt.v | 2 +- cmd/tools/vtest-self.v | 14 +- examples/2048/2048.v | 22 +- examples/path_tracing.v | 36 +- examples/sokol/02_cubes_glsl/cube_glsl.v | 6 +- examples/sokol/04_multi_shader_glsl/rt_glsl.v | 6 +- examples/tetris/tetris.js.v | 16 +- examples/tetris/tetris.v | 16 +- vlib/encoding/utf8/utf8_util.v | 1238 ++++++++--------- vlib/gg/m4/graphic.v | 8 +- vlib/gg/m4/matrix.v | 40 +- vlib/math/math_test.v | 172 ++- vlib/os/os.c.v | 5 +- vlib/os/os.v | 40 +- vlib/sokol/sapp/sapp_funcs.c.v | 6 +- vlib/term/ui/input_windows.c.v | 4 +- vlib/v/ast/ast.v | 20 +- vlib/v/builder/cc.v | 18 +- vlib/v/checker/checker.v | 2 +- vlib/v/fmt/fmt.v | 10 +- .../fmt/tests/array_init_comments_expected.vv | 1 - vlib/v/fmt/tests/array_init_comments_input.vv | 1 - .../tests/array_init_inline_comments_keep.vv | 2 - .../c_fn_headers_with_comments_expected.vv | 7 - .../tests/c_fn_headers_with_comments_input.vv | 7 - vlib/v/fmt/tests/comments_array_keep.vv | 33 +- vlib/v/fmt/tests/comments_expected.vv | 52 +- vlib/v/fmt/tests/comments_input.vv | 52 +- .../tests/comments_inside_if_cond_expected.vv | 2 - .../tests/comments_inside_if_cond_input.vv | 2 - .../tests/consts_with_comments_expected.vv | 2 +- .../v/fmt/tests/consts_with_comments_input.vv | 2 +- .../fn_headers_with_comments_expected.vv | 8 +- .../tests/fn_headers_with_comments_input.vv | 4 +- ...n_headers_with_inline_comments_expected.vv | 8 - .../fn_headers_with_inline_comments_input.vv | 6 - ...fn_headers_with_param_comments_expected.vv | 8 - .../fn_headers_with_param_comments_input.vv | 8 - .../v/fmt/tests/fn_with_args_comments_keep.vv | 3 +- .../if_cond_with_inline_comments_expected.vv | 12 - .../if_cond_with_inline_comments_input.vv | 10 - .../tests/infix_expr_with_comments_keep.vv | 6 +- vlib/v/fmt/tests/return_with_comments_keep.vv | 22 - vlib/v/fmt/tests/structs_expected.vv | 4 +- vlib/v/fmt/tests/structs_input.vv | 4 +- vlib/v/gen/js/sourcemap/vlq/vlq_decode_test.v | 4 +- vlib/v/gen/js/sourcemap/vlq/vlq_encode_test.v | 4 +- vlib/v/markused/markused.v | 8 +- vlib/v/scanner/scanner.v | 12 +- vlib/x/ttf/ttf.v | 10 +- 50 files changed, 951 insertions(+), 1034 deletions(-) delete mode 100644 vlib/v/fmt/tests/array_init_inline_comments_keep.vv delete mode 100644 vlib/v/fmt/tests/c_fn_headers_with_comments_expected.vv delete mode 100644 vlib/v/fmt/tests/c_fn_headers_with_comments_input.vv delete mode 100644 vlib/v/fmt/tests/comments_inside_if_cond_expected.vv delete mode 100644 vlib/v/fmt/tests/comments_inside_if_cond_input.vv delete mode 100644 vlib/v/fmt/tests/fn_headers_with_inline_comments_expected.vv delete mode 100644 vlib/v/fmt/tests/fn_headers_with_inline_comments_input.vv delete mode 100644 vlib/v/fmt/tests/fn_headers_with_param_comments_expected.vv delete mode 100644 vlib/v/fmt/tests/fn_headers_with_param_comments_input.vv delete mode 100644 vlib/v/fmt/tests/if_cond_with_inline_comments_expected.vv delete mode 100644 vlib/v/fmt/tests/if_cond_with_inline_comments_input.vv delete mode 100644 vlib/v/fmt/tests/return_with_comments_keep.vv diff --git a/cmd/tools/vtest-fmt.v b/cmd/tools/vtest-fmt.v index e24d3ad8d0..350b321a43 100644 --- a/cmd/tools/vtest-fmt.v +++ b/cmd/tools/vtest-fmt.v @@ -6,7 +6,7 @@ import v.util const ( known_failing_exceptions = [ - 'vlib/crypto/aes/const.v' /* const array wrapped in too many lines */, + 'vlib/crypto/aes/const.v', // const array wrapped in too many lines ] ) diff --git a/cmd/tools/vtest-self.v b/cmd/tools/vtest-self.v index fe835bf21b..cfa223c827 100644 --- a/cmd/tools/vtest-self.v +++ b/cmd/tools/vtest-self.v @@ -85,13 +85,13 @@ const ( ] skip_test_files = [ 'do_not_remove', - 'cmd/tools/vdoc/html_tag_escape_test.v', /* can't locate local module: markdown */ - 'cmd/tools/vdoc/tests/vdoc_file_test.v', /* fails on Windows; order of output is not as expected */ - 'vlib/context/deadline_test.v' /* sometimes blocks */, - 'vlib/context/onecontext/onecontext_test.v' /* backtrace_symbols is missing. */, - 'vlib/db/mysql/mysql_orm_test.v' /* mysql not installed */, - 'vlib/db/mysql/mysql_test.v' /* mysql not installed */, - 'vlib/db/pg/pg_orm_test.v' /* pg not installed */, + 'cmd/tools/vdoc/html_tag_escape_test.v', // can't locate local module: markdown + 'cmd/tools/vdoc/tests/vdoc_file_test.v', // fails on Windows; order of output is not as expected + 'vlib/context/deadline_test.v', // sometimes blocks + 'vlib/context/onecontext/onecontext_test.v', // backtrace_symbols is missing + 'vlib/db/mysql/mysql_orm_test.v', // mysql not installed + 'vlib/db/mysql/mysql_test.v', // mysql not installed + 'vlib/db/pg/pg_orm_test.v', // pg not installed ] // These tests are too slow to be run in the CI on each PR/commit // in the sanitized modes: diff --git a/examples/2048/2048.v b/examples/2048/2048.v index 61b818d787..78003cd913 100644 --- a/examples/2048/2048.v +++ b/examples/2048/2048.v @@ -54,17 +54,17 @@ const ( game_over_color: gx.rgb(190, 50, 50) text_color: gx.black tile_colors: [ - gx.rgb(205, 193, 180), /* Empty / 0 tile */ - gx.rgb(238, 228, 218), /* 2 */ - gx.rgb(237, 224, 200), /* 4 */ - gx.rgb(242, 177, 121), /* 8 */ - gx.rgb(245, 149, 99), /* 16 */ - gx.rgb(246, 124, 95), /* 32 */ - gx.rgb(246, 94, 59), /* 64 */ - gx.rgb(237, 207, 114), /* 128 */ - gx.rgb(237, 204, 97), /* 256 */ - gx.rgb(237, 200, 80), /* 512 */ - gx.rgb(237, 197, 63), /* 1024 */ + gx.rgb(205, 193, 180), // Empty / 0 tile + gx.rgb(238, 228, 218), // 2 + gx.rgb(237, 224, 200), // 4 + gx.rgb(242, 177, 121), // 8 + gx.rgb(245, 149, 99), // 16 + gx.rgb(246, 124, 95), // 32 + gx.rgb(246, 94, 59), // 64 + gx.rgb(237, 207, 114), // 128 + gx.rgb(237, 204, 97), // 256 + gx.rgb(237, 200, 80), // 512 + gx.rgb(237, 197, 63), // 1024 gx.rgb(237, 194, 46), ] }, diff --git a/examples/path_tracing.v b/examples/path_tracing.v index b8eead7caf..f89aa9132f 100644 --- a/examples/path_tracing.v +++ b/examples/path_tracing.v @@ -173,63 +173,63 @@ const ( e: Vec{} c: Vec{.75, .25, .25} refl: .diff - }, /* Left */ + }, // Left Sphere{ rad: 1e+5 p: Vec{-1e+5 + 99, 40.8, 81.6} e: Vec{} c: Vec{.25, .25, .75} refl: .diff - }, /* Rght */ + }, // Rght Sphere{ rad: 1e+5 p: Vec{50, 40.8, 1e+5} e: Vec{} c: Vec{.75, .75, .75} refl: .diff - }, /* Back */ + }, // Back Sphere{ rad: 1e+5 p: Vec{50, 40.8, -1e+5 + 170} e: Vec{} c: Vec{} refl: .diff - }, /* Frnt */ + }, // Frnt Sphere{ rad: 1e+5 p: Vec{50, 1e+5, 81.6} e: Vec{} c: Vec{.75, .75, .75} refl: .diff - }, /* Botm */ + }, // Botm Sphere{ rad: 1e+5 p: Vec{50, -1e+5 + 81.6, 81.6} e: Vec{} c: Vec{.75, .75, .75} refl: .diff - }, /* Top */ + }, // Top Sphere{ rad: 16.5 p: Vec{27, 16.5, 47} e: Vec{} c: Vec{1, 1, 1}.mult_s(.999) refl: .spec - }, /* Mirr */ + }, // Mirr Sphere{ rad: 16.5 p: Vec{73, 16.5, 78} e: Vec{} c: Vec{1, 1, 1}.mult_s(.999) refl: .refr - }, /* Glas */ + }, // Glas Sphere{ rad: 600 p: Vec{50, 681.6 - .27, 81.6} e: Vec{12, 12, 12} c: Vec{} refl: .diff - } /* Lite */, + }, // Lite ], [// scene 1 sunset Sphere{ @@ -238,63 +238,63 @@ const ( e: Vec{1.0, .9, .8}.mult_s(1.2e+1 * 1.56 * 2) c: Vec{} refl: .diff - }, /* sun */ + }, // sun Sphere{ rad: 1560 p: Vec{1, 0, 2}.mult_s(3500) e: Vec{1.0, .5, .05}.mult_s(4.8e+1 * 1.56 * 2) c: Vec{} refl: .diff - }, /* horizon sun2 */ + }, // horizon sun2 Sphere{ rad: 10000 p: cen + Vec{0, 0, -200} e: Vec{0.00063842, 0.02001478, 0.28923243}.mult_s(6e-2 * 8) c: Vec{.7, .7, 1}.mult_s(.25) refl: .diff - }, /* sky */ + }, // sky Sphere{ rad: 100000 p: Vec{50, -100000, 0} e: Vec{} c: Vec{.3, .3, .3} refl: .diff - }, /* grnd */ + }, // grnd Sphere{ rad: 110000 p: Vec{50, -110048.5, 0} e: Vec{.9, .5, .05}.mult_s(4) c: Vec{} refl: .diff - }, /* horizon brightener */ + }, // horizon brightener Sphere{ rad: 4e+4 p: Vec{50, -4e+4 - 30, -3000} e: Vec{} c: Vec{.2, .2, .2} refl: .diff - }, /* mountains */ + }, // mountains Sphere{ rad: 26.5 p: Vec{22, 26.5, 42} e: Vec{} c: Vec{1, 1, 1}.mult_s(.596) refl: .spec - }, /* white Mirr */ + }, // white Mirr Sphere{ rad: 13 p: Vec{75, 13, 82} e: Vec{} c: Vec{.96, .96, .96}.mult_s(.96) refl: .refr - }, /* Glas */ + }, // Glas Sphere{ rad: 22 p: Vec{87, 22, 24} e: Vec{} c: Vec{.6, .6, .6}.mult_s(.696) refl: .refr - } /* Glas2 */, + }, // Glas2 ], [// scene 3 Psychedelic Sphere{ diff --git a/examples/sokol/02_cubes_glsl/cube_glsl.v b/examples/sokol/02_cubes_glsl/cube_glsl.v index fbc537bd67..33a8427b54 100644 --- a/examples/sokol/02_cubes_glsl/cube_glsl.v +++ b/examples/sokol/02_cubes_glsl/cube_glsl.v @@ -411,9 +411,9 @@ fn draw_cube_glsl(app App) { time_ticks := f32(time.ticks() - app.ticks) / 1000 mut text_res := [ f32(512), - 512, /* x,y resolution to pass to FS */ - time_ticks, /* time as f32 */ - 0 /* padding 4 Bytes == 1 f32 */, + 512, // x,y resolution to pass to FS + time_ticks, // time as f32 + 0, // padding 4 Bytes == 1 f32 ]! fs_uniforms_range := gfx.Range{ ptr: unsafe { &text_res } diff --git a/examples/sokol/04_multi_shader_glsl/rt_glsl.v b/examples/sokol/04_multi_shader_glsl/rt_glsl.v index 6e7829f4b9..c6697118e9 100644 --- a/examples/sokol/04_multi_shader_glsl/rt_glsl.v +++ b/examples/sokol/04_multi_shader_glsl/rt_glsl.v @@ -286,7 +286,7 @@ fn init_cube_glsl_p(mut app App) { vert_buffer_desc.@type = .vertexbuffer vbuf := gfx.make_buffer(&vert_buffer_desc) - /* create an index buffer for the cube */ + // create an index buffer for the cube // vfmt off indices := [ /* @@ -408,8 +408,8 @@ fn draw_cube_glsl_m(app App) { ws.height * ratio, // x,y resolution to pass to FS 0, 0, // dont send mouse position - /* app.mouse_x, // mouse x */ - /* ws.height - app.mouse_y*2, // mouse y scaled */ + // app.mouse_x, // mouse x + // ws.height - app.mouse_y*2, // mouse y scaled time_ticks, // time as f32 app.frame_count, // frame count 0, diff --git a/examples/tetris/tetris.js.v b/examples/tetris/tetris.js.v index c975b504fb..7a45252c60 100644 --- a/examples/tetris/tetris.js.v +++ b/examples/tetris/tetris.js.v @@ -52,14 +52,14 @@ const ( ] // Each tetro has its unique color colors = [ - gx.rgb(0, 0, 0), /* unused ? */ - gx.rgb(255, 242, 0), /* yellow quad */ - gx.rgb(174, 0, 255), /* purple triple */ - gx.rgb(60, 255, 0), /* green short topright */ - gx.rgb(255, 0, 0), /* red short topleft */ - gx.rgb(255, 180, 31), /* orange long topleft */ - gx.rgb(33, 66, 255), /* blue long topright */ - gx.rgb(74, 198, 255), /* lightblue longest */ + gx.rgb(0, 0, 0), // unused ? + gx.rgb(255, 242, 0), // yellow quad + gx.rgb(174, 0, 255), // purple triple + gx.rgb(60, 255, 0), // green short topright + gx.rgb(255, 0, 0), // red short topleft + gx.rgb(255, 180, 31), // orange long topleft + gx.rgb(33, 66, 255), // blue long topright + gx.rgb(74, 198, 255), // lightblue longest gx.rgb(0, 170, 170), ] background_color = gx.white diff --git a/examples/tetris/tetris.v b/examples/tetris/tetris.v index f875bc752d..bf210225ba 100644 --- a/examples/tetris/tetris.v +++ b/examples/tetris/tetris.v @@ -53,14 +53,14 @@ const ( ] // Each tetro has its unique color colors = [ - gx.rgb(0, 0, 0), /* unused ? */ - gx.rgb(255, 242, 0), /* yellow quad */ - gx.rgb(174, 0, 255), /* purple triple */ - gx.rgb(60, 255, 0), /* green short topright */ - gx.rgb(255, 0, 0), /* red short topleft */ - gx.rgb(255, 180, 31), /* orange long topleft */ - gx.rgb(33, 66, 255), /* blue long topright */ - gx.rgb(74, 198, 255), /* lightblue longest */ + gx.rgb(0, 0, 0), // unused ? + gx.rgb(255, 242, 0), // yellow quad + gx.rgb(174, 0, 255), // purple triple + gx.rgb(60, 255, 0), // green short topright + gx.rgb(255, 0, 0), // red short topleft + gx.rgb(255, 180, 31), // orange long topleft + gx.rgb(33, 66, 255), // blue long topright + gx.rgb(74, 198, 255), // lightblue longest gx.rgb(0, 170, 170), ] background_color = gx.white diff --git a/vlib/encoding/utf8/utf8_util.v b/vlib/encoding/utf8/utf8_util.v index 3e2567ee6e..f8f5ef3c92 100644 --- a/vlib/encoding/utf8/utf8_util.v +++ b/vlib/encoding/utf8/utf8_util.v @@ -483,9 +483,9 @@ fn up_low(s string, upper_flag bool) string { str_res[index + 0] = ch0 str_res[index + 1] = ch1 } - //**************************************************************** + ///*************************************************************** // BUG: doesn't compile, workaround use shitf to right of 0 bit - //**************************************************************** + ///*************************************************************** // str_res[index + 1 ] = u8( tab_char & 0xbf ) // 1011 1111 } else if ch_len == 3 { ch0 := u8((tab_char >> 12) & 0x0f) | 0xe0 // 1110 xxxx @@ -575,627 +575,627 @@ const ( // Western punctuation mark // Character Name Browser Image unicode_punct_western = [ - 0x0021 /* EXCLAMATION MARK ! */, - 0x0022 /* QUOTATION MARK " */, - 0x0027 /* APOSTROPHE ' */, - 0x002A /* ASTERISK * */, - 0x002C /* COMMA , */, - 0x002E /* FULL STOP . */, - 0x002F /* SOLIDUS / */, - 0x003A /* COLON : */, - 0x003B /* SEMICOLON ; */, - 0x003F /* QUESTION MARK ? */, - 0x00A1 /* INVERTED EXCLAMATION MARK ¡ */, - 0x00A7 /* SECTION SIGN § */, - 0x00B6 /* PILCROW SIGN ¶ */, - 0x00B7 /* MIDDLE DOT · */, - 0x00BF /* INVERTED QUESTION MARK ¿ */, - 0x037E /* GREEK QUESTION MARK ; */, - 0x0387 /* GREEK ANO TELEIA · */, - 0x055A /* ARMENIAN APOSTROPHE ՚ */, - 0x055B /* ARMENIAN EMPHASIS MARK ՛ */, - 0x055C /* ARMENIAN EXCLAMATION MARK ՜ */, - 0x055D /* ARMENIAN COMMA ՝ */, - 0x055E /* ARMENIAN QUESTION MARK ՞ */, - 0x055F /* ARMENIAN ABBREVIATION MARK ՟ */, - 0x0589 /* ARMENIAN FULL STOP ։ */, - 0x05C0 /* HEBREW PUNCTUATION PASEQ ׀ */, - 0x05C3 /* HEBREW PUNCTUATION SOF PASUQ ׃ */, - 0x05C6 /* HEBREW PUNCTUATION NUN HAFUKHA ׆ */, - 0x05F3 /* HEBREW PUNCTUATION GERESH ׳ */, - 0x05F4 /* HEBREW PUNCTUATION GERSHAYIM ״ */, + 0x0021, // EXCLAMATION MARK ! + 0x0022, // QUOTATION MARK " + 0x0027, // APOSTROPHE ' + 0x002A, // ASTERISK * + 0x002C, // COMMA , + 0x002E, // FULL STOP . + 0x002F, // SOLIDUS / + 0x003A, // COLON : + 0x003B, // SEMICOLON ; + 0x003F, // QUESTION MARK ? + 0x00A1, // INVERTED EXCLAMATION MARK ¡ + 0x00A7, // SECTION SIGN § + 0x00B6, // PILCROW SIGN ¶ + 0x00B7, // MIDDLE DOT · + 0x00BF, // INVERTED QUESTION MARK ¿ + 0x037E, // GREEK QUESTION MARK ; + 0x0387, // GREEK ANO TELEIA · + 0x055A, // ARMENIAN APOSTROPHE ՚ + 0x055B, // ARMENIAN EMPHASIS MARK ՛ + 0x055C, // ARMENIAN EXCLAMATION MARK ՜ + 0x055D, // ARMENIAN COMMA ՝ + 0x055E, // ARMENIAN QUESTION MARK ՞ + 0x055F, // ARMENIAN ABBREVIATION MARK ՟ + 0x0589, // ARMENIAN FULL STOP ։ + 0x05C0, // HEBREW PUNCTUATION PASEQ ׀ + 0x05C3, // HEBREW PUNCTUATION SOF PASUQ ׃ + 0x05C6, // HEBREW PUNCTUATION NUN HAFUKHA ׆ + 0x05F3, // HEBREW PUNCTUATION GERESH ׳ + 0x05F4, // HEBREW PUNCTUATION GERSHAYIM ״ ] // Unicode Characters in the 'Punctuation, Other' Category // Character Name Browser Image unicode_punct = [ - 0x0021 /* EXCLAMATION MARK ! */, - 0x0022 /* QUOTATION MARK " */, - 0x0023 /* NUMBER SIGN # */, - 0x0025 /* PERCENT SIGN % */, - 0x0026 /* AMPERSAND & */, - 0x0027 /* APOSTROPHE ' */, - 0x002A /* ASTERISK * */, - 0x002C /* COMMA , */, - 0x002E /* FULL STOP . */, - 0x002F /* SOLIDUS / */, - 0x003A /* COLON : */, - 0x003B /* SEMICOLON ; */, - 0x003F /* QUESTION MARK ? */, - 0x0040 /* COMMERCIAL AT @ */, - 0x005C /* REVERSE SOLIDUS \ */, - 0x00A1 /* INVERTED EXCLAMATION MARK ¡ */, - 0x00A7 /* SECTION SIGN § */, - 0x00B6 /* PILCROW SIGN ¶ */, - 0x00B7 /* MIDDLE DOT · */, - 0x00BF /* INVERTED QUESTION MARK ¿ */, - 0x037E /* GREEK QUESTION MARK ; */, - 0x0387 /* GREEK ANO TELEIA · */, - 0x055A /* ARMENIAN APOSTROPHE ՚ */, - 0x055B /* ARMENIAN EMPHASIS MARK ՛ */, - 0x055C /* ARMENIAN EXCLAMATION MARK ՜ */, - 0x055D /* ARMENIAN COMMA ՝ */, - 0x055E /* ARMENIAN QUESTION MARK ՞ */, - 0x055F /* ARMENIAN ABBREVIATION MARK ՟ */, - 0x0589 /* ARMENIAN FULL STOP ։ */, - 0x05C0 /* HEBREW PUNCTUATION PASEQ ׀ */, - 0x05C3 /* HEBREW PUNCTUATION SOF PASUQ ׃ */, - 0x05C6 /* HEBREW PUNCTUATION NUN HAFUKHA ׆ */, - 0x05F3 /* HEBREW PUNCTUATION GERESH ׳ */, - 0x05F4 /* HEBREW PUNCTUATION GERSHAYIM ״ */, - 0x0609 /* ARABIC-INDIC PER MILLE SIGN ؉ */, - 0x060A /* ARABIC-INDIC PER TEN THOUSAND SIGN ؊ */, - 0x060C /* ARABIC COMMA ، */, - 0x060D /* ARABIC DATE SEPARATOR ؍ */, - 0x061B /* ARABIC SEMICOLON ؛ */, - 0x061E /* ARABIC TRIPLE DOT PUNCTUATION MARK ؞ */, - 0x061F /* ARABIC QUESTION MARK ؟ */, - 0x066A /* ARABIC PERCENT SIGN ٪ */, - 0x066B /* ARABIC DECIMAL SEPARATOR ٫ */, - 0x066C /* ARABIC THOUSANDS SEPARATOR ٬ */, - 0x066D /* ARABIC FIVE POINTED STAR ٭ */, - 0x06D4 /* ARABIC FULL STOP ۔ */, - 0x0700 /* SYRIAC END OF PARAGRAPH ܀ */, - 0x0701 /* SYRIAC SUPRALINEAR FULL STOP ܁ */, - 0x0702 /* SYRIAC SUBLINEAR FULL STOP ܂ */, - 0x0703 /* SYRIAC SUPRALINEAR COLON ܃ */, - 0x0704 /* SYRIAC SUBLINEAR COLON ܄ */, - 0x0705 /* SYRIAC HORIZONTAL COLON ܅ */, - 0x0706 /* SYRIAC COLON SKEWED LEFT ܆ */, - 0x0707 /* SYRIAC COLON SKEWED RIGHT ܇ */, - 0x0708 /* SYRIAC SUPRALINEAR COLON SKEWED LEFT ܈ */, - 0x0709 /* SYRIAC SUBLINEAR COLON SKEWED RIGHT ܉ */, - 0x070A /* SYRIAC CONTRACTION ܊ */, - 0x070B /* SYRIAC HARKLEAN OBELUS ܋ */, - 0x070C /* SYRIAC HARKLEAN METOBELUS ܌ */, - 0x070D /* SYRIAC HARKLEAN ASTERISCUS ܍ */, - 0x07F7 /* NKO SYMBOL GBAKURUNEN ߷ */, - 0x07F8 /* NKO COMMA ߸ */, - 0x07F9 /* NKO EXCLAMATION MARK ߹ */, - 0x0830 /* SAMARITAN PUNCTUATION NEQUDAA ࠰ */, - 0x0831 /* SAMARITAN PUNCTUATION AFSAAQ ࠱ */, - 0x0832 /* SAMARITAN PUNCTUATION ANGED ࠲ */, - 0x0833 /* SAMARITAN PUNCTUATION BAU ࠳ */, - 0x0834 /* SAMARITAN PUNCTUATION ATMAAU ࠴ */, - 0x0835 /* SAMARITAN PUNCTUATION SHIYYAALAA ࠵ */, - 0x0836 /* SAMARITAN ABBREVIATION MARK ࠶ */, - 0x0837 /* SAMARITAN PUNCTUATION MELODIC QITSA ࠷ */, - 0x0838 /* SAMARITAN PUNCTUATION ZIQAA ࠸ */, - 0x0839 /* SAMARITAN PUNCTUATION QITSA ࠹ */, - 0x083A /* SAMARITAN PUNCTUATION ZAEF ࠺ */, - 0x083B /* SAMARITAN PUNCTUATION TURU ࠻ */, - 0x083C /* SAMARITAN PUNCTUATION ARKAANU ࠼ */, - 0x083D /* SAMARITAN PUNCTUATION SOF MASHFAAT ࠽ */, - 0x083E /* SAMARITAN PUNCTUATION ANNAAU ࠾ */, - 0x085E /* MANDAIC PUNCTUATION ࡞ */, - 0x0964 /* DEVANAGARI DANDA । */, - 0x0965 /* DEVANAGARI DOUBLE DANDA ॥ */, - 0x0970 /* DEVANAGARI ABBREVIATION SIGN ॰ */, - 0x09FD /* BENGALI ABBREVIATION SIGN ৽ */, - 0x0A76 /* GURMUKHI ABBREVIATION SIGN ੶ */, - 0x0AF0 /* GUJARATI ABBREVIATION SIGN ૰ */, - 0x0C77 /* TELUGU SIGN SIDDHAM ౷ */, - 0x0C84 /* KANNADA SIGN SIDDHAM ಄ */, - 0x0DF4 /* SINHALA PUNCTUATION KUNDDALIYA ෴ */, - 0x0E4F /* THAI CHARACTER FONGMAN ๏ */, - 0x0E5A /* THAI CHARACTER ANGKHANKHU ๚ */, - 0x0E5B /* THAI CHARACTER KHOMUT ๛ */, - 0x0F04 /* TIBETAN MARK INITIAL YIG MGO MDUN MA ༄ */, - 0x0F05 /* TIBETAN MARK CLOSING YIG MGO SGAB MA ༅ */, - 0x0F06 /* TIBETAN MARK CARET YIG MGO PHUR SHAD MA ༆ */, - 0x0F07 /* TIBETAN MARK YIG MGO TSHEG SHAD MA ༇ */, - 0x0F08 /* TIBETAN MARK SBRUL SHAD ༈ */, - 0x0F09 /* TIBETAN MARK BSKUR YIG MGO ༉ */, - 0x0F0A /* TIBETAN MARK BKA- SHOG YIG MGO ༊ */, - 0x0F0B /* TIBETAN MARK INTERSYLLABIC TSHEG ་ */, - 0x0F0C /* TIBETAN MARK DELIMITER TSHEG BSTAR ༌ */, - 0x0F0D /* TIBETAN MARK SHAD ། */, - 0x0F0E /* TIBETAN MARK NYIS SHAD ༎ */, - 0x0F0F /* TIBETAN MARK TSHEG SHAD ༏ */, - 0x0F10 /* TIBETAN MARK NYIS TSHEG SHAD ༐ */, - 0x0F11 /* TIBETAN MARK RIN CHEN SPUNGS SHAD ༑ */, - 0x0F12 /* TIBETAN MARK RGYA GRAM SHAD ༒ */, - 0x0F14 /* TIBETAN MARK GTER TSHEG ༔ */, - 0x0F85 /* TIBETAN MARK PALUTA ྅ */, - 0x0FD0 /* TIBETAN MARK BSKA- SHOG GI MGO RGYAN ࿐ */, - 0x0FD1 /* TIBETAN MARK MNYAM YIG GI MGO RGYAN ࿑ */, - 0x0FD2 /* TIBETAN MARK NYIS TSHEG ࿒ */, - 0x0FD3 /* TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA ࿓ */, - 0x0FD4 /* TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA ࿔ */, - 0x0FD9 /* TIBETAN MARK LEADING MCHAN RTAGS ࿙ */, - 0x0FDA /* TIBETAN MARK TRAILING MCHAN RTAGS ࿚ */, - 0x104A /* MYANMAR SIGN LITTLE SECTION ၊ */, - 0x104B /* MYANMAR SIGN SECTION ။ */, - 0x104C /* MYANMAR SYMBOL LOCATIVE ၌ */, - 0x104D /* MYANMAR SYMBOL COMPLETED ၍ */, - 0x104E /* MYANMAR SYMBOL AFOREMENTIONED ၎ */, - 0x104F /* MYANMAR SYMBOL GENITIVE ၏ */, - 0x10FB /* GEORGIAN PARAGRAPH SEPARATOR ჻ */, - 0x1360 /* ETHIOPIC SECTION MARK ፠ */, - 0x1361 /* ETHIOPIC WORDSPACE ፡ */, - 0x1362 /* ETHIOPIC FULL STOP ። */, - 0x1363 /* ETHIOPIC COMMA ፣ */, - 0x1364 /* ETHIOPIC SEMICOLON ፤ */, - 0x1365 /* ETHIOPIC COLON ፥ */, - 0x1366 /* ETHIOPIC PREFACE COLON ፦ */, - 0x1367 /* ETHIOPIC QUESTION MARK ፧ */, - 0x1368 /* ETHIOPIC PARAGRAPH SEPARATOR ፨ */, - 0x166E /* CANADIAN SYLLABICS FULL STOP ᙮ */, - 0x16EB /* RUNIC SINGLE PUNCTUATION ᛫ */, - 0x16EC /* RUNIC MULTIPLE PUNCTUATION ᛬ */, - 0x16ED /* RUNIC CROSS PUNCTUATION ᛭ */, - 0x1735 /* PHILIPPINE SINGLE PUNCTUATION ᜵ */, - 0x1736 /* PHILIPPINE DOUBLE PUNCTUATION ᜶ */, - 0x17D4 /* KHMER SIGN KHAN ។ */, - 0x17D5 /* KHMER SIGN BARIYOOSAN ៕ */, - 0x17D6 /* KHMER SIGN CAMNUC PII KUUH ៖ */, - 0x17D8 /* KHMER SIGN BEYYAL ៘ */, - 0x17D9 /* KHMER SIGN PHNAEK MUAN ៙ */, - 0x17DA /* KHMER SIGN KOOMUUT ៚ */, - 0x1800 /* MONGOLIAN BIRGA ᠀ */, - 0x1801 /* MONGOLIAN ELLIPSIS ᠁ */, - 0x1802 /* MONGOLIAN COMMA ᠂ */, - 0x1803 /* MONGOLIAN FULL STOP ᠃ */, - 0x1804 /* MONGOLIAN COLON ᠄ */, - 0x1805 /* MONGOLIAN FOUR DOTS ᠅ */, - 0x1807 /* MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER ᠇ */, - 0x1808 /* MONGOLIAN MANCHU COMMA ᠈ */, - 0x1809 /* MONGOLIAN MANCHU FULL STOP ᠉ */, - 0x180A /* MONGOLIAN NIRUGU ᠊ */, - 0x1944 /* LIMBU EXCLAMATION MARK ᥄ */, - 0x1945 /* LIMBU QUESTION MARK ᥅ */, - 0x1A1E /* BUGINESE PALLAWA ᨞ */, - 0x1A1F /* BUGINESE END OF SECTION ᨟ */, - 0x1AA0 /* TAI THAM SIGN WIANG ᪠ */, - 0x1AA1 /* TAI THAM SIGN WIANGWAAK ᪡ */, - 0x1AA2 /* TAI THAM SIGN SAWAN ᪢ */, - 0x1AA3 /* TAI THAM SIGN KEOW ᪣ */, - 0x1AA4 /* TAI THAM SIGN HOY ᪤ */, - 0x1AA5 /* TAI THAM SIGN DOKMAI ᪥ */, - 0x1AA6 /* TAI THAM SIGN REVERSED ROTATED RANA ᪦ */, - 0x1AA8 /* TAI THAM SIGN KAAN ᪨ */, - 0x1AA9 /* TAI THAM SIGN KAANKUU ᪩ */, - 0x1AAA /* TAI THAM SIGN SATKAAN ᪪ */, - 0x1AAB /* TAI THAM SIGN SATKAANKUU ᪫ */, - 0x1AAC /* TAI THAM SIGN HANG ᪬ */, - 0x1AAD /* TAI THAM SIGN CAANG ᪭ */, - 0x1B5A /* BALINESE PANTI ᭚ */, - 0x1B5B /* BALINESE PAMADA ᭛ */, - 0x1B5C /* BALINESE WINDU ᭜ */, - 0x1B5D /* BALINESE CARIK PAMUNGKAH ᭝ */, - 0x1B5E /* BALINESE CARIK SIKI ᭞ */, - 0x1B5F /* BALINESE CARIK PAREREN ᭟ */, - 0x1B60 /* BALINESE PAMENENG ᭠ */, - 0x1BFC /* BATAK SYMBOL BINDU NA METEK ᯼ */, - 0x1BFD /* BATAK SYMBOL BINDU PINARBORAS ᯽ */, - 0x1BFE /* BATAK SYMBOL BINDU JUDUL ᯾ */, - 0x1BFF /* BATAK SYMBOL BINDU PANGOLAT ᯿ */, - 0x1C3B /* LEPCHA PUNCTUATION TA-ROL ᰻ */, - 0x1C3C /* LEPCHA PUNCTUATION NYET THYOOM TA-ROL ᰼ */, - 0x1C3D /* LEPCHA PUNCTUATION CER-WA ᰽ */, - 0x1C3E /* LEPCHA PUNCTUATION TSHOOK CER-WA ᰾ */, - 0x1C3F /* LEPCHA PUNCTUATION TSHOOK ᰿ */, - 0x1C7E /* OL CHIKI PUNCTUATION MUCAAD ᱾ */, - 0x1C7F /* OL CHIKI PUNCTUATION DOUBLE MUCAAD ᱿ */, - 0x1CC0 /* SUNDANESE PUNCTUATION BINDU SURYA ᳀ */, - 0x1CC1 /* SUNDANESE PUNCTUATION BINDU PANGLONG ᳁ */, - 0x1CC2 /* SUNDANESE PUNCTUATION BINDU PURNAMA ᳂ */, - 0x1CC3 /* SUNDANESE PUNCTUATION BINDU CAKRA ᳃ */, - 0x1CC4 /* SUNDANESE PUNCTUATION BINDU LEU SATANGA ᳄ */, - 0x1CC5 /* SUNDANESE PUNCTUATION BINDU KA SATANGA ᳅ */, - 0x1CC6 /* SUNDANESE PUNCTUATION BINDU DA SATANGA ᳆ */, - 0x1CC7 /* SUNDANESE PUNCTUATION BINDU BA SATANGA ᳇ */, - 0x1CD3 /* VEDIC SIGN NIHSHVASA ᳓ */, - 0x2016 /* DOUBLE VERTICAL LINE ‖ */, - 0x2017 /* DOUBLE LOW LINE ‗ */, - 0x2020 /* DAGGER † */, - 0x2021 /* DOUBLE DAGGER ‡ */, - 0x2022 /* BULLET • */, - 0x2023 /* TRIANGULAR BULLET ‣ */, - 0x2024 /* ONE DOT LEADER ․ */, - 0x2025 /* TWO DOT LEADER ‥ */, - 0x2026 /* HORIZONTAL ELLIPSIS … */, - 0x2027 /* HYPHENATION POINT ‧ */, - 0x2030 /* PER MILLE SIGN ‰ */, - 0x2031 /* PER TEN THOUSAND SIGN ‱ */, - 0x2032 /* PRIME ′ */, - 0x2033 /* DOUBLE PRIME ″ */, - 0x2034 /* TRIPLE PRIME ‴ */, - 0x2035 /* REVERSED PRIME ‵ */, - 0x2036 /* REVERSED DOUBLE PRIME ‶ */, - 0x2037 /* REVERSED TRIPLE PRIME ‷ */, - 0x2038 /* CARET ‸ */, - 0x203B /* REFERENCE MARK ※ */, - 0x203C /* DOUBLE EXCLAMATION MARK ‼ */, - 0x203D /* INTERROBANG ‽ */, - 0x203E /* OVERLINE ‾ */, - 0x2041 /* CARET INSERTION POINT ⁁ */, - 0x2042 /* ASTERISM ⁂ */, - 0x2043 /* HYPHEN BULLET ⁃ */, - 0x2047 /* DOUBLE QUESTION MARK ⁇ */, - 0x2048 /* QUESTION EXCLAMATION MARK ⁈ */, - 0x2049 /* EXCLAMATION QUESTION MARK ⁉ */, - 0x204A /* TIRONIAN SIGN ET ⁊ */, - 0x204B /* REVERSED PILCROW SIGN ⁋ */, - 0x204C /* BLACK LEFTWARDS BULLET ⁌ */, - 0x204D /* BLACK RIGHTWARDS BULLET ⁍ */, - 0x204E /* LOW ASTERISK ⁎ */, - 0x204F /* REVERSED SEMICOLON ⁏ */, - 0x2050 /* CLOSE UP ⁐ */, - 0x2051 /* TWO ASTERISKS ALIGNED VERTICALLY ⁑ */, - 0x2053 /* SWUNG DASH ⁓ */, - 0x2055 /* FLOWER PUNCTUATION MARK ⁕ */, - 0x2056 /* THREE DOT PUNCTUATION ⁖ */, - 0x2057 /* QUADRUPLE PRIME ⁗ */, - 0x2058 /* FOUR DOT PUNCTUATION ⁘ */, - 0x2059 /* FIVE DOT PUNCTUATION ⁙ */, - 0x205A /* TWO DOT PUNCTUATION ⁚ */, - 0x205B /* FOUR DOT MARK ⁛ */, - 0x205C /* DOTTED CROSS ⁜ */, - 0x205D /* TRICOLON ⁝ */, - 0x205E /* VERTICAL FOUR DOTS ⁞ */, - 0x2CF9 /* COPTIC OLD NUBIAN FULL STOP ⳹ */, - 0x2CFA /* COPTIC OLD NUBIAN DIRECT QUESTION MARK ⳺ */, - 0x2CFB /* COPTIC OLD NUBIAN INDIRECT QUESTION MARK ⳻ */, - 0x2CFC /* COPTIC OLD NUBIAN VERSE DIVIDER ⳼ */, - 0x2CFE /* COPTIC FULL STOP ⳾ */, - 0x2CFF /* COPTIC MORPHOLOGICAL DIVIDER ⳿ */, - 0x2D70 /* TIFINAGH SEPARATOR MARK ⵰ */, - 0x2E00 /* RIGHT ANGLE SUBSTITUTION MARKER ⸀ */, - 0x2E01 /* RIGHT ANGLE DOTTED SUBSTITUTION MARKER ⸁ */, - 0x2E06 /* RAISED INTERPOLATION MARKER ⸆ */, - 0x2E07 /* RAISED DOTTED INTERPOLATION MARKER ⸇ */, - 0x2E08 /* DOTTED TRANSPOSITION MARKER ⸈ */, - 0x2E0B /* RAISED SQUARE ⸋ */, - 0x2E0E /* EDITORIAL CORONIS ⸎ */, - 0x2E0F /* PARAGRAPHOS ⸏ */, - 0x2E10 /* FORKED PARAGRAPHOS ⸐ */, - 0x2E11 /* REVERSED FORKED PARAGRAPHOS ⸑ */, - 0x2E12 /* HYPODIASTOLE ⸒ */, - 0x2E13 /* DOTTED OBELOS ⸓ */, - 0x2E14 /* DOWNWARDS ANCORA ⸔ */, - 0x2E15 /* UPWARDS ANCORA ⸕ */, - 0x2E16 /* DOTTED RIGHT-POINTING ANGLE ⸖ */, - 0x2E18 /* INVERTED INTERROBANG ⸘ */, - 0x2E19 /* PALM BRANCH ⸙ */, - 0x2E1B /* TILDE WITH RING ABOVE ⸛ */, - 0x2E1E /* TILDE WITH DOT ABOVE ⸞ */, - 0x2E1F /* TILDE WITH DOT BELOW ⸟ */, - 0x2E2A /* TWO DOTS OVER ONE DOT PUNCTUATION ⸪ */, - 0x2E2B /* ONE DOT OVER TWO DOTS PUNCTUATION ⸫ */, - 0x2E2C /* SQUARED FOUR DOT PUNCTUATION ⸬ */, - 0x2E2D /* FIVE DOT MARK ⸭ */, - 0x2E2E /* REVERSED QUESTION MARK ⸮ */, - 0x2E30 /* RING POINT ⸰ */, - 0x2E31 /* WORD SEPARATOR MIDDLE DOT ⸱ */, - 0x2E32 /* TURNED COMMA ⸲ */, - 0x2E33 /* RAISED DOT ⸳ */, - 0x2E34 /* RAISED COMMA ⸴ */, - 0x2E35 /* TURNED SEMICOLON ⸵ */, - 0x2E36 /* DAGGER WITH LEFT GUARD ⸶ */, - 0x2E37 /* DAGGER WITH RIGHT GUARD ⸷ */, - 0x2E38 /* TURNED DAGGER ⸸ */, - 0x2E39 /* TOP HALF SECTION SIGN ⸹ */, - 0x2E3C /* STENOGRAPHIC FULL STOP ⸼ */, - 0x2E3D /* VERTICAL SIX DOTS ⸽ */, - 0x2E3E /* WIGGLY VERTICAL LINE ⸾ */, - 0x2E3F /* CAPITULUM ⸿ */, - 0x2E41 /* REVERSED COMMA ⹁ */, - 0x2E43 /* DASH WITH LEFT UPTURN ⹃ */, - 0x2E44 /* DOUBLE SUSPENSION MARK ⹄ */, - 0x2E45 /* INVERTED LOW KAVYKA ⹅ */, - 0x2E46 /* INVERTED LOW KAVYKA WITH KAVYKA ABOVE ⹆ */, - 0x2E47 /* LOW KAVYKA ⹇ */, - 0x2E48 /* LOW KAVYKA WITH DOT ⹈ */, - 0x2E49 /* DOUBLE STACKED COMMA ⹉ */, - 0x2E4A /* DOTTED SOLIDUS ⹊ */, - 0x2E4B /* TRIPLE DAGGER ⹋ */, - 0x2E4C /* MEDIEVAL COMMA ⹌ */, - 0x2E4D /* PARAGRAPHUS MARK ⹍ */, - 0x2E4E /* PUNCTUS ELEVATUS MARK ⹎ */, - 0x2E4F /* CORNISH VERSE DIVIDER ⹏ */, - 0x3001 /* IDEOGRAPHIC COMMA 、 */, - 0x3002 /* IDEOGRAPHIC FULL STOP 。 */, - 0x3003 /* DITTO MARK 〃 */, - 0x303D /* PART ALTERNATION MARK 〽 */, - 0x30FB /* KATAKANA MIDDLE DOT ・ */, - 0xA4FE /* LISU PUNCTUATION COMMA ꓾ */, - 0xA4FF /* LISU PUNCTUATION FULL STOP ꓿ */, - 0xA60D /* VAI COMMA ꘍ */, - 0xA60E /* VAI FULL STOP ꘎ */, - 0xA60F /* VAI QUESTION MARK ꘏ */, - 0xA673 /* SLAVONIC ASTERISK ꙳ */, - 0xA67E /* CYRILLIC KAVYKA ꙾ */, - 0xA6F2 /* BAMUM NJAEMLI ꛲ */, - 0xA6F3 /* BAMUM FULL STOP ꛳ */, - 0xA6F4 /* BAMUM COLON ꛴ */, - 0xA6F5 /* BAMUM COMMA ꛵ */, - 0xA6F6 /* BAMUM SEMICOLON ꛶ */, - 0xA6F7 /* BAMUM QUESTION MARK ꛷ */, - 0xA874 /* PHAGS-PA SINGLE HEAD MARK ꡴ */, - 0xA875 /* PHAGS-PA DOUBLE HEAD MARK ꡵ */, - 0xA876 /* PHAGS-PA MARK SHAD ꡶ */, - 0xA877 /* PHAGS-PA MARK DOUBLE SHAD ꡷ */, - 0xA8CE /* SAURASHTRA DANDA ꣎ */, - 0xA8CF /* SAURASHTRA DOUBLE DANDA ꣏ */, - 0xA8F8 /* DEVANAGARI SIGN PUSHPIKA ꣸ */, - 0xA8F9 /* DEVANAGARI GAP FILLER ꣹ */, - 0xA8FA /* DEVANAGARI CARET ꣺ */, - 0xA8FC /* DEVANAGARI SIGN SIDDHAM ꣼ */, - 0xA92E /* KAYAH LI SIGN CWI ꤮ */, - 0xA92F /* KAYAH LI SIGN SHYA ꤯ */, - 0xA95F /* REJANG SECTION MARK ꥟ */, - 0xA9C1 /* JAVANESE LEFT RERENGGAN ꧁ */, - 0xA9C2 /* JAVANESE RIGHT RERENGGAN ꧂ */, - 0xA9C3 /* JAVANESE PADA ANDAP ꧃ */, - 0xA9C4 /* JAVANESE PADA MADYA ꧄ */, - 0xA9C5 /* JAVANESE PADA LUHUR ꧅ */, - 0xA9C6 /* JAVANESE PADA WINDU ꧆ */, - 0xA9C7 /* JAVANESE PADA PANGKAT ꧇ */, - 0xA9C8 /* JAVANESE PADA LINGSA ꧈ */, - 0xA9C9 /* JAVANESE PADA LUNGSI ꧉ */, - 0xA9CA /* JAVANESE PADA ADEG ꧊ */, - 0xA9CB /* JAVANESE PADA ADEG ADEG ꧋ */, - 0xA9CC /* JAVANESE PADA PISELEH ꧌ */, - 0xA9CD /* JAVANESE TURNED PADA PISELEH ꧍ */, - 0xA9DE /* JAVANESE PADA TIRTA TUMETES ꧞ */, - 0xA9DF /* JAVANESE PADA ISEN-ISEN ꧟ */, - 0xAA5C /* CHAM PUNCTUATION SPIRAL ꩜ */, - 0xAA5D /* CHAM PUNCTUATION DANDA ꩝ */, - 0xAA5E /* CHAM PUNCTUATION DOUBLE DANDA ꩞ */, - 0xAA5F /* CHAM PUNCTUATION TRIPLE DANDA ꩟ */, - 0xAADE /* TAI VIET SYMBOL HO HOI ꫞ */, - 0xAADF /* TAI VIET SYMBOL KOI KOI ꫟ */, - 0xAAF0 /* MEETEI MAYEK CHEIKHAN ꫰ */, - 0xAAF1 /* MEETEI MAYEK AHANG KHUDAM ꫱ */, - 0xABEB /* MEETEI MAYEK CHEIKHEI ꯫ */, - 0xFE10 /* PRESENTATION FORM FOR VERTICAL COMMA ︐ */, - 0xFE11 /* PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA ︑ */, - 0xFE12 /* PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP ︒ */, - 0xFE13 /* PRESENTATION FORM FOR VERTICAL COLON ︓ */, - 0xFE14 /* PRESENTATION FORM FOR VERTICAL SEMICOLON ︔ */, - 0xFE15 /* PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK ︕ */, - 0xFE16 /* PRESENTATION FORM FOR VERTICAL QUESTION MARK ︖ */, - 0xFE19 /* PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS ︙ */, - 0xFE30 /* PRESENTATION FORM FOR VERTICAL TWO DOT LEADER ︰ */, - 0xFE45 /* SESAME DOT ﹅ */, - 0xFE46 /* WHITE SESAME DOT ﹆ */, - 0xFE49 /* DASHED OVERLINE ﹉ */, - 0xFE4A /* CENTRELINE OVERLINE ﹊ */, - 0xFE4B /* WAVY OVERLINE ﹋ */, - 0xFE4C /* DOUBLE WAVY OVERLINE ﹌ */, - 0xFE50 /* SMALL COMMA ﹐ */, - 0xFE51 /* SMALL IDEOGRAPHIC COMMA ﹑ */, - 0xFE52 /* SMALL FULL STOP ﹒ */, - 0xFE54 /* SMALL SEMICOLON ﹔ */, - 0xFE55 /* SMALL COLON ﹕ */, - 0xFE56 /* SMALL QUESTION MARK ﹖ */, - 0xFE57 /* SMALL EXCLAMATION MARK ﹗ */, - 0xFE5F /* SMALL NUMBER SIGN ﹟ */, - 0xFE60 /* SMALL AMPERSAND ﹠ */, - 0xFE61 /* SMALL ASTERISK ﹡ */, - 0xFE68 /* SMALL REVERSE SOLIDUS ﹨ */, - 0xFE6A /* SMALL PERCENT SIGN ﹪ */, - 0xFE6B /* SMALL COMMERCIAL AT ﹫ */, - 0xFF01 /* FULLWIDTH EXCLAMATION MARK ! */, - 0xFF02 /* FULLWIDTH QUOTATION MARK " */, - 0xFF03 /* FULLWIDTH NUMBER SIGN # */, - 0xFF05 /* FULLWIDTH PERCENT SIGN % */, - 0xFF06 /* FULLWIDTH AMPERSAND & */, - 0xFF07 /* FULLWIDTH APOSTROPHE ' */, - 0xFF0A /* FULLWIDTH ASTERISK * */, - 0xFF0C /* FULLWIDTH COMMA , */, - 0xFF0E /* FULLWIDTH FULL STOP . */, - 0xFF0F /* FULLWIDTH SOLIDUS / */, - 0xFF1A /* FULLWIDTH COLON : */, - 0xFF1B /* FULLWIDTH SEMICOLON ; */, - 0xFF1F /* FULLWIDTH QUESTION MARK ? */, - 0xFF20 /* FULLWIDTH COMMERCIAL AT @ */, - 0xFF3C /* FULLWIDTH REVERSE SOLIDUS \ */, - 0xFF61 /* HALFWIDTH IDEOGRAPHIC FULL STOP 。 */, - 0xFF64 /* HALFWIDTH IDEOGRAPHIC COMMA 、 */, - 0xFF65 /* HALFWIDTH KATAKANA MIDDLE DOT ・ */, - 0x10100 /* AEGEAN WORD SEPARATOR LINE 𐄀 */, - 0x10101 /* AEGEAN WORD SEPARATOR DOT 𐄁 */, - 0x10102 /* AEGEAN CHECK MARK 𐄂 */, - 0x1039F /* UGARITIC WORD DIVIDER 𐎟 */, - 0x103D0 /* OLD PERSIAN WORD DIVIDER 𐏐 */, - 0x1056F /* CAUCASIAN ALBANIAN CITATION MARK 𐕯 */, - 0x10857 /* IMPERIAL ARAMAIC SECTION SIGN 𐡗 */, - 0x1091F /* PHOENICIAN WORD SEPARATOR 𐤟 */, - 0x1093F /* LYDIAN TRIANGULAR MARK 𐤿 */, - 0x10A50 /* KHAROSHTHI PUNCTUATION DOT 𐩐 */, - 0x10A51 /* KHAROSHTHI PUNCTUATION SMALL CIRCLE 𐩑 */, - 0x10A52 /* KHAROSHTHI PUNCTUATION CIRCLE 𐩒 */, - 0x10A53 /* KHAROSHTHI PUNCTUATION CRESCENT BAR 𐩓 */, - 0x10A54 /* KHAROSHTHI PUNCTUATION MANGALAM 𐩔 */, - 0x10A55 /* KHAROSHTHI PUNCTUATION LOTUS 𐩕 */, - 0x10A56 /* KHAROSHTHI PUNCTUATION DANDA 𐩖 */, - 0x10A57 /* KHAROSHTHI PUNCTUATION DOUBLE DANDA 𐩗 */, - 0x10A58 /* KHAROSHTHI PUNCTUATION LINES 𐩘 */, - 0x10A7F /* OLD SOUTH ARABIAN NUMERIC INDICATOR 𐩿 */, - 0x10AF0 /* MANICHAEAN PUNCTUATION STAR 𐫰 */, - 0x10AF1 /* MANICHAEAN PUNCTUATION FLEURON 𐫱 */, - 0x10AF2 /* MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT 𐫲 */, - 0x10AF3 /* MANICHAEAN PUNCTUATION DOT WITHIN DOT 𐫳 */, - 0x10AF4 /* MANICHAEAN PUNCTUATION DOT 𐫴 */, - 0x10AF5 /* MANICHAEAN PUNCTUATION TWO DOTS 𐫵 */, - 0x10AF6 /* MANICHAEAN PUNCTUATION LINE FILLER 𐫶 */, - 0x10B39 /* AVESTAN ABBREVIATION MARK 𐬹 */, - 0x10B3A /* TINY TWO DOTS OVER ONE DOT PUNCTUATION 𐬺 */, - 0x10B3B /* SMALL TWO DOTS OVER ONE DOT PUNCTUATION 𐬻 */, - 0x10B3C /* LARGE TWO DOTS OVER ONE DOT PUNCTUATION 𐬼 */, - 0x10B3D /* LARGE ONE DOT OVER TWO DOTS PUNCTUATION 𐬽 */, - 0x10B3E /* LARGE TWO RINGS OVER ONE RING PUNCTUATION 𐬾 */, - 0x10B3F /* LARGE ONE RING OVER TWO RINGS PUNCTUATION 𐬿 */, - 0x10B99 /* PSALTER PAHLAVI SECTION MARK 𐮙 */, - 0x10B9A /* PSALTER PAHLAVI TURNED SECTION MARK 𐮚 */, - 0x10B9B /* PSALTER PAHLAVI FOUR DOTS WITH CROSS 𐮛 */, - 0x10B9C /* PSALTER PAHLAVI FOUR DOTS WITH DOT 𐮜 */, - 0x10F55 /* SOGDIAN PUNCTUATION TWO VERTICAL BARS 𐽕 */, - 0x10F56 /* SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS 𐽖 */, - 0x10F57 /* SOGDIAN PUNCTUATION CIRCLE WITH DOT 𐽗 */, - 0x10F58 /* SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS 𐽘 */, - 0x10F59 /* SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT 𐽙 */, - 0x11047 /* BRAHMI DANDA 𑁇 */, - 0x11048 /* BRAHMI DOUBLE DANDA 𑁈 */, - 0x11049 /* BRAHMI PUNCTUATION DOT 𑁉 */, - 0x1104A /* BRAHMI PUNCTUATION DOUBLE DOT 𑁊 */, - 0x1104B /* BRAHMI PUNCTUATION LINE 𑁋 */, - 0x1104C /* BRAHMI PUNCTUATION CRESCENT BAR 𑁌 */, - 0x1104D /* BRAHMI PUNCTUATION LOTUS 𑁍 */, - 0x110BB /* KAITHI ABBREVIATION SIGN 𑂻 */, - 0x110BC /* KAITHI ENUMERATION SIGN 𑂼 */, - 0x110BE /* KAITHI SECTION MARK 𑂾 */, - 0x110BF /* KAITHI DOUBLE SECTION MARK 𑂿 */, - 0x110C0 /* KAITHI DANDA 𑃀 */, - 0x110C1 /* KAITHI DOUBLE DANDA 𑃁 */, - 0x11140 /* CHAKMA SECTION MARK 𑅀 */, - 0x11141 /* CHAKMA DANDA 𑅁 */, - 0x11142 /* CHAKMA DOUBLE DANDA 𑅂 */, - 0x11143 /* CHAKMA QUESTION MARK 𑅃 */, - 0x11174 /* MAHAJANI ABBREVIATION SIGN 𑅴 */, - 0x11175 /* MAHAJANI SECTION MARK 𑅵 */, - 0x111C5 /* SHARADA DANDA 𑇅 */, - 0x111C6 /* SHARADA DOUBLE DANDA 𑇆 */, - 0x111C7 /* SHARADA ABBREVIATION SIGN 𑇇 */, - 0x111C8 /* SHARADA SEPARATOR 𑇈 */, - 0x111CD /* SHARADA SUTRA MARK 𑇍 */, - 0x111DB /* SHARADA SIGN SIDDHAM 𑇛 */, - 0x111DD /* SHARADA CONTINUATION SIGN 𑇝 */, - 0x111DE /* SHARADA SECTION MARK-1 𑇞 */, - 0x111DF /* SHARADA SECTION MARK-2 𑇟 */, - 0x11238 /* KHOJKI DANDA 𑈸 */, - 0x11239 /* KHOJKI DOUBLE DANDA 𑈹 */, - 0x1123A /* KHOJKI WORD SEPARATOR 𑈺 */, - 0x1123B /* KHOJKI SECTION MARK 𑈻 */, - 0x1123C /* KHOJKI DOUBLE SECTION MARK 𑈼 */, - 0x1123D /* KHOJKI ABBREVIATION SIGN 𑈽 */, - 0x112A9 /* MULTANI SECTION MARK 𑊩 */, - 0x1144B /* NEWA DANDA 𑑋 */, - 0x1144C /* NEWA DOUBLE DANDA 𑑌 */, - 0x1144D /* NEWA COMMA 𑑍 */, - 0x1144E /* NEWA GAP FILLER 𑑎 */, - 0x1144F /* NEWA ABBREVIATION SIGN 𑑏 */, - 0x1145B /* NEWA PLACEHOLDER MARK 𑑛 */, - 0x1145D /* NEWA INSERTION SIGN 𑑝 */, - 0x114C6 /* TIRHUTA ABBREVIATION SIGN 𑓆 */, - 0x115C1 /* SIDDHAM SIGN SIDDHAM 𑗁 */, - 0x115C2 /* SIDDHAM DANDA 𑗂 */, - 0x115C3 /* SIDDHAM DOUBLE DANDA 𑗃 */, - 0x115C4 /* SIDDHAM SEPARATOR DOT 𑗄 */, - 0x115C5 /* SIDDHAM SEPARATOR BAR 𑗅 */, - 0x115C6 /* SIDDHAM REPETITION MARK-1 𑗆 */, - 0x115C7 /* SIDDHAM REPETITION MARK-2 𑗇 */, - 0x115C8 /* SIDDHAM REPETITION MARK-3 𑗈 */, - 0x115C9 /* SIDDHAM END OF TEXT MARK 𑗉 */, - 0x115CA /* SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS 𑗊 */, - 0x115CB /* SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS 𑗋 */, - 0x115CC /* SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS 𑗌 */, - 0x115CD /* SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS 𑗍 */, - 0x115CE /* SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS 𑗎 */, - 0x115CF /* SIDDHAM SECTION MARK DOUBLE RING 𑗏 */, - 0x115D0 /* SIDDHAM SECTION MARK DOUBLE RING WITH RAYS 𑗐 */, - 0x115D1 /* SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS 𑗑 */, - 0x115D2 /* SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS 𑗒 */, - 0x115D3 /* SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS 𑗓 */, - 0x115D4 /* SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS 𑗔 */, - 0x115D5 /* SIDDHAM SECTION MARK WITH CIRCLES AND RAYS 𑗕 */, - 0x115D6 /* SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES 𑗖 */, - 0x115D7 /* SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 𑗗 */, - 0x11641 /* MODI DANDA 𑙁 */, - 0x11642 /* MODI DOUBLE DANDA 𑙂 */, - 0x11643 /* MODI ABBREVIATION SIGN 𑙃 */, - 0x11660 /* MONGOLIAN BIRGA WITH ORNAMENT 𑙠 */, - 0x11661 /* MONGOLIAN ROTATED BIRGA 𑙡 */, - 0x11662 /* MONGOLIAN DOUBLE BIRGA WITH ORNAMENT 𑙢 */, - 0x11663 /* MONGOLIAN TRIPLE BIRGA WITH ORNAMENT 𑙣 */, - 0x11664 /* MONGOLIAN BIRGA WITH DOUBLE ORNAMENT 𑙤 */, - 0x11665 /* MONGOLIAN ROTATED BIRGA WITH ORNAMENT 𑙥 */, - 0x11666 /* MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT 𑙦 */, - 0x11667 /* MONGOLIAN INVERTED BIRGA 𑙧 */, - 0x11668 /* MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT 𑙨 */, - 0x11669 /* MONGOLIAN SWIRL BIRGA 𑙩 */, - 0x1166A /* MONGOLIAN SWIRL BIRGA WITH ORNAMENT 𑙪 */, - 0x1166B /* MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT 𑙫 */, - 0x1166C /* MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT 𑙬 */, - 0x1173C /* AHOM SIGN SMALL SECTION 𑜼 */, - 0x1173D /* AHOM SIGN SECTION 𑜽 */, - 0x1173E /* AHOM SIGN RULAI 𑜾 */, - 0x1183B /* DOGRA ABBREVIATION SIGN 𑠻 */, - 0x119E2 /* NANDINAGARI SIGN SIDDHAM 𑧢 */, - 0x11A3F /* ZANABAZAR SQUARE INITIAL HEAD MARK 𑨿 */, - 0x11A40 /* ZANABAZAR SQUARE CLOSING HEAD MARK 𑩀 */, - 0x11A41 /* ZANABAZAR SQUARE MARK TSHEG 𑩁 */, - 0x11A42 /* ZANABAZAR SQUARE MARK SHAD 𑩂 */, - 0x11A43 /* ZANABAZAR SQUARE MARK DOUBLE SHAD 𑩃 */, - 0x11A44 /* ZANABAZAR SQUARE MARK LONG TSHEG 𑩄 */, - 0x11A45 /* ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK 𑩅 */, - 0x11A46 /* ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK 𑩆 */, - 0x11A9A /* SOYOMBO MARK TSHEG 𑪚 */, - 0x11A9B /* SOYOMBO MARK SHAD 𑪛 */, - 0x11A9C /* SOYOMBO MARK DOUBLE SHAD 𑪜 */, - 0x11A9E /* SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME 𑪞 */, - 0x11A9F /* SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME 𑪟 */, - 0x11AA0 /* SOYOMBO HEAD MARK WITH MOON AND SUN 𑪠 */, - 0x11AA1 /* SOYOMBO TERMINAL MARK-1 𑪡 */, - 0x11AA2 /* SOYOMBO TERMINAL MARK-2 𑪢 */, - 0x11C41 /* BHAIKSUKI DANDA 𑱁 */, - 0x11C42 /* BHAIKSUKI DOUBLE DANDA 𑱂 */, - 0x11C43 /* BHAIKSUKI WORD SEPARATOR 𑱃 */, - 0x11C44 /* BHAIKSUKI GAP FILLER-1 𑱄 */, - 0x11C45 /* BHAIKSUKI GAP FILLER-2 𑱅 */, - 0x11C70 /* MARCHEN HEAD MARK 𑱰 */, - 0x11C71 /* MARCHEN MARK SHAD 𑱱 */, - 0x11EF7 /* MAKASAR PASSIMBANG 𑻷 */, - 0x11EF8 /* MAKASAR END OF SECTION 𑻸 */, - 0x11FFF /* TAMIL PUNCTUATION END OF TEXT 𑿿 */, - 0x12470 /* CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER 𒑰 */, - 0x12471 /* CUNEIFORM PUNCTUATION SIGN VERTICAL COLON 𒑱 */, - 0x12472 /* CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON 𒑲 */, - 0x12473 /* CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON 𒑳 */, - 0x12474 /* CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 𒑴 */, - 0x16A6E /* MRO DANDA 𖩮 */, - 0x16A6F /* MRO DOUBLE DANDA 𖩯 */, - 0x16AF5 /* BASSA VAH FULL STOP 𖫵 */, - 0x16B37 /* PAHAWH HMONG SIGN VOS THOM 𖬷 */, - 0x16B38 /* PAHAWH HMONG SIGN VOS TSHAB CEEB 𖬸 */, - 0x16B39 /* PAHAWH HMONG SIGN CIM CHEEM 𖬹 */, - 0x16B3A /* PAHAWH HMONG SIGN VOS THIAB 𖬺 */, - 0x16B3B /* PAHAWH HMONG SIGN VOS FEEM 𖬻 */, - 0x16B44 /* PAHAWH HMONG SIGN XAUS 𖭄 */, - 0x16E97 /* MEDEFAIDRIN COMMA 𖺗 */, - 0x16E98 /* MEDEFAIDRIN FULL STOP 𖺘 */, - 0x16E99 /* MEDEFAIDRIN SYMBOL AIVA 𖺙 */, - 0x16E9A /* MEDEFAIDRIN EXCLAMATION OH 𖺚 */, - 0x16FE2 /* OLD CHINESE HOOK MARK 𖿢 */, - 0x1BC9F /* DUPLOYAN PUNCTUATION CHINOOK FULL STOP 𛲟 */, - 0x1DA87 /* SIGNWRITING COMMA 𝪇 */, - 0x1DA88 /* SIGNWRITING FULL STOP 𝪈 */, - 0x1DA89 /* SIGNWRITING SEMICOLON 𝪉 */, - 0x1DA8A /* SIGNWRITING COLON 𝪊 */, - 0x1DA8B /* SIGNWRITING PARENTHESIS 𝪋 */, - 0x1E95E /* ADLAM INITIAL EXCLAMATION MARK 𞥞 */, - 0x1E95F /* ADLAM INITIAL QUESTION MARK */, + 0x0021, // EXCLAMATION MARK ! + 0x0022, // QUOTATION MARK " + 0x0023, // NUMBER SIGN # + 0x0025, // PERCENT SIGN % + 0x0026, // AMPERSAND & + 0x0027, // APOSTROPHE ' + 0x002A, // ASTERISK * + 0x002C, // COMMA , + 0x002E, // FULL STOP . + 0x002F, // SOLIDUS / + 0x003A, // COLON : + 0x003B, // SEMICOLON ; + 0x003F, // QUESTION MARK ? + 0x0040, // COMMERCIAL AT @ + 0x005C, // REVERSE SOLIDUS \ + 0x00A1, // INVERTED EXCLAMATION MARK ¡ + 0x00A7, // SECTION SIGN § + 0x00B6, // PILCROW SIGN ¶ + 0x00B7, // MIDDLE DOT · + 0x00BF, // INVERTED QUESTION MARK ¿ + 0x037E, // GREEK QUESTION MARK ; + 0x0387, // GREEK ANO TELEIA · + 0x055A, // ARMENIAN APOSTROPHE ՚ + 0x055B, // ARMENIAN EMPHASIS MARK ՛ + 0x055C, // ARMENIAN EXCLAMATION MARK ՜ + 0x055D, // ARMENIAN COMMA ՝ + 0x055E, // ARMENIAN QUESTION MARK ՞ + 0x055F, // ARMENIAN ABBREVIATION MARK ՟ + 0x0589, // ARMENIAN FULL STOP ։ + 0x05C0, // HEBREW PUNCTUATION PASEQ ׀ + 0x05C3, // HEBREW PUNCTUATION SOF PASUQ ׃ + 0x05C6, // HEBREW PUNCTUATION NUN HAFUKHA ׆ + 0x05F3, // HEBREW PUNCTUATION GERESH ׳ + 0x05F4, // HEBREW PUNCTUATION GERSHAYIM ״ + 0x0609, // ARABIC-INDIC PER MILLE SIGN ؉ + 0x060A, // ARABIC-INDIC PER TEN THOUSAND SIGN ؊ + 0x060C, // ARABIC COMMA ، + 0x060D, // ARABIC DATE SEPARATOR ؍ + 0x061B, // ARABIC SEMICOLON ؛ + 0x061E, // ARABIC TRIPLE DOT PUNCTUATION MARK ؞ + 0x061F, // ARABIC QUESTION MARK ؟ + 0x066A, // ARABIC PERCENT SIGN ٪ + 0x066B, // ARABIC DECIMAL SEPARATOR ٫ + 0x066C, // ARABIC THOUSANDS SEPARATOR ٬ + 0x066D, // ARABIC FIVE POINTED STAR ٭ + 0x06D4, // ARABIC FULL STOP ۔ + 0x0700, // SYRIAC END OF PARAGRAPH ܀ + 0x0701, // SYRIAC SUPRALINEAR FULL STOP ܁ + 0x0702, // SYRIAC SUBLINEAR FULL STOP ܂ + 0x0703, // SYRIAC SUPRALINEAR COLON ܃ + 0x0704, // SYRIAC SUBLINEAR COLON ܄ + 0x0705, // SYRIAC HORIZONTAL COLON ܅ + 0x0706, // SYRIAC COLON SKEWED LEFT ܆ + 0x0707, // SYRIAC COLON SKEWED RIGHT ܇ + 0x0708, // SYRIAC SUPRALINEAR COLON SKEWED LEFT ܈ + 0x0709, // SYRIAC SUBLINEAR COLON SKEWED RIGHT ܉ + 0x070A, // SYRIAC CONTRACTION ܊ + 0x070B, // SYRIAC HARKLEAN OBELUS ܋ + 0x070C, // SYRIAC HARKLEAN METOBELUS ܌ + 0x070D, // SYRIAC HARKLEAN ASTERISCUS ܍ + 0x07F7, // NKO SYMBOL GBAKURUNEN ߷ + 0x07F8, // NKO COMMA ߸ + 0x07F9, // NKO EXCLAMATION MARK ߹ + 0x0830, // SAMARITAN PUNCTUATION NEQUDAA ࠰ + 0x0831, // SAMARITAN PUNCTUATION AFSAAQ ࠱ + 0x0832, // SAMARITAN PUNCTUATION ANGED ࠲ + 0x0833, // SAMARITAN PUNCTUATION BAU ࠳ + 0x0834, // SAMARITAN PUNCTUATION ATMAAU ࠴ + 0x0835, // SAMARITAN PUNCTUATION SHIYYAALAA ࠵ + 0x0836, // SAMARITAN ABBREVIATION MARK ࠶ + 0x0837, // SAMARITAN PUNCTUATION MELODIC QITSA ࠷ + 0x0838, // SAMARITAN PUNCTUATION ZIQAA ࠸ + 0x0839, // SAMARITAN PUNCTUATION QITSA ࠹ + 0x083A, // SAMARITAN PUNCTUATION ZAEF ࠺ + 0x083B, // SAMARITAN PUNCTUATION TURU ࠻ + 0x083C, // SAMARITAN PUNCTUATION ARKAANU ࠼ + 0x083D, // SAMARITAN PUNCTUATION SOF MASHFAAT ࠽ + 0x083E, // SAMARITAN PUNCTUATION ANNAAU ࠾ + 0x085E, // MANDAIC PUNCTUATION ࡞ + 0x0964, // DEVANAGARI DANDA । + 0x0965, // DEVANAGARI DOUBLE DANDA ॥ + 0x0970, // DEVANAGARI ABBREVIATION SIGN ॰ + 0x09FD, // BENGALI ABBREVIATION SIGN ৽ + 0x0A76, // GURMUKHI ABBREVIATION SIGN ੶ + 0x0AF0, // GUJARATI ABBREVIATION SIGN ૰ + 0x0C77, // TELUGU SIGN SIDDHAM ౷ + 0x0C84, // KANNADA SIGN SIDDHAM ಄ + 0x0DF4, // SINHALA PUNCTUATION KUNDDALIYA ෴ + 0x0E4F, // THAI CHARACTER FONGMAN ๏ + 0x0E5A, // THAI CHARACTER ANGKHANKHU ๚ + 0x0E5B, // THAI CHARACTER KHOMUT ๛ + 0x0F04, // TIBETAN MARK INITIAL YIG MGO MDUN MA ༄ + 0x0F05, // TIBETAN MARK CLOSING YIG MGO SGAB MA ༅ + 0x0F06, // TIBETAN MARK CARET YIG MGO PHUR SHAD MA ༆ + 0x0F07, // TIBETAN MARK YIG MGO TSHEG SHAD MA ༇ + 0x0F08, // TIBETAN MARK SBRUL SHAD ༈ + 0x0F09, // TIBETAN MARK BSKUR YIG MGO ༉ + 0x0F0A, // TIBETAN MARK BKA- SHOG YIG MGO ༊ + 0x0F0B, // TIBETAN MARK INTERSYLLABIC TSHEG ་ + 0x0F0C, // TIBETAN MARK DELIMITER TSHEG BSTAR ༌ + 0x0F0D, // TIBETAN MARK SHAD ། + 0x0F0E, // TIBETAN MARK NYIS SHAD ༎ + 0x0F0F, // TIBETAN MARK TSHEG SHAD ༏ + 0x0F10, // TIBETAN MARK NYIS TSHEG SHAD ༐ + 0x0F11, // TIBETAN MARK RIN CHEN SPUNGS SHAD ༑ + 0x0F12, // TIBETAN MARK RGYA GRAM SHAD ༒ + 0x0F14, // TIBETAN MARK GTER TSHEG ༔ + 0x0F85, // TIBETAN MARK PALUTA ྅ + 0x0FD0, // TIBETAN MARK BSKA- SHOG GI MGO RGYAN ࿐ + 0x0FD1, // TIBETAN MARK MNYAM YIG GI MGO RGYAN ࿑ + 0x0FD2, // TIBETAN MARK NYIS TSHEG ࿒ + 0x0FD3, // TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA ࿓ + 0x0FD4, // TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA ࿔ + 0x0FD9, // TIBETAN MARK LEADING MCHAN RTAGS ࿙ + 0x0FDA, // TIBETAN MARK TRAILING MCHAN RTAGS ࿚ + 0x104A, // MYANMAR SIGN LITTLE SECTION ၊ + 0x104B, // MYANMAR SIGN SECTION ။ + 0x104C, // MYANMAR SYMBOL LOCATIVE ၌ + 0x104D, // MYANMAR SYMBOL COMPLETED ၍ + 0x104E, // MYANMAR SYMBOL AFOREMENTIONED ၎ + 0x104F, // MYANMAR SYMBOL GENITIVE ၏ + 0x10FB, // GEORGIAN PARAGRAPH SEPARATOR ჻ + 0x1360, // ETHIOPIC SECTION MARK ፠ + 0x1361, // ETHIOPIC WORDSPACE ፡ + 0x1362, // ETHIOPIC FULL STOP ። + 0x1363, // ETHIOPIC COMMA ፣ + 0x1364, // ETHIOPIC SEMICOLON ፤ + 0x1365, // ETHIOPIC COLON ፥ + 0x1366, // ETHIOPIC PREFACE COLON ፦ + 0x1367, // ETHIOPIC QUESTION MARK ፧ + 0x1368, // ETHIOPIC PARAGRAPH SEPARATOR ፨ + 0x166E, // CANADIAN SYLLABICS FULL STOP ᙮ + 0x16EB, // RUNIC SINGLE PUNCTUATION ᛫ + 0x16EC, // RUNIC MULTIPLE PUNCTUATION ᛬ + 0x16ED, // RUNIC CROSS PUNCTUATION ᛭ + 0x1735, // PHILIPPINE SINGLE PUNCTUATION ᜵ + 0x1736, // PHILIPPINE DOUBLE PUNCTUATION ᜶ + 0x17D4, // KHMER SIGN KHAN ។ + 0x17D5, // KHMER SIGN BARIYOOSAN ៕ + 0x17D6, // KHMER SIGN CAMNUC PII KUUH ៖ + 0x17D8, // KHMER SIGN BEYYAL ៘ + 0x17D9, // KHMER SIGN PHNAEK MUAN ៙ + 0x17DA, // KHMER SIGN KOOMUUT ៚ + 0x1800, // MONGOLIAN BIRGA ᠀ + 0x1801, // MONGOLIAN ELLIPSIS ᠁ + 0x1802, // MONGOLIAN COMMA ᠂ + 0x1803, // MONGOLIAN FULL STOP ᠃ + 0x1804, // MONGOLIAN COLON ᠄ + 0x1805, // MONGOLIAN FOUR DOTS ᠅ + 0x1807, // MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER ᠇ + 0x1808, // MONGOLIAN MANCHU COMMA ᠈ + 0x1809, // MONGOLIAN MANCHU FULL STOP ᠉ + 0x180A, // MONGOLIAN NIRUGU ᠊ + 0x1944, // LIMBU EXCLAMATION MARK ᥄ + 0x1945, // LIMBU QUESTION MARK ᥅ + 0x1A1E, // BUGINESE PALLAWA ᨞ + 0x1A1F, // BUGINESE END OF SECTION ᨟ + 0x1AA0, // TAI THAM SIGN WIANG ᪠ + 0x1AA1, // TAI THAM SIGN WIANGWAAK ᪡ + 0x1AA2, // TAI THAM SIGN SAWAN ᪢ + 0x1AA3, // TAI THAM SIGN KEOW ᪣ + 0x1AA4, // TAI THAM SIGN HOY ᪤ + 0x1AA5, // TAI THAM SIGN DOKMAI ᪥ + 0x1AA6, // TAI THAM SIGN REVERSED ROTATED RANA ᪦ + 0x1AA8, // TAI THAM SIGN KAAN ᪨ + 0x1AA9, // TAI THAM SIGN KAANKUU ᪩ + 0x1AAA, // TAI THAM SIGN SATKAAN ᪪ + 0x1AAB, // TAI THAM SIGN SATKAANKUU ᪫ + 0x1AAC, // TAI THAM SIGN HANG ᪬ + 0x1AAD, // TAI THAM SIGN CAANG ᪭ + 0x1B5A, // BALINESE PANTI ᭚ + 0x1B5B, // BALINESE PAMADA ᭛ + 0x1B5C, // BALINESE WINDU ᭜ + 0x1B5D, // BALINESE CARIK PAMUNGKAH ᭝ + 0x1B5E, // BALINESE CARIK SIKI ᭞ + 0x1B5F, // BALINESE CARIK PAREREN ᭟ + 0x1B60, // BALINESE PAMENENG ᭠ + 0x1BFC, // BATAK SYMBOL BINDU NA METEK ᯼ + 0x1BFD, // BATAK SYMBOL BINDU PINARBORAS ᯽ + 0x1BFE, // BATAK SYMBOL BINDU JUDUL ᯾ + 0x1BFF, // BATAK SYMBOL BINDU PANGOLAT ᯿ + 0x1C3B, // LEPCHA PUNCTUATION TA-ROL ᰻ + 0x1C3C, // LEPCHA PUNCTUATION NYET THYOOM TA-ROL ᰼ + 0x1C3D, // LEPCHA PUNCTUATION CER-WA ᰽ + 0x1C3E, // LEPCHA PUNCTUATION TSHOOK CER-WA ᰾ + 0x1C3F, // LEPCHA PUNCTUATION TSHOOK ᰿ + 0x1C7E, // OL CHIKI PUNCTUATION MUCAAD ᱾ + 0x1C7F, // OL CHIKI PUNCTUATION DOUBLE MUCAAD ᱿ + 0x1CC0, // SUNDANESE PUNCTUATION BINDU SURYA ᳀ + 0x1CC1, // SUNDANESE PUNCTUATION BINDU PANGLONG ᳁ + 0x1CC2, // SUNDANESE PUNCTUATION BINDU PURNAMA ᳂ + 0x1CC3, // SUNDANESE PUNCTUATION BINDU CAKRA ᳃ + 0x1CC4, // SUNDANESE PUNCTUATION BINDU LEU SATANGA ᳄ + 0x1CC5, // SUNDANESE PUNCTUATION BINDU KA SATANGA ᳅ + 0x1CC6, // SUNDANESE PUNCTUATION BINDU DA SATANGA ᳆ + 0x1CC7, // SUNDANESE PUNCTUATION BINDU BA SATANGA ᳇ + 0x1CD3, // VEDIC SIGN NIHSHVASA ᳓ + 0x2016, // DOUBLE VERTICAL LINE ‖ + 0x2017, // DOUBLE LOW LINE ‗ + 0x2020, // DAGGER † + 0x2021, // DOUBLE DAGGER ‡ + 0x2022, // BULLET • + 0x2023, // TRIANGULAR BULLET ‣ + 0x2024, // ONE DOT LEADER ․ + 0x2025, // TWO DOT LEADER ‥ + 0x2026, // HORIZONTAL ELLIPSIS … + 0x2027, // HYPHENATION POINT ‧ + 0x2030, // PER MILLE SIGN ‰ + 0x2031, // PER TEN THOUSAND SIGN ‱ + 0x2032, // PRIME ′ + 0x2033, // DOUBLE PRIME ″ + 0x2034, // TRIPLE PRIME ‴ + 0x2035, // REVERSED PRIME ‵ + 0x2036, // REVERSED DOUBLE PRIME ‶ + 0x2037, // REVERSED TRIPLE PRIME ‷ + 0x2038, // CARET ‸ + 0x203B, // REFERENCE MARK ※ + 0x203C, // DOUBLE EXCLAMATION MARK ‼ + 0x203D, // INTERROBANG ‽ + 0x203E, // OVERLINE ‾ + 0x2041, // CARET INSERTION POINT ⁁ + 0x2042, // ASTERISM ⁂ + 0x2043, // HYPHEN BULLET ⁃ + 0x2047, // DOUBLE QUESTION MARK ⁇ + 0x2048, // QUESTION EXCLAMATION MARK ⁈ + 0x2049, // EXCLAMATION QUESTION MARK ⁉ + 0x204A, // TIRONIAN SIGN ET ⁊ + 0x204B, // REVERSED PILCROW SIGN ⁋ + 0x204C, // BLACK LEFTWARDS BULLET ⁌ + 0x204D, // BLACK RIGHTWARDS BULLET ⁍ + 0x204E, // LOW ASTERISK ⁎ + 0x204F, // REVERSED SEMICOLON ⁏ + 0x2050, // CLOSE UP ⁐ + 0x2051, // TWO ASTERISKS ALIGNED VERTICALLY ⁑ + 0x2053, // SWUNG DASH ⁓ + 0x2055, // FLOWER PUNCTUATION MARK ⁕ + 0x2056, // THREE DOT PUNCTUATION ⁖ + 0x2057, // QUADRUPLE PRIME ⁗ + 0x2058, // FOUR DOT PUNCTUATION ⁘ + 0x2059, // FIVE DOT PUNCTUATION ⁙ + 0x205A, // TWO DOT PUNCTUATION ⁚ + 0x205B, // FOUR DOT MARK ⁛ + 0x205C, // DOTTED CROSS ⁜ + 0x205D, // TRICOLON ⁝ + 0x205E, // VERTICAL FOUR DOTS ⁞ + 0x2CF9, // COPTIC OLD NUBIAN FULL STOP ⳹ + 0x2CFA, // COPTIC OLD NUBIAN DIRECT QUESTION MARK ⳺ + 0x2CFB, // COPTIC OLD NUBIAN INDIRECT QUESTION MARK ⳻ + 0x2CFC, // COPTIC OLD NUBIAN VERSE DIVIDER ⳼ + 0x2CFE, // COPTIC FULL STOP ⳾ + 0x2CFF, // COPTIC MORPHOLOGICAL DIVIDER ⳿ + 0x2D70, // TIFINAGH SEPARATOR MARK ⵰ + 0x2E00, // RIGHT ANGLE SUBSTITUTION MARKER ⸀ + 0x2E01, // RIGHT ANGLE DOTTED SUBSTITUTION MARKER ⸁ + 0x2E06, // RAISED INTERPOLATION MARKER ⸆ + 0x2E07, // RAISED DOTTED INTERPOLATION MARKER ⸇ + 0x2E08, // DOTTED TRANSPOSITION MARKER ⸈ + 0x2E0B, // RAISED SQUARE ⸋ + 0x2E0E, // EDITORIAL CORONIS ⸎ + 0x2E0F, // PARAGRAPHOS ⸏ + 0x2E10, // FORKED PARAGRAPHOS ⸐ + 0x2E11, // REVERSED FORKED PARAGRAPHOS ⸑ + 0x2E12, // HYPODIASTOLE ⸒ + 0x2E13, // DOTTED OBELOS ⸓ + 0x2E14, // DOWNWARDS ANCORA ⸔ + 0x2E15, // UPWARDS ANCORA ⸕ + 0x2E16, // DOTTED RIGHT-POINTING ANGLE ⸖ + 0x2E18, // INVERTED INTERROBANG ⸘ + 0x2E19, // PALM BRANCH ⸙ + 0x2E1B, // TILDE WITH RING ABOVE ⸛ + 0x2E1E, // TILDE WITH DOT ABOVE ⸞ + 0x2E1F, // TILDE WITH DOT BELOW ⸟ + 0x2E2A, // TWO DOTS OVER ONE DOT PUNCTUATION ⸪ + 0x2E2B, // ONE DOT OVER TWO DOTS PUNCTUATION ⸫ + 0x2E2C, // SQUARED FOUR DOT PUNCTUATION ⸬ + 0x2E2D, // FIVE DOT MARK ⸭ + 0x2E2E, // REVERSED QUESTION MARK ⸮ + 0x2E30, // RING POINT ⸰ + 0x2E31, // WORD SEPARATOR MIDDLE DOT ⸱ + 0x2E32, // TURNED COMMA ⸲ + 0x2E33, // RAISED DOT ⸳ + 0x2E34, // RAISED COMMA ⸴ + 0x2E35, // TURNED SEMICOLON ⸵ + 0x2E36, // DAGGER WITH LEFT GUARD ⸶ + 0x2E37, // DAGGER WITH RIGHT GUARD ⸷ + 0x2E38, // TURNED DAGGER ⸸ + 0x2E39, // TOP HALF SECTION SIGN ⸹ + 0x2E3C, // STENOGRAPHIC FULL STOP ⸼ + 0x2E3D, // VERTICAL SIX DOTS ⸽ + 0x2E3E, // WIGGLY VERTICAL LINE ⸾ + 0x2E3F, // CAPITULUM ⸿ + 0x2E41, // REVERSED COMMA ⹁ + 0x2E43, // DASH WITH LEFT UPTURN ⹃ + 0x2E44, // DOUBLE SUSPENSION MARK ⹄ + 0x2E45, // INVERTED LOW KAVYKA ⹅ + 0x2E46, // INVERTED LOW KAVYKA WITH KAVYKA ABOVE ⹆ + 0x2E47, // LOW KAVYKA ⹇ + 0x2E48, // LOW KAVYKA WITH DOT ⹈ + 0x2E49, // DOUBLE STACKED COMMA ⹉ + 0x2E4A, // DOTTED SOLIDUS ⹊ + 0x2E4B, // TRIPLE DAGGER ⹋ + 0x2E4C, // MEDIEVAL COMMA ⹌ + 0x2E4D, // PARAGRAPHUS MARK ⹍ + 0x2E4E, // PUNCTUS ELEVATUS MARK ⹎ + 0x2E4F, // CORNISH VERSE DIVIDER ⹏ + 0x3001, // IDEOGRAPHIC COMMA 、 + 0x3002, // IDEOGRAPHIC FULL STOP 。 + 0x3003, // DITTO MARK 〃 + 0x303D, // PART ALTERNATION MARK 〽 + 0x30FB, // KATAKANA MIDDLE DOT ・ + 0xA4FE, // LISU PUNCTUATION COMMA ꓾ + 0xA4FF, // LISU PUNCTUATION FULL STOP ꓿ + 0xA60D, // VAI COMMA ꘍ + 0xA60E, // VAI FULL STOP ꘎ + 0xA60F, // VAI QUESTION MARK ꘏ + 0xA673, // SLAVONIC ASTERISK ꙳ + 0xA67E, // CYRILLIC KAVYKA ꙾ + 0xA6F2, // BAMUM NJAEMLI ꛲ + 0xA6F3, // BAMUM FULL STOP ꛳ + 0xA6F4, // BAMUM COLON ꛴ + 0xA6F5, // BAMUM COMMA ꛵ + 0xA6F6, // BAMUM SEMICOLON ꛶ + 0xA6F7, // BAMUM QUESTION MARK ꛷ + 0xA874, // PHAGS-PA SINGLE HEAD MARK ꡴ + 0xA875, // PHAGS-PA DOUBLE HEAD MARK ꡵ + 0xA876, // PHAGS-PA MARK SHAD ꡶ + 0xA877, // PHAGS-PA MARK DOUBLE SHAD ꡷ + 0xA8CE, // SAURASHTRA DANDA ꣎ + 0xA8CF, // SAURASHTRA DOUBLE DANDA ꣏ + 0xA8F8, // DEVANAGARI SIGN PUSHPIKA ꣸ + 0xA8F9, // DEVANAGARI GAP FILLER ꣹ + 0xA8FA, // DEVANAGARI CARET ꣺ + 0xA8FC, // DEVANAGARI SIGN SIDDHAM ꣼ + 0xA92E, // KAYAH LI SIGN CWI ꤮ + 0xA92F, // KAYAH LI SIGN SHYA ꤯ + 0xA95F, // REJANG SECTION MARK ꥟ + 0xA9C1, // JAVANESE LEFT RERENGGAN ꧁ + 0xA9C2, // JAVANESE RIGHT RERENGGAN ꧂ + 0xA9C3, // JAVANESE PADA ANDAP ꧃ + 0xA9C4, // JAVANESE PADA MADYA ꧄ + 0xA9C5, // JAVANESE PADA LUHUR ꧅ + 0xA9C6, // JAVANESE PADA WINDU ꧆ + 0xA9C7, // JAVANESE PADA PANGKAT ꧇ + 0xA9C8, // JAVANESE PADA LINGSA ꧈ + 0xA9C9, // JAVANESE PADA LUNGSI ꧉ + 0xA9CA, // JAVANESE PADA ADEG ꧊ + 0xA9CB, // JAVANESE PADA ADEG ADEG ꧋ + 0xA9CC, // JAVANESE PADA PISELEH ꧌ + 0xA9CD, // JAVANESE TURNED PADA PISELEH ꧍ + 0xA9DE, // JAVANESE PADA TIRTA TUMETES ꧞ + 0xA9DF, // JAVANESE PADA ISEN-ISEN ꧟ + 0xAA5C, // CHAM PUNCTUATION SPIRAL ꩜ + 0xAA5D, // CHAM PUNCTUATION DANDA ꩝ + 0xAA5E, // CHAM PUNCTUATION DOUBLE DANDA ꩞ + 0xAA5F, // CHAM PUNCTUATION TRIPLE DANDA ꩟ + 0xAADE, // TAI VIET SYMBOL HO HOI ꫞ + 0xAADF, // TAI VIET SYMBOL KOI KOI ꫟ + 0xAAF0, // MEETEI MAYEK CHEIKHAN ꫰ + 0xAAF1, // MEETEI MAYEK AHANG KHUDAM ꫱ + 0xABEB, // MEETEI MAYEK CHEIKHEI ꯫ + 0xFE10, // PRESENTATION FORM FOR VERTICAL COMMA ︐ + 0xFE11, // PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA ︑ + 0xFE12, // PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP ︒ + 0xFE13, // PRESENTATION FORM FOR VERTICAL COLON ︓ + 0xFE14, // PRESENTATION FORM FOR VERTICAL SEMICOLON ︔ + 0xFE15, // PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK ︕ + 0xFE16, // PRESENTATION FORM FOR VERTICAL QUESTION MARK ︖ + 0xFE19, // PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS ︙ + 0xFE30, // PRESENTATION FORM FOR VERTICAL TWO DOT LEADER ︰ + 0xFE45, // SESAME DOT ﹅ + 0xFE46, // WHITE SESAME DOT ﹆ + 0xFE49, // DASHED OVERLINE ﹉ + 0xFE4A, // CENTRELINE OVERLINE ﹊ + 0xFE4B, // WAVY OVERLINE ﹋ + 0xFE4C, // DOUBLE WAVY OVERLINE ﹌ + 0xFE50, // SMALL COMMA ﹐ + 0xFE51, // SMALL IDEOGRAPHIC COMMA ﹑ + 0xFE52, // SMALL FULL STOP ﹒ + 0xFE54, // SMALL SEMICOLON ﹔ + 0xFE55, // SMALL COLON ﹕ + 0xFE56, // SMALL QUESTION MARK ﹖ + 0xFE57, // SMALL EXCLAMATION MARK ﹗ + 0xFE5F, // SMALL NUMBER SIGN ﹟ + 0xFE60, // SMALL AMPERSAND ﹠ + 0xFE61, // SMALL ASTERISK ﹡ + 0xFE68, // SMALL REVERSE SOLIDUS ﹨ + 0xFE6A, // SMALL PERCENT SIGN ﹪ + 0xFE6B, // SMALL COMMERCIAL AT ﹫ + 0xFF01, // FULLWIDTH EXCLAMATION MARK ! + 0xFF02, // FULLWIDTH QUOTATION MARK " + 0xFF03, // FULLWIDTH NUMBER SIGN # + 0xFF05, // FULLWIDTH PERCENT SIGN % + 0xFF06, // FULLWIDTH AMPERSAND & + 0xFF07, // FULLWIDTH APOSTROPHE ' + 0xFF0A, // FULLWIDTH ASTERISK * + 0xFF0C, // FULLWIDTH COMMA , + 0xFF0E, // FULLWIDTH FULL STOP . + 0xFF0F, // FULLWIDTH SOLIDUS / + 0xFF1A, // FULLWIDTH COLON : + 0xFF1B, // FULLWIDTH SEMICOLON ; + 0xFF1F, // FULLWIDTH QUESTION MARK ? + 0xFF20, // FULLWIDTH COMMERCIAL AT @ + 0xFF3C, // FULLWIDTH REVERSE SOLIDUS \ + 0xFF61, // HALFWIDTH IDEOGRAPHIC FULL STOP 。 + 0xFF64, // HALFWIDTH IDEOGRAPHIC COMMA 、 + 0xFF65, // HALFWIDTH KATAKANA MIDDLE DOT ・ + 0x10100, // AEGEAN WORD SEPARATOR LINE 𐄀 + 0x10101, // AEGEAN WORD SEPARATOR DOT 𐄁 + 0x10102, // AEGEAN CHECK MARK 𐄂 + 0x1039F, // UGARITIC WORD DIVIDER 𐎟 + 0x103D0, // OLD PERSIAN WORD DIVIDER 𐏐 + 0x1056F, // CAUCASIAN ALBANIAN CITATION MARK 𐕯 + 0x10857, // IMPERIAL ARAMAIC SECTION SIGN 𐡗 + 0x1091F, // PHOENICIAN WORD SEPARATOR 𐤟 + 0x1093F, // LYDIAN TRIANGULAR MARK 𐤿 + 0x10A50, // KHAROSHTHI PUNCTUATION DOT 𐩐 + 0x10A51, // KHAROSHTHI PUNCTUATION SMALL CIRCLE 𐩑 + 0x10A52, // KHAROSHTHI PUNCTUATION CIRCLE 𐩒 + 0x10A53, // KHAROSHTHI PUNCTUATION CRESCENT BAR 𐩓 + 0x10A54, // KHAROSHTHI PUNCTUATION MANGALAM 𐩔 + 0x10A55, // KHAROSHTHI PUNCTUATION LOTUS 𐩕 + 0x10A56, // KHAROSHTHI PUNCTUATION DANDA 𐩖 + 0x10A57, // KHAROSHTHI PUNCTUATION DOUBLE DANDA 𐩗 + 0x10A58, // KHAROSHTHI PUNCTUATION LINES 𐩘 + 0x10A7F, // OLD SOUTH ARABIAN NUMERIC INDICATOR 𐩿 + 0x10AF0, // MANICHAEAN PUNCTUATION STAR 𐫰 + 0x10AF1, // MANICHAEAN PUNCTUATION FLEURON 𐫱 + 0x10AF2, // MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT 𐫲 + 0x10AF3, // MANICHAEAN PUNCTUATION DOT WITHIN DOT 𐫳 + 0x10AF4, // MANICHAEAN PUNCTUATION DOT 𐫴 + 0x10AF5, // MANICHAEAN PUNCTUATION TWO DOTS 𐫵 + 0x10AF6, // MANICHAEAN PUNCTUATION LINE FILLER 𐫶 + 0x10B39, // AVESTAN ABBREVIATION MARK 𐬹 + 0x10B3A, // TINY TWO DOTS OVER ONE DOT PUNCTUATION 𐬺 + 0x10B3B, // SMALL TWO DOTS OVER ONE DOT PUNCTUATION 𐬻 + 0x10B3C, // LARGE TWO DOTS OVER ONE DOT PUNCTUATION 𐬼 + 0x10B3D, // LARGE ONE DOT OVER TWO DOTS PUNCTUATION 𐬽 + 0x10B3E, // LARGE TWO RINGS OVER ONE RING PUNCTUATION 𐬾 + 0x10B3F, // LARGE ONE RING OVER TWO RINGS PUNCTUATION 𐬿 + 0x10B99, // PSALTER PAHLAVI SECTION MARK 𐮙 + 0x10B9A, // PSALTER PAHLAVI TURNED SECTION MARK 𐮚 + 0x10B9B, // PSALTER PAHLAVI FOUR DOTS WITH CROSS 𐮛 + 0x10B9C, // PSALTER PAHLAVI FOUR DOTS WITH DOT 𐮜 + 0x10F55, // SOGDIAN PUNCTUATION TWO VERTICAL BARS 𐽕 + 0x10F56, // SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS 𐽖 + 0x10F57, // SOGDIAN PUNCTUATION CIRCLE WITH DOT 𐽗 + 0x10F58, // SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS 𐽘 + 0x10F59, // SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT 𐽙 + 0x11047, // BRAHMI DANDA 𑁇 + 0x11048, // BRAHMI DOUBLE DANDA 𑁈 + 0x11049, // BRAHMI PUNCTUATION DOT 𑁉 + 0x1104A, // BRAHMI PUNCTUATION DOUBLE DOT 𑁊 + 0x1104B, // BRAHMI PUNCTUATION LINE 𑁋 + 0x1104C, // BRAHMI PUNCTUATION CRESCENT BAR 𑁌 + 0x1104D, // BRAHMI PUNCTUATION LOTUS 𑁍 + 0x110BB, // KAITHI ABBREVIATION SIGN 𑂻 + 0x110BC, // KAITHI ENUMERATION SIGN 𑂼 + 0x110BE, // KAITHI SECTION MARK 𑂾 + 0x110BF, // KAITHI DOUBLE SECTION MARK 𑂿 + 0x110C0, // KAITHI DANDA 𑃀 + 0x110C1, // KAITHI DOUBLE DANDA 𑃁 + 0x11140, // CHAKMA SECTION MARK 𑅀 + 0x11141, // CHAKMA DANDA 𑅁 + 0x11142, // CHAKMA DOUBLE DANDA 𑅂 + 0x11143, // CHAKMA QUESTION MARK 𑅃 + 0x11174, // MAHAJANI ABBREVIATION SIGN 𑅴 + 0x11175, // MAHAJANI SECTION MARK 𑅵 + 0x111C5, // SHARADA DANDA 𑇅 + 0x111C6, // SHARADA DOUBLE DANDA 𑇆 + 0x111C7, // SHARADA ABBREVIATION SIGN 𑇇 + 0x111C8, // SHARADA SEPARATOR 𑇈 + 0x111CD, // SHARADA SUTRA MARK 𑇍 + 0x111DB, // SHARADA SIGN SIDDHAM 𑇛 + 0x111DD, // SHARADA CONTINUATION SIGN 𑇝 + 0x111DE, // SHARADA SECTION MARK-1 𑇞 + 0x111DF, // SHARADA SECTION MARK-2 𑇟 + 0x11238, // KHOJKI DANDA 𑈸 + 0x11239, // KHOJKI DOUBLE DANDA 𑈹 + 0x1123A, // KHOJKI WORD SEPARATOR 𑈺 + 0x1123B, // KHOJKI SECTION MARK 𑈻 + 0x1123C, // KHOJKI DOUBLE SECTION MARK 𑈼 + 0x1123D, // KHOJKI ABBREVIATION SIGN 𑈽 + 0x112A9, // MULTANI SECTION MARK 𑊩 + 0x1144B, // NEWA DANDA 𑑋 + 0x1144C, // NEWA DOUBLE DANDA 𑑌 + 0x1144D, // NEWA COMMA 𑑍 + 0x1144E, // NEWA GAP FILLER 𑑎 + 0x1144F, // NEWA ABBREVIATION SIGN 𑑏 + 0x1145B, // NEWA PLACEHOLDER MARK 𑑛 + 0x1145D, // NEWA INSERTION SIGN 𑑝 + 0x114C6, // TIRHUTA ABBREVIATION SIGN 𑓆 + 0x115C1, // SIDDHAM SIGN SIDDHAM 𑗁 + 0x115C2, // SIDDHAM DANDA 𑗂 + 0x115C3, // SIDDHAM DOUBLE DANDA 𑗃 + 0x115C4, // SIDDHAM SEPARATOR DOT 𑗄 + 0x115C5, // SIDDHAM SEPARATOR BAR 𑗅 + 0x115C6, // SIDDHAM REPETITION MARK-1 𑗆 + 0x115C7, // SIDDHAM REPETITION MARK-2 𑗇 + 0x115C8, // SIDDHAM REPETITION MARK-3 𑗈 + 0x115C9, // SIDDHAM END OF TEXT MARK 𑗉 + 0x115CA, // SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS 𑗊 + 0x115CB, // SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS 𑗋 + 0x115CC, // SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS 𑗌 + 0x115CD, // SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS 𑗍 + 0x115CE, // SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS 𑗎 + 0x115CF, // SIDDHAM SECTION MARK DOUBLE RING 𑗏 + 0x115D0, // SIDDHAM SECTION MARK DOUBLE RING WITH RAYS 𑗐 + 0x115D1, // SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS 𑗑 + 0x115D2, // SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS 𑗒 + 0x115D3, // SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS 𑗓 + 0x115D4, // SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS 𑗔 + 0x115D5, // SIDDHAM SECTION MARK WITH CIRCLES AND RAYS 𑗕 + 0x115D6, // SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES 𑗖 + 0x115D7, // SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 𑗗 + 0x11641, // MODI DANDA 𑙁 + 0x11642, // MODI DOUBLE DANDA 𑙂 + 0x11643, // MODI ABBREVIATION SIGN 𑙃 + 0x11660, // MONGOLIAN BIRGA WITH ORNAMENT 𑙠 + 0x11661, // MONGOLIAN ROTATED BIRGA 𑙡 + 0x11662, // MONGOLIAN DOUBLE BIRGA WITH ORNAMENT 𑙢 + 0x11663, // MONGOLIAN TRIPLE BIRGA WITH ORNAMENT 𑙣 + 0x11664, // MONGOLIAN BIRGA WITH DOUBLE ORNAMENT 𑙤 + 0x11665, // MONGOLIAN ROTATED BIRGA WITH ORNAMENT 𑙥 + 0x11666, // MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT 𑙦 + 0x11667, // MONGOLIAN INVERTED BIRGA 𑙧 + 0x11668, // MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT 𑙨 + 0x11669, // MONGOLIAN SWIRL BIRGA 𑙩 + 0x1166A, // MONGOLIAN SWIRL BIRGA WITH ORNAMENT 𑙪 + 0x1166B, // MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT 𑙫 + 0x1166C, // MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT 𑙬 + 0x1173C, // AHOM SIGN SMALL SECTION 𑜼 + 0x1173D, // AHOM SIGN SECTION 𑜽 + 0x1173E, // AHOM SIGN RULAI 𑜾 + 0x1183B, // DOGRA ABBREVIATION SIGN 𑠻 + 0x119E2, // NANDINAGARI SIGN SIDDHAM 𑧢 + 0x11A3F, // ZANABAZAR SQUARE INITIAL HEAD MARK 𑨿 + 0x11A40, // ZANABAZAR SQUARE CLOSING HEAD MARK 𑩀 + 0x11A41, // ZANABAZAR SQUARE MARK TSHEG 𑩁 + 0x11A42, // ZANABAZAR SQUARE MARK SHAD 𑩂 + 0x11A43, // ZANABAZAR SQUARE MARK DOUBLE SHAD 𑩃 + 0x11A44, // ZANABAZAR SQUARE MARK LONG TSHEG 𑩄 + 0x11A45, // ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK 𑩅 + 0x11A46, // ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK 𑩆 + 0x11A9A, // SOYOMBO MARK TSHEG 𑪚 + 0x11A9B, // SOYOMBO MARK SHAD 𑪛 + 0x11A9C, // SOYOMBO MARK DOUBLE SHAD 𑪜 + 0x11A9E, // SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME 𑪞 + 0x11A9F, // SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME 𑪟 + 0x11AA0, // SOYOMBO HEAD MARK WITH MOON AND SUN 𑪠 + 0x11AA1, // SOYOMBO TERMINAL MARK-1 𑪡 + 0x11AA2, // SOYOMBO TERMINAL MARK-2 𑪢 + 0x11C41, // BHAIKSUKI DANDA 𑱁 + 0x11C42, // BHAIKSUKI DOUBLE DANDA 𑱂 + 0x11C43, // BHAIKSUKI WORD SEPARATOR 𑱃 + 0x11C44, // BHAIKSUKI GAP FILLER-1 𑱄 + 0x11C45, // BHAIKSUKI GAP FILLER-2 𑱅 + 0x11C70, // MARCHEN HEAD MARK 𑱰 + 0x11C71, // MARCHEN MARK SHAD 𑱱 + 0x11EF7, // MAKASAR PASSIMBANG 𑻷 + 0x11EF8, // MAKASAR END OF SECTION 𑻸 + 0x11FFF, // TAMIL PUNCTUATION END OF TEXT 𑿿 + 0x12470, // CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER 𒑰 + 0x12471, // CUNEIFORM PUNCTUATION SIGN VERTICAL COLON 𒑱 + 0x12472, // CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON 𒑲 + 0x12473, // CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON 𒑳 + 0x12474, // CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 𒑴 + 0x16A6E, // MRO DANDA 𖩮 + 0x16A6F, // MRO DOUBLE DANDA 𖩯 + 0x16AF5, // BASSA VAH FULL STOP 𖫵 + 0x16B37, // PAHAWH HMONG SIGN VOS THOM 𖬷 + 0x16B38, // PAHAWH HMONG SIGN VOS TSHAB CEEB 𖬸 + 0x16B39, // PAHAWH HMONG SIGN CIM CHEEM 𖬹 + 0x16B3A, // PAHAWH HMONG SIGN VOS THIAB 𖬺 + 0x16B3B, // PAHAWH HMONG SIGN VOS FEEM 𖬻 + 0x16B44, // PAHAWH HMONG SIGN XAUS 𖭄 + 0x16E97, // MEDEFAIDRIN COMMA 𖺗 + 0x16E98, // MEDEFAIDRIN FULL STOP 𖺘 + 0x16E99, // MEDEFAIDRIN SYMBOL AIVA 𖺙 + 0x16E9A, // MEDEFAIDRIN EXCLAMATION OH 𖺚 + 0x16FE2, // OLD CHINESE HOOK MARK 𖿢 + 0x1BC9F, // DUPLOYAN PUNCTUATION CHINOOK FULL STOP 𛲟 + 0x1DA87, // SIGNWRITING COMMA 𝪇 + 0x1DA88, // SIGNWRITING FULL STOP 𝪈 + 0x1DA89, // SIGNWRITING SEMICOLON 𝪉 + 0x1DA8A, // SIGNWRITING COLON 𝪊 + 0x1DA8B, // SIGNWRITING PARENTHESIS 𝪋 + 0x1E95E, // ADLAM INITIAL EXCLAMATION MARK 𞥞 + 0x1E95F, // ADLAM INITIAL QUESTION MARK ] ) diff --git a/vlib/gg/m4/graphic.v b/vlib/gg/m4/graphic.v index 5bae034e70..5963728f7f 100644 --- a/vlib/gg/m4/graphic.v +++ b/vlib/gg/m4/graphic.v @@ -72,10 +72,10 @@ pub fn look_at(eye Vec4, center Vec4, up Vec4) Mat4 { u := (s % f) // vfmt off return Mat4{e: [ - /* [0][0] */ s.e[0], /* [0][1] */ u.e[0], /* [0][2] */ -f.e[0], /* [0][3] */ 0, - /* [1][1] */ s.e[1], /* [1][1] */ u.e[1], /* [1][2] */ -f.e[1], /* [1][3] */ 0, - /* [2][0] */ s.e[2], /* [2][1] */ u.e[2], /* [2][2] */ -f.e[2], /* [2][3] */ 0, - /* [3][0] */ -(s * eye), /* [3][1] */ -(u * eye), /* [3][2] */ f * eye, /* [3][3] */ 1, + s.e[0], u.e[0], -f.e[0], 0, + s.e[1], u.e[1], -f.e[1], 0, + s.e[2], u.e[2], -f.e[2], 0, + -(s * eye), -(u * eye), f * eye, 1, ]!} // vfmt on } diff --git a/vlib/gg/m4/matrix.v b/vlib/gg/m4/matrix.v index ee9289e0a6..ec776e3930 100644 --- a/vlib/gg/m4/matrix.v +++ b/vlib/gg/m4/matrix.v @@ -360,25 +360,25 @@ pub fn (a Mat4) * (b Mat4) Mat4 { unsafe { // vfmt off return Mat4{ e: [ - /* [0][0] */ a.f[0][0] * b.f[0][0] + a.f[0][1] * b.f[1][0] + a.f[0][2] * b.f[2][0] + a.f[0][3] * b.f[3][0], - /* [0][1] */ a.f[0][0] * b.f[0][1] + a.f[0][1] * b.f[1][1] + a.f[0][2] * b.f[2][1] + a.f[0][3] * b.f[3][1], - /* [0][2] */ a.f[0][0] * b.f[0][2] + a.f[0][1] * b.f[1][2] + a.f[0][2] * b.f[2][2] + a.f[0][3] * b.f[3][2], - /* [0][3] */ a.f[0][0] * b.f[0][3] + a.f[0][1] * b.f[1][3] + a.f[0][2] * b.f[2][3] + a.f[0][3] * b.f[3][3], + a.f[0][0] * b.f[0][0] + a.f[0][1] * b.f[1][0] + a.f[0][2] * b.f[2][0] + a.f[0][3] * b.f[3][0], // [0][0] + a.f[0][0] * b.f[0][1] + a.f[0][1] * b.f[1][1] + a.f[0][2] * b.f[2][1] + a.f[0][3] * b.f[3][1], // [0][1] + a.f[0][0] * b.f[0][2] + a.f[0][1] * b.f[1][2] + a.f[0][2] * b.f[2][2] + a.f[0][3] * b.f[3][2], // [0][2] + a.f[0][0] * b.f[0][3] + a.f[0][1] * b.f[1][3] + a.f[0][2] * b.f[2][3] + a.f[0][3] * b.f[3][3], // [0][3] - /* [1][0] */ a.f[1][0] * b.f[0][0] + a.f[1][1] * b.f[1][0] + a.f[1][2] * b.f[2][0] + a.f[1][3] * b.f[3][0], - /* [1][1] */ a.f[1][0] * b.f[0][1] + a.f[1][1] * b.f[1][1] + a.f[1][2] * b.f[2][1] + a.f[1][3] * b.f[3][1], - /* [1][2] */ a.f[1][0] * b.f[0][2] + a.f[1][1] * b.f[1][2] + a.f[1][2] * b.f[2][2] + a.f[1][3] * b.f[3][2], - /* [1][3] */ a.f[1][0] * b.f[0][3] + a.f[1][1] * b.f[1][3] + a.f[1][2] * b.f[2][3] + a.f[1][3] * b.f[3][3], + a.f[1][0] * b.f[0][0] + a.f[1][1] * b.f[1][0] + a.f[1][2] * b.f[2][0] + a.f[1][3] * b.f[3][0], // [1][0] + a.f[1][0] * b.f[0][1] + a.f[1][1] * b.f[1][1] + a.f[1][2] * b.f[2][1] + a.f[1][3] * b.f[3][1], // [1][1] + a.f[1][0] * b.f[0][2] + a.f[1][1] * b.f[1][2] + a.f[1][2] * b.f[2][2] + a.f[1][3] * b.f[3][2], // [1][2] + a.f[1][0] * b.f[0][3] + a.f[1][1] * b.f[1][3] + a.f[1][2] * b.f[2][3] + a.f[1][3] * b.f[3][3], // [1][3] - /* [2][0] */ a.f[2][0] * b.f[0][0] + a.f[2][1] * b.f[1][0] + a.f[2][2] * b.f[2][0] + a.f[2][3] * b.f[3][0], - /* [2][1] */ a.f[2][0] * b.f[0][1] + a.f[2][1] * b.f[1][1] + a.f[2][2] * b.f[2][1] + a.f[2][3] * b.f[3][1], - /* [2][2] */ a.f[2][0] * b.f[0][2] + a.f[2][1] * b.f[1][2] + a.f[2][2] * b.f[2][2] + a.f[2][3] * b.f[3][2], - /* [2][3] */ a.f[2][0] * b.f[0][3] + a.f[2][1] * b.f[1][3] + a.f[2][2] * b.f[2][3] + a.f[2][3] * b.f[3][3], + a.f[2][0] * b.f[0][0] + a.f[2][1] * b.f[1][0] + a.f[2][2] * b.f[2][0] + a.f[2][3] * b.f[3][0], // [2][0] + a.f[2][0] * b.f[0][1] + a.f[2][1] * b.f[1][1] + a.f[2][2] * b.f[2][1] + a.f[2][3] * b.f[3][1], // [2][1] + a.f[2][0] * b.f[0][2] + a.f[2][1] * b.f[1][2] + a.f[2][2] * b.f[2][2] + a.f[2][3] * b.f[3][2], // [2][2] + a.f[2][0] * b.f[0][3] + a.f[2][1] * b.f[1][3] + a.f[2][2] * b.f[2][3] + a.f[2][3] * b.f[3][3], // [2][3] - /* [3][0] */ a.f[3][0] * b.f[0][0] + a.f[3][1] * b.f[1][0] + a.f[3][2] * b.f[2][0] + a.f[3][3] * b.f[3][0], - /* [3][1] */ a.f[3][0] * b.f[0][1] + a.f[3][1] * b.f[1][1] + a.f[3][2] * b.f[2][1] + a.f[3][3] * b.f[3][1], - /* [3][2] */ a.f[3][0] * b.f[0][2] + a.f[3][1] * b.f[1][2] + a.f[3][2] * b.f[2][2] + a.f[3][3] * b.f[3][2], - /* [3][3] */ a.f[3][0] * b.f[0][3] + a.f[3][1] * b.f[1][3] + a.f[3][2] * b.f[2][3] + a.f[3][3] * b.f[3][3], + a.f[3][0] * b.f[0][0] + a.f[3][1] * b.f[1][0] + a.f[3][2] * b.f[2][0] + a.f[3][3] * b.f[3][0], // [3][0] + a.f[3][0] * b.f[0][1] + a.f[3][1] * b.f[1][1] + a.f[3][2] * b.f[2][1] + a.f[3][3] * b.f[3][1], // [3][1] + a.f[3][0] * b.f[0][2] + a.f[3][1] * b.f[1][2] + a.f[3][2] * b.f[2][2] + a.f[3][3] * b.f[3][2], // [3][2] + a.f[3][0] * b.f[0][3] + a.f[3][1] * b.f[1][3] + a.f[3][2] * b.f[2][3] + a.f[3][3] * b.f[3][3], // [3][3] ]!} // vfmt on } @@ -551,10 +551,10 @@ pub fn rotate(angle f32, w Vec4) Mat4 { // vfmt off return Mat4{ e: [ - /* [0][0] */ (ax * ax * cv) + cs , /* [0][1] */ (ax * ay * cv) + az * sn , /* [0][2] */ (ax * az * cv) - ay * sn , /* [0][3] */ 0, - /* [1][0] */ (ay * ax * cv) - az * sn , /* [1][1] */ (ay * ay * cv) + cs , /* [1][2] */ (ay * az * cv) + ax * sn , /* [1][3] */ 0, - /* [2][0] */ (az * ax * cv) + ay * sn , /* [2][1] */ (az * ay * cv) - ax * sn , /* [2][2] */ (az * az * cv) + cs , /* [2][3] */ 0, - /* [3][0] */ 0, /* [3][1] */ 0 , /* [3][2] */ 0 , /* [3][3] */ 1, + (ax * ax * cv) + cs, (ax * ay * cv) + az * sn, (ax * az * cv) - ay * sn, 0, + (ay * ax * cv) - az * sn, (ay * ay * cv) + cs, (ay * az * cv) + ax * sn, 0, + (az * ax * cv) + ay * sn, (az * ay * cv) - ax * sn, (az * az * cv) + cs, 0, + 0, 0, 0, 1, ]!} // vfmt on } diff --git a/vlib/math/math_test.v b/vlib/math/math_test.v index ed841e314b..9e681f7ed3 100644 --- a/vlib/math/math_test.v +++ b/vlib/math/math_test.v @@ -331,21 +331,41 @@ fn test_atan2() { [pi, inf(1)], [pi, nan()], [inf(1), inf(-1)], [inf(1), -pi], [inf(1), 0], [inf(1), pi], [inf(1), inf(1)], [inf(1), nan()], [nan(), nan()]] - atan2_sc_ := [f64(-3.0) * pi / 4.0, /* atan2(-inf, -inf) */ -pi / 2, /* atan2(-inf, -pi) */ - -pi / 2, - /* atan2(-inf, +0) */ -pi / 2, /* atan2(-inf, pi) */ -pi / 4, /* atan2(-inf, +inf) */ - nan(), /* atan2(-inf, nan) */ -pi, /* atan2(-pi, -inf) */ -pi / 2, /* atan2(-pi, +0) */ - -0.0, - /* atan2(-pi, inf) */ nan(), /* atan2(-pi, nan) */ -pi, /* atan2(-0, -inf) */ -pi, - /* atan2(-0, -pi) */ -pi, /* atan2(-0, -0) */ -0.0, /* atan2(-0, +0) */ -0.0, /* atan2(-0, pi) */ - -0.0, - /* atan2(-0, +inf) */ nan(), /* atan2(-0, nan) */ pi, /* atan2(+0, -inf) */ pi, /* atan2(+0, -pi) */ - pi, /* atan2(+0, -0) */ 0, /* atan2(+0, +0) */ 0, /* atan2(+0, pi) */ 0, /* atan2(+0, +inf) */ - nan(), /* atan2(+0, nan) */ pi, /* atan2(pi, -inf) */ pi / 2, /* atan2(pi, +0) */ 0, - /* atan2(pi, +inf) */ nan(), /* atan2(pi, nan) */ 3.0 * pi / 4, /* atan2(+inf, -inf) */ - pi / 2, /* atan2(+inf, -pi) */ pi / 2, /* atan2(+inf, +0) */ pi / 2, /* atan2(+inf, pi) */ - pi / 4, /* atan2(+inf, +inf) */ nan(), /* atan2(+inf, nan) */ - nan(), /* atan2(nan, nan) */ + atan2_sc_ := [f64(-3.0) * pi / 4.0, // atan2(-inf, -inf) + -pi / 2, // atan2(-inf, -pi) + -pi / 2, // atan2(-inf, +0) + -pi / 2, // atan2(-inf, pi) + -pi / 4, // atan2(-inf, +inf) + nan(), // atan2(-inf, nan) + -pi, // atan2(-pi, -inf) + -pi / 2, // atan2(-pi, +0) + -0.0, // atan2(-pi, inf) + nan(), // atan2(-pi, nan) + -pi, // atan2(-0, -inf) + -pi, // atan2(-0, -pi) + -pi, // atan2(-0, -0) + -0.0, // atan2(-0, +0) + -0.0, // atan2(-0, pi) + -0.0, // atan2(-0, +inf) + nan(), // atan2(-0, nan) + pi, // atan2(+0, -inf) + pi, // atan2(+0, -pi) + pi, // atan2(+0, -0) + 0, // atan2(+0, +0) + 0, // atan2(+0, pi) + 0, // atan2(+0, +inf) + nan(), // atan2(+0, nan) + pi, // atan2(pi, -inf) + pi / 2, // atan2(pi, +0) + 0, // atan2(pi, +inf) + nan(), // atan2(pi, nan) + 3.0 * pi / 4, // atan2(+inf, -inf) + pi / 2, // atan2(+inf, -pi) + pi / 2, // atan2(+inf, +0) + pi / 2, // atan2(+inf, pi) + pi / 4, // atan2(+inf, +inf) + nan(), // atan2(+inf, nan) + nan(), // atan2(nan, nan) ] for i := 0; i < vfatan2_sc_.len; i++ { f := atan2(vfatan2_sc_[i][0], vfatan2_sc_[i][1]) @@ -528,10 +548,10 @@ fn test_exp() { f := exp(math.vf_[i]) assert veryclose(math.exp_[i], f) } - vfexp_sc_ := [inf(-1), -2000, 2000, inf(1), nan(), /* smallest f64 that overflows Exp(x) */ - 7.097827128933841e+02, 1.48852223e+09, 1.4885222e+09, 1, /* near zero */ - 3.725290298461915e-09, - /* denormal */ -740] + vfexp_sc_ := [inf(-1), -2000, 2000, inf(1), nan(), // smallest f64 that overflows Exp(x) + 7.097827128933841e+02, 1.48852223e+09, 1.4885222e+09, 1, // near zero + 3.725290298461915e-09, -740, // denormal + ] exp_sc_ := [f64(0), 0, inf(1), inf(1), nan(), inf(1), inf(1), inf(1), 2.718281828459045, 1.0000000037252903, 4.2e-322] for i := 0; i < vfexp_sc_.len; i++ { @@ -545,8 +565,10 @@ fn test_exp2() { f := exp2(math.vf_[i]) assert soclose(math.exp2_[i], f, 1e-9) } - vfexp2_sc_ := [f64(-2000), 2000, inf(1), nan(), /* smallest f64 that overflows Exp2(x) */ - 1024, /* near underflow */ -1.07399999999999e+03, /* near zero */ 3.725290298461915e-09] + vfexp2_sc_ := [f64(-2000), 2000, inf(1), nan(), // smallest f64 that overflows Exp2(x) + 1024, -1.07399999999999e+03, // near underflow + 3.725290298461915e-09, // near zero + ] exp2_sc_ := [f64(0), inf(1), inf(1), nan(), inf(1), 5e-324, 1.0000000025821745] for i := 0; i < vfexp2_sc_.len; i++ { f := exp2(vfexp2_sc_[i]) @@ -577,7 +599,8 @@ fn test_gamma() { vfgamma_ := [[inf(1), inf(1)], [inf(-1), nan()], [f64(0), inf(1)], [f64(-0.0), inf(-1)], [nan(), nan()], [f64(-1), nan()], [f64(-2), nan()], [f64(-3), nan()], [f64(-1e+16), nan()], - [f64(-1e+300), nan()], [f64(1.7e+308), inf(1)], /* Test inputs inspi_red by Python test suite. */ + [f64(-1e+300), nan()], [f64(1.7e+308), inf(1)], // Test inputs inspi_red by Python test suite + // Outputs computed at high precision by PARI/GP. // If recomputing table entries), be careful to use // high-precision (%.1000g) formatting of the f64 inputs. @@ -646,12 +669,11 @@ fn test_hypot() { vfhypot_sc_ := [[inf(-1), inf(-1)], [inf(-1), 0], [inf(-1), inf(1)], [inf(-1), nan()], [f64(-0.0), -0.0], [f64(-0.0), 0], [f64(0), -0.0], - [f64(0), 0], /* +0,0 */ [f64(0), inf(-1)], [f64(0), inf(1)], - [f64(0), nan()], [inf(1), inf(-1)], [inf(1), 0], [inf(1), - inf(1)], - [inf(1), nan()], [nan(), inf(-1)], [nan(), 0], [nan(), - inf(1)], - [nan(), nan()]] + [f64(0), 0], [f64(0), inf(-1)], [f64(0), inf(1)], [f64(0), nan()], + [inf(1), inf(-1)], [inf(1), 0], [inf(1), inf(1)], [inf(1), + nan()], + [nan(), inf(-1)], [nan(), 0], [nan(), inf(1)], [nan(), + nan()]] hypot_sc_ := [inf(1), inf(1), inf(1), inf(1), 0, 0, 0, 0, inf(1), inf(1), nan(), inf(1), inf(1), inf(1), inf(1), inf(1), nan(), inf(1), nan()] @@ -755,27 +777,69 @@ fn test_pow() { [inf(1), 1], [inf(1), pi], [inf(1), nan()], [nan(), -pi], [nan(), -0.0], [nan(), 0], [nan(), 1], [nan(), pi], [nan(), nan()]] - pow_sc_ := [f64(0), /* pow(-inf, -pi) */ -0.0, /* pow(-inf, -3) */ 1, /* pow(-inf, -0) */ 1, /* pow(-inf, +0) */ - inf(-1), /* pow(-inf, 1) */ inf(-1), /* pow(-inf, 3) */ - inf(1), /* pow(-inf, pi) */ inf(1), /* pow(-inf, 0.5) */ - nan(), /* pow(-inf, nan) */ 0, /* pow(-pi, -inf) */ nan(), /* pow(-pi, -pi) */ - 1, /* pow(-pi, -0) */ 1, /* pow(-pi, +0) */ -pi, /* pow(-pi, 1) */ nan(), /* pow(-pi, pi) */ - inf(1), /* pow(-pi, +inf) */ nan(), /* pow(-pi, nan) */ 1, /* pow(-1, -inf) IEEE 754-2008 */ - 1, /* pow(-1, +inf) IEEE 754-2008 */ nan(), /* pow(-1, nan) */ - inf(1), /* pow(-1/2, -inf) */ 0, /* pow(-1/2, +inf) */ inf(1), /* pow(-0, -inf) */ - inf(1), /* pow(-0, -pi) */ inf(1), /* pow(-0, -0.5) */ - inf(-1), /* pow(-0, -3) IEEE 754-2008 */ -0.0, /* pow(-0, 3) IEEE 754-2008 */ 0, /* pow(-0, pi) */ - 0, /* pow(-0, 0.5) */ 0, /* pow(-0, +inf) */ inf(1), /* pow(+0, -inf) */ - inf(1), /* pow(+0, -pi) */ inf(1), /* pow(+0, -3) */ 1, /* pow(+0, -0) */ 1, /* pow(+0, +0) */ - 0, /* pow(+0, 3) */ 0, - /* pow(+0, pi) */ 0, /* pow(+0, +inf) */ nan(), /* pow(+0, nan) */ - inf(1), /* pow(1/2, -inf) */ 0, /* pow(1/2, +inf) */ 1, /* pow(1, -inf) IEEE 754-2008 */ - 1, /* pow(1, +inf) IEEE 754-2008 */ 1, /* pow(1, nan) IEEE 754-2008 */ 0, /* pow(pi, -inf) */ - 1, /* pow(pi, -0) */ 1, /* pow(pi, +0) */ pi, /* pow(pi, 1) */ inf(1), /* pow(pi, +inf) */ - nan(), /* pow(pi, nan) */ 0, /* pow(+inf, -pi) */ 1, /* pow(+inf, -0) */ 1, /* pow(+inf, +0) */ - inf(1), /* pow(+inf, 1) */ inf(1), /* pow(+inf, pi) */ - nan(), /* pow(+inf, nan) */ nan(), /* pow(nan, -pi) */ 1, /* pow(nan, -0) */ 1, /* pow(nan, +0) */ - nan(), /* pow(nan, 1) */ nan(), /* pow(nan, pi) */ nan(), /* pow(nan, nan) */] + pow_sc_ := [f64(0), // pow(-inf, -pi) + -0.0, // pow(-inf, -3) + 1, // pow(-inf, -0) + 1, // pow(-inf, +0) + inf(-1), // pow(-inf, 1) + inf(-1), // pow(-inf, 3) + inf(1), // pow(-inf, pi) + inf(1), // pow(-inf, 0.5) + nan(), // pow(-inf, nan) + 0, // pow(-pi, -inf) + nan(), // pow(-pi, -pi) + 1, // pow(-pi, -0) + 1, // pow(-pi, +0) + -pi, // pow(-pi, 1) + nan(), // pow(-pi, pi) + inf(1), // pow(-pi, +inf) + nan(), // pow(-pi, nan) + 1, // pow(-1, -inf) IEEE 754-2008 + 1, // pow(-1, +inf) IEEE 754-2008 + nan(), // pow(-1, nan) + inf(1), // pow(-1/2, -inf) + 0, // pow(-1/2, +inf) + inf(1), // pow(-0, -inf) + inf(1), // pow(-0, -pi) + inf(1), // pow(-0, -0.5) + inf(-1), // pow(-0, -3) IEEE 754-2008 + -0.0, // pow(-0, 3) IEEE 754-2008 + 0, // pow(-0, pi) + 0, // pow(-0, 0.5) + 0, // pow(-0, +inf) + inf(1), // pow(+0, -inf) + inf(1), // pow(+0, -pi) + inf(1), // pow(+0, -3) + 1, // pow(+0, -0) + 1, // pow(+0, +0) + 0, // pow(+0, 3) + 0, // pow(+0, pi) + 0, // pow(+0, +inf) + nan(), // pow(+0, nan) + inf(1), // pow(1/2, -inf) + 0, // pow(1/2, +inf) + 1, // pow(1, -inf) IEEE 754-2008 + 1, // pow(1, +inf) IEEE 754-2008 + 1, // pow(1, nan) IEEE 754-2008 + 0, // pow(pi, -inf) + 1, // pow(pi, -0) + 1, // pow(pi, +0) + pi, // pow(pi, 1) + inf(1), // pow(pi, +inf) + nan(), // pow(pi, nan) + 0, // pow(+inf, -pi) + 1, // pow(+inf, -0) + 1, // pow(+inf, +0) + inf(1), // pow(+inf, 1) + inf(1), // pow(+inf, pi) + nan(), // pow(+inf, nan) + nan(), // pow(nan, -pi) + 1, // pow(nan, -0) + 1, // pow(nan, +0) + nan(), // pow(nan, 1) + nan(), // pow(nan, pi) + nan(), // pow(nan, nan) + ] for i := 0; i < vfpow_sc_.len; i++ { f := pow(vfpow_sc_[i][0], vfpow_sc_[i][1]) assert alike(pow_sc_[i], f) @@ -793,14 +857,14 @@ fn test_round() { assert alike(math.round_[i], f) } vfround_sc_ := [[f64(0), 0], [nan(), nan()], [inf(1), inf(1)]] - // vfround_even_sc_ := [[f64(0), 0], [f64(1.390671161567e-309), 0], /* denormal */ - // [f64(0.49999999999999994), 0], /* 0.5-epsilon */ [f64(0.5), 0], - // [f64(0.5000000000000001), 1], /* 0.5+epsilon */ [f64(-1.5), -2], + // vfround_even_sc_ := [[f64(0), 0], [f64(1.390671161567e-309), 0], // denormal + // [f64(0.49999999999999994), 0], // 0.5-epsilon [f64(0.5), 0], + // [f64(0.5000000000000001), 1], // 0.5+epsilon [f64(-1.5), -2], // [f64(-2.5), -2], [nan(), nan()], [inf(1), inf(1)], // [f64(2251799813685249.5), 2251799813685250], // // 1 bit fractian [f64(2251799813685250.5), 2251799813685250], - // [f64(4503599627370495.5), 4503599627370496], /* 1 bit fraction, rounding to 0 bit fractian */ - // [f64(4503599627370497), 4503599627370497], /* large integer */ + // [f64(4503599627370495.5), 4503599627370496], // 1 bit fraction, rounding to 0 bit fractian + // [f64(4503599627370497), 4503599627370497], // large integer // ] for i := 0; i < vfround_sc_.len; i++ { f := round(vfround_sc_[i][0]) diff --git a/vlib/os/os.c.v b/vlib/os/os.c.v index e6e5c3f847..c50a1d4e57 100644 --- a/vlib/os/os.c.v +++ b/vlib/os/os.c.v @@ -712,7 +712,10 @@ pub fn executable() string { } $if freebsd { bufsize := usize(max_path_buffer_size) - mib := [1 /* CTL_KERN */, 14 /* KERN_PROC */, 12 /* KERN_PROC_PATHNAME */, -1] + mib := [1, // CTL_KERN + 14, // KERN_PROC + 12, // KERN_PROC_PATHNAME + -1] unsafe { C.sysctl(mib.data, mib.len, &result[0], &bufsize, 0, 0) } res := unsafe { tos_clone(&result[0]) } return res diff --git a/vlib/os/os.v b/vlib/os/os.v index 22ca924638..926d7914f4 100644 --- a/vlib/os/os.v +++ b/vlib/os/os.v @@ -162,17 +162,37 @@ pub fn sigint_to_signal_name(si int) string { match si { // TODO dependent on platform // works only on x86/ARM/most others - 10 /* , 30, 16 */ { return 'SIGUSR1' } - 12 /* , 31, 17 */ { return 'SIGUSR2' } - 17 /* , 20, 18 */ { return 'SIGCHLD' } - 18 /* , 19, 25 */ { return 'SIGCONT' } - 19 /* , 17, 23 */ { return 'SIGSTOP' } - 20 /* , 18, 24 */ { return 'SIGTSTP' } - 21 /* , 26 */ { return 'SIGTTIN' } - 22 /* , 27 */ { return 'SIGTTOU' } + 10 { // , 30, 16 + return 'SIGUSR1' + } + 12 { // , 31, 17 + return 'SIGUSR2' + } + 17 { // , 20, 18 + return 'SIGCHLD' + } + 18 { // , 19, 25 + return 'SIGCONT' + } + 19 { // , 17, 23 + return 'SIGSTOP' + } + 20 { // , 18, 24 + return 'SIGTSTP' + } + 21 { // , 26 + return 'SIGTTIN' + } + 22 { // , 27 + return 'SIGTTOU' + } // ///////////////////////////// - 5 { return 'SIGTRAP' } - 7 { return 'SIGBUS' } + 5 { + return 'SIGTRAP' + } + 7 { + return 'SIGBUS' + } else {} } } diff --git a/vlib/sokol/sapp/sapp_funcs.c.v b/vlib/sokol/sapp/sapp_funcs.c.v index 2a1b0d184e..f2007a56b9 100644 --- a/vlib/sokol/sapp/sapp_funcs.c.v +++ b/vlib/sokol/sapp/sapp_funcs.c.v @@ -86,7 +86,7 @@ fn C.sapp_get_clipboard_string() &u8 // set the window title (only on desktop platforms) fn C.sapp_set_window_title(&char) -// /* set the window icon (only on Windows and Linux) */ +// set the window icon (only on Windows and Linux) // SOKOL_APP_API_DECL void sapp_set_icon(const sapp_icon_desc* icon_desc); // Get number of dropped files @@ -104,10 +104,10 @@ fn C.sapp_gles2() bool // HTML5: enable or disable the hardwired "Leave Site?" dialog box fn C.sapp_html5_ask_leave_site(ask bool) -// /* HTML5: get byte size of a dropped file */ +// HTML5: get byte size of a dropped file // SOKOL_APP_API_DECL uint32_t sapp_html5_get_dropped_file_size(int index); -// /* HTML5: asynchronously load the content of a dropped file */ +// HTML5: asynchronously load the content of a dropped file // SOKOL_APP_API_DECL void sapp_html5_fetch_dropped_file(const sapp_html5_fetch_request* request); // Metal: get ARC-bridged pointer to Metal device object diff --git a/vlib/term/ui/input_windows.c.v b/vlib/term/ui/input_windows.c.v index 0e09801d82..dc21c59e19 100644 --- a/vlib/term/ui/input_windows.c.v +++ b/vlib/term/ui/input_windows.c.v @@ -255,7 +255,7 @@ fn (mut ctx Context) parse_events() { modifiers: modifiers }) } - 0x0008 /* C.MOUSE_HWHEELED */ { + 0x0008 { // C.MOUSE_HWHEELED ctx.event(&Event{ typ: .mouse_scroll direction: if i16(e.dwButtonState >> 16) < 0 { @@ -268,7 +268,7 @@ fn (mut ctx Context) parse_events() { modifiers: modifiers }) } - 0 /* CLICK */, C.DOUBLE_CLICK { + 0, C.DOUBLE_CLICK { button := match int(e.dwButtonState) { 0 { ctx.mouse_down } 1 { MouseButton.left } diff --git a/vlib/v/ast/ast.v b/vlib/v/ast/ast.v index 40a4cbdf8a..cfd9075a29 100644 --- a/vlib/v/ast/ast.v +++ b/vlib/v/ast/ast.v @@ -1609,10 +1609,10 @@ pub const ( // map register size -> register name x86_no_number_register_list = { 8: ['al', 'ah', 'bl', 'bh', 'cl', 'ch', 'dl', 'dh', 'bpl', 'sil', 'dil', 'spl'] - 16: ['ax', 'bx', 'cx', 'dx', 'bp', 'si', 'di', 'sp', /* segment registers */ 'cs', 'ss', - 'ds', 'es', 'fs', 'gs', 'flags', 'ip', /* task registers */ 'gdtr', 'idtr', 'tr', 'ldtr', - // CSR register 'msw', /* FP core registers */ 'cw', 'sw', 'tw', 'fp_ip', 'fp_dp', - 'fp_cs', 'fp_ds', 'fp_opc'] + 16: ['ax', 'bx', 'cx', 'dx', 'bp', 'si', 'di', 'sp', // segment registers + 'cs', 'ss', 'ds', 'es', 'fs', 'gs', 'flags', 'ip', // task registers + 'gdtr', 'idtr', 'tr', 'ldtr', // CSR register 'msw', /* FP core registers */ 'cw', 'sw', 'tw', 'fp_ip', 'fp_dp', 'fp_cs', + 'fp_ds', 'fp_opc'] 32: [ 'eax', 'ebx', @@ -1623,8 +1623,8 @@ pub const ( 'edi', 'esp', 'eflags', - 'eip', /* CSR register */ - 'mxcsr' /* 32-bit FP core registers 'fp_dp', 'fp_ip' (TODO: why are there duplicates?) */, + 'eip', // CSR register + 'mxcsr', // 32-bit FP core registers 'fp_dp', 'fp_ip' (TODO: why are there duplicates?) ] 64: ['rax', 'rbx', 'rcx', 'rdx', 'rbp', 'rsi', 'rdi', 'rsp', 'rflags', 'rip'] } @@ -1667,9 +1667,11 @@ pub const ( // TODO: saved priviled registers for arm pub const ( - arm_no_number_register_list = ['fp' /* aka r11 */, /* not instruction pointer: */ 'ip' /* aka r12 */, - 'sp' /* aka r13 */, 'lr' /* aka r14 */, /* this is instruction pointer ('program counter'): */ - 'pc' /* aka r15 */, + arm_no_number_register_list = ['fp', // aka r11 + 'ip', // not instruction pointer: aka r12 + 'sp', // aka r13 + 'lr', // aka r14 + 'pc', // this is instruction pointer ('program counter'): aka r15 ] // 'cpsr' and 'apsr' are special flags registers, but cannot be referred to directly arm_with_number_register_list = { 'r#': 16 diff --git a/vlib/v/builder/cc.v b/vlib/v/builder/cc.v index ba7c624546..48c0edc3d2 100644 --- a/vlib/v/builder/cc.v +++ b/vlib/v/builder/cc.v @@ -148,14 +148,14 @@ fn (mut v Builder) setup_ccompiler_options(ccompiler string) { '-Wno-type-limits', '-Wno-tautological-compare', // these cause various issues: - '-Wno-shadow' /* the V compiler already catches this for user code, and enabling this causes issues with e.g. the `it` variable */, - '-Wno-int-to-pointer-cast' /* gcc version of the above */, - '-Wno-trigraphs' /* see stackoverflow.com/a/8435413 */, - '-Wno-missing-braces' /* see stackoverflow.com/q/13746033 */, + '-Wno-shadow', // the V compiler already catches this for user code, and enabling this causes issues with e.g. the `it` variable + '-Wno-int-to-pointer-cast', // gcc version of the above + '-Wno-trigraphs', // see stackoverflow.com/a/8435413 + '-Wno-missing-braces', // see stackoverflow.com/q/13746033 // enable additional warnings: - '-Wno-unknown-warning' /* if a C compiler does not understand a certain flag, it should just ignore it */, - '-Wno-unknown-warning-option' /* clang equivalent of the above */, - '-Wno-excess-initializers' /* vlib/v/tests/struct_init_with_complex_fields_test.v fails without that on macos clang 13 */, + '-Wno-unknown-warning', // if a C compiler does not understand a certain flag, it should just ignore it + '-Wno-unknown-warning-option', // clang equivalent of the above + '-Wno-excess-initializers', // vlib/v/tests/struct_init_with_complex_fields_test.v fails without that on macos clang 13 '-Wdate-time', '-Wduplicated-branches', '-Wduplicated-cond', @@ -232,8 +232,8 @@ fn (mut v Builder) setup_ccompiler_options(ccompiler string) { } ccoptions.wargs << [ '-Wno-tautological-bitwise-compare', - '-Wno-enum-conversion' /* used in vlib/sokol, where C enums in C structs are typed as V structs instead */, - '-Wno-sometimes-uninitialized' /* produced after exhaustive matches */, + '-Wno-enum-conversion', // used in vlib/sokol, where C enums in C structs are typed as V structs instead + '-Wno-sometimes-uninitialized', // produced after exhaustive matches '-Wno-int-to-void-pointer-cast', ] } diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index 2a7ab674d5..d0d7ec374d 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -1847,7 +1847,7 @@ fn (mut c Checker) enum_decl(mut node ast.EnumDecl) { c.ident(mut field.expr) } if field.expr.kind == .constant && field.expr.obj.typ.is_int() { - /* accepts int constants as enum value */ + // accepts int constants as enum value continue } } diff --git a/vlib/v/fmt/fmt.v b/vlib/v/fmt/fmt.v index 72fd5f5523..2498145471 100644 --- a/vlib/v/fmt/fmt.v +++ b/vlib/v/fmt/fmt.v @@ -777,8 +777,10 @@ fn expr_is_single_line(expr ast.Expr) bool { } } ast.ArrayInit { - if expr.exprs.len > 0 { - return expr_is_single_line(expr.exprs[0]) + for e in expr.exprs { + if !expr_is_single_line(e) { + return false + } } } ast.ConcatExpr { @@ -1766,9 +1768,11 @@ pub fn (mut f Fmt) array_init(node ast.ArrayInit) { } f.write(' ') f.comment(cmt) + if !line_break { + f.writeln('') + } } } - last_comment_was_inline = cmt.is_inline } } else if i == node.exprs.len - 1 && !line_break { is_new_line = false diff --git a/vlib/v/fmt/tests/array_init_comments_expected.vv b/vlib/v/fmt/tests/array_init_comments_expected.vv index a8affc958a..5a92817a45 100644 --- a/vlib/v/fmt/tests/array_init_comments_expected.vv +++ b/vlib/v/fmt/tests/array_init_comments_expected.vv @@ -5,5 +5,4 @@ v := [ // 2-3 3, // 3 // 4 - /* 5 */ ] diff --git a/vlib/v/fmt/tests/array_init_comments_input.vv b/vlib/v/fmt/tests/array_init_comments_input.vv index a2918d108e..29f1a9f73f 100644 --- a/vlib/v/fmt/tests/array_init_comments_input.vv +++ b/vlib/v/fmt/tests/array_init_comments_input.vv @@ -5,5 +5,4 @@ v := [ // 2-3 3, // 3 // 4 - /* 5 */ ] diff --git a/vlib/v/fmt/tests/array_init_inline_comments_keep.vv b/vlib/v/fmt/tests/array_init_inline_comments_keep.vv deleted file mode 100644 index d1c18e9ef3..0000000000 --- a/vlib/v/fmt/tests/array_init_inline_comments_keep.vv +++ /dev/null @@ -1,2 +0,0 @@ -a := [1 /* y */, /* x */ 2, 3] -println(a) diff --git a/vlib/v/fmt/tests/c_fn_headers_with_comments_expected.vv b/vlib/v/fmt/tests/c_fn_headers_with_comments_expected.vv deleted file mode 100644 index 95934f8cc5..0000000000 --- a/vlib/v/fmt/tests/c_fn_headers_with_comments_expected.vv +++ /dev/null @@ -1,7 +0,0 @@ -module main - -fn main() { - println('Hello World!') -} - -fn C.f( /* mut */ buff &char) i64 diff --git a/vlib/v/fmt/tests/c_fn_headers_with_comments_input.vv b/vlib/v/fmt/tests/c_fn_headers_with_comments_input.vv deleted file mode 100644 index 88945f3ba4..0000000000 --- a/vlib/v/fmt/tests/c_fn_headers_with_comments_input.vv +++ /dev/null @@ -1,7 +0,0 @@ -module main - -fn main() { - println('Hello World!') -} - -fn C.f(/*mut*/buff &char) i64 diff --git a/vlib/v/fmt/tests/comments_array_keep.vv b/vlib/v/fmt/tests/comments_array_keep.vv index 74632ed849..1a35d9cd20 100644 --- a/vlib/v/fmt/tests/comments_array_keep.vv +++ b/vlib/v/fmt/tests/comments_array_keep.vv @@ -9,7 +9,7 @@ fn main() { // below expr ] _ := [ - 8, /* I don't know why this still is a block comment */ + 8, // I don't know why this still is a block comment 9, ] arr := [ @@ -18,39 +18,27 @@ fn main() { // test 1 2, // test 2 - 3, /* 3 */ - 4, /* 4-1 */ /* 4-2 */ + 3, // 3 + 4, // 4-1 ] } fn only_comments_array() { - _ := [/* on a single line */ /* too */] + _ := [] _ := [ // 1, // 2, // 3, ] _ := [ - /* whatever */ /* this is */ // 3, + // whatever */ /* this is */ // 3, // 4, ] } -fn single_line_array_pre_comments() { - _ := [/* 2, */ 3] - _ := [/* 4, */ /* 5, */ 6] - _ := [/* cmt */ -4] -} - -fn single_line_array_iembed_comments() { - _ := [1, /* betw single line */ 2] - // This caused a bug where the ´-´ was parsed as InfixExpr and not as part of an IntegerLiteral - _ := [1, /* cmt */ -4] -} - fn mixed_comments() { _ := [ - 3 /* iembed */, + 3, // iembed // keep line comment here // and here 5, @@ -68,12 +56,3 @@ fn keep_real_block_comment() { 'eggs', ] } - -fn comment_at_line_start_with_expressions_after() { - arr := [123456789012345, 234567890123456, 678901234567890, 789012345678901, /* at the end */ - 345678901234567, /* in between */ 456789012345678, - /* line start */ 567890123456789, 890123456789012] - arr2 := [/* same line pre comment */ Foo{ - a: 123 - }] -} diff --git a/vlib/v/fmt/tests/comments_expected.vv b/vlib/v/fmt/tests/comments_expected.vv index 2e8533d548..af45cece85 100644 --- a/vlib/v/fmt/tests/comments_expected.vv +++ b/vlib/v/fmt/tests/comments_expected.vv @@ -6,23 +6,24 @@ comment */ fn fun() int { - return /* comment zero */ 0 // another comment + return 0 // another comment } fn mr_fun() (int, int) { - return /* one comment */ 1, /* another comment */ 2 + return 1, // one comment + 2 // another comment } fn single_line_blocks() { - /* 1 */ + // 1 println('') - /* 2 */ + // 2 println('') - /* 3 */ - /* 4 */ + // 3 + // 4 println('') // 5 - /* 6 */ + // 6 } fn main() { @@ -35,28 +36,15 @@ fn main() { /* block3 */ - a := /* this is a comment */ 1 - b, c := /* and another comment */ a, /* just to make it worse */ 2 + a := 1 // this is a comment d := c // and an extra one e := c // more comments = more good arr := [ - /* block foo bar */ + // block foo bar // inline foo bar 0, ] - println( /* before arg comment */ 'this is a test' /* after arg comment */ ) - if /* before if expr */ true /* after if expr */ { - println('if') - } - // before else if - else if /* between else if */ false { - println('else if') - } - // before else - else { - println('else') - } return } @@ -96,32 +84,12 @@ for // comments break } -for /* comments */ { - break -} - for i := 0; i < 1; i++ // comments { break } -for i := 0; i < 1; i++ /* comments */ { - break -} - -for /* comments1 */ i := 0; /* comments2 */ i < 1; /* comments3 */ i++ /* comments4 */ { - break -} - -for _ in [1, 2] /* comments */ { - break -} - for _ in [1, 2] // comments { break } - -for /* comments1 */ _ in /* comments2 */ [1, 2] /* comments3 */ { - break -} diff --git a/vlib/v/fmt/tests/comments_input.vv b/vlib/v/fmt/tests/comments_input.vv index 2d56a6223d..b3dcf84fd0 100644 --- a/vlib/v/fmt/tests/comments_input.vv +++ b/vlib/v/fmt/tests/comments_input.vv @@ -5,23 +5,24 @@ comment */ fn fun() int { - return /* comment zero */ 0 // another comment + return 0 // another comment } fn mr_fun() (int, int) { - return /* one comment */ 1, /* another comment */ 2 + return 1, // one comment + 2 // another comment } fn single_line_blocks() { - /* 1 */ + // 1 println('') - /* 2 */ + // 2 println('') - /* 3 */ - /* 4 */ + // 3 + // 4 println('') // 5 - /* 6 */ + // 6 } fn main() { @@ -34,28 +35,15 @@ fn main() { block3 */ - a := /* this is a comment */ 1 - b, c := /* and another comment */ a, /* just to make it worse */ 2 + a := 1 // this is a comment d := c // and an extra one e := c // more comments = more good arr := [ - /* block foo bar */ + // block foo bar // inline foo bar 0, ] - println(/* before arg comment */ 'this is a test' /* after arg comment */) - if /* before if expr */ true /* after if expr */ { - println('if') - } - // before else if - else /* between else if */ if false { - println('else if') - } - // before else - else /* after else */ { - println('else') - } return // empty return } @@ -93,32 +81,12 @@ for // comments break } -for /* comments */ { - break -} - for i := 0; i < 1; i++ // comments { break } -for i := 0; i < 1; i++ /* comments */ { - break -} - -for /* comments1 */ i := 0; /* comments2 */ i < 1; /* comments3 */ i++ /* comments4 */ { - break -} - -for _ in [1, 2] /* comments */ { - break -} - for _ in [1, 2] // comments { break } - -for /* comments1 */ _ in /* comments2 */ [1, 2] /* comments3 */ { - break -} diff --git a/vlib/v/fmt/tests/comments_inside_if_cond_expected.vv b/vlib/v/fmt/tests/comments_inside_if_cond_expected.vv deleted file mode 100644 index c9d3456064..0000000000 --- a/vlib/v/fmt/tests/comments_inside_if_cond_expected.vv +++ /dev/null @@ -1,2 +0,0 @@ -if true /* comments */ { -} diff --git a/vlib/v/fmt/tests/comments_inside_if_cond_input.vv b/vlib/v/fmt/tests/comments_inside_if_cond_input.vv deleted file mode 100644 index b0cc57386d..0000000000 --- a/vlib/v/fmt/tests/comments_inside_if_cond_input.vv +++ /dev/null @@ -1,2 +0,0 @@ -if true /* comments */ { -} diff --git a/vlib/v/fmt/tests/consts_with_comments_expected.vv b/vlib/v/fmt/tests/consts_with_comments_expected.vv index ddeca4bbb3..3f428cfacf 100644 --- a/vlib/v/fmt/tests/consts_with_comments_expected.vv +++ b/vlib/v/fmt/tests/consts_with_comments_expected.vv @@ -9,7 +9,7 @@ const two = 2 move */ -const three = 3 /* rewrite and leave */ +const three = 3 // rewrite and leave // leave const four = 4 // leave diff --git a/vlib/v/fmt/tests/consts_with_comments_input.vv b/vlib/v/fmt/tests/consts_with_comments_input.vv index 4d6511500e..25258327f9 100644 --- a/vlib/v/fmt/tests/consts_with_comments_input.vv +++ b/vlib/v/fmt/tests/consts_with_comments_input.vv @@ -5,7 +5,7 @@ const one = 1 // leave const two = 2 /* move */ -const three = 3 /* rewrite and leave */ +const three = 3 // rewrite and leave // leave const four = 4 // leave diff --git a/vlib/v/fmt/tests/fn_headers_with_comments_expected.vv b/vlib/v/fmt/tests/fn_headers_with_comments_expected.vv index e63faa8a68..8c2caad85a 100644 --- a/vlib/v/fmt/tests/fn_headers_with_comments_expected.vv +++ b/vlib/v/fmt/tests/fn_headers_with_comments_expected.vv @@ -1,12 +1,8 @@ fn C.Mix_LoadMUS1(file byteptr) voidptr // *Mix_Music -fn C.Mix_LoadMUS2(file byteptr) voidptr /* *Mix_Music */ +fn C.Mix_LoadMUS2(file byteptr) voidptr // *Mix_Music* -fn C.Mix_LoadMUS3(file byteptr) voidptr /* 1 */ - -/* 2 */ - -/* 3 */ +fn C.Mix_LoadMUS3(file byteptr) voidptr // 1 2 3 // Loads music fn C.Mix_LoadMUS4(file byteptr) voidptr diff --git a/vlib/v/fmt/tests/fn_headers_with_comments_input.vv b/vlib/v/fmt/tests/fn_headers_with_comments_input.vv index 9474830d69..6cef1d070a 100644 --- a/vlib/v/fmt/tests/fn_headers_with_comments_input.vv +++ b/vlib/v/fmt/tests/fn_headers_with_comments_input.vv @@ -1,8 +1,8 @@ fn C.Mix_LoadMUS1(file byteptr) voidptr // *Mix_Music -fn C.Mix_LoadMUS2(file byteptr) voidptr /* *Mix_Music */ +fn C.Mix_LoadMUS2(file byteptr) voidptr // *Mix_Music* -fn C.Mix_LoadMUS3(file byteptr) voidptr /* 1 */ /* 2 */ /* 3 */ +fn C.Mix_LoadMUS3(file byteptr) voidptr // 1 2 3 // Loads music fn C.Mix_LoadMUS4(file byteptr) voidptr /* Test diff --git a/vlib/v/fmt/tests/fn_headers_with_inline_comments_expected.vv b/vlib/v/fmt/tests/fn_headers_with_inline_comments_expected.vv deleted file mode 100644 index 25b113fa06..0000000000 --- a/vlib/v/fmt/tests/fn_headers_with_inline_comments_expected.vv +++ /dev/null @@ -1,8 +0,0 @@ -fn /* main */ main() { - return -} - -fn // hi -print_hi() { - println('hi') -} diff --git a/vlib/v/fmt/tests/fn_headers_with_inline_comments_input.vv b/vlib/v/fmt/tests/fn_headers_with_inline_comments_input.vv deleted file mode 100644 index 2f290ea7f8..0000000000 --- a/vlib/v/fmt/tests/fn_headers_with_inline_comments_input.vv +++ /dev/null @@ -1,6 +0,0 @@ -fn /*main*/main() { - return -} - -fn // hi -print_hi(){println('hi')} diff --git a/vlib/v/fmt/tests/fn_headers_with_param_comments_expected.vv b/vlib/v/fmt/tests/fn_headers_with_param_comments_expected.vv deleted file mode 100644 index ff17cb4ba9..0000000000 --- a/vlib/v/fmt/tests/fn_headers_with_param_comments_expected.vv +++ /dev/null @@ -1,8 +0,0 @@ -fn foo( - // Foo - s string) { -} - -fn bar( /* p1 */ a string, /* p2 */ b int) { - println('hello') -} diff --git a/vlib/v/fmt/tests/fn_headers_with_param_comments_input.vv b/vlib/v/fmt/tests/fn_headers_with_param_comments_input.vv deleted file mode 100644 index 05faa8bce3..0000000000 --- a/vlib/v/fmt/tests/fn_headers_with_param_comments_input.vv +++ /dev/null @@ -1,8 +0,0 @@ -fn foo( - // Foo - s string) { -} - -fn bar(/*p1*/a string, /*p2*/b int) { - println('hello') -} diff --git a/vlib/v/fmt/tests/fn_with_args_comments_keep.vv b/vlib/v/fmt/tests/fn_with_args_comments_keep.vv index 649a8e5989..05b54ce58b 100644 --- a/vlib/v/fmt/tests/fn_with_args_comments_keep.vv +++ b/vlib/v/fmt/tests/fn_with_args_comments_keep.vv @@ -1,5 +1,6 @@ fn main() { - filtered_links := text_processing.filter_links(links, /* unwanted_domains = */ [ + filtered_links := text_processing.filter_links(links, // unwanted_domains + [ 'www.kickstarter.com', 'www.pepper.pl', 'tenor.com', diff --git a/vlib/v/fmt/tests/if_cond_with_inline_comments_expected.vv b/vlib/v/fmt/tests/if_cond_with_inline_comments_expected.vv deleted file mode 100644 index 629042daba..0000000000 --- a/vlib/v/fmt/tests/if_cond_with_inline_comments_expected.vv +++ /dev/null @@ -1,12 +0,0 @@ -fn main() { - a, b := true, true - - if a || b // a - { - println('hi') - } - - if a || b /* a */ { - println('hi') - } -} diff --git a/vlib/v/fmt/tests/if_cond_with_inline_comments_input.vv b/vlib/v/fmt/tests/if_cond_with_inline_comments_input.vv deleted file mode 100644 index 77bb9fc87d..0000000000 --- a/vlib/v/fmt/tests/if_cond_with_inline_comments_input.vv +++ /dev/null @@ -1,10 +0,0 @@ -fn main() { - a, b := true, true - - if a || // a - b { - println('hi') - } - - if a /* a */ || b {println('hi')} -} diff --git a/vlib/v/fmt/tests/infix_expr_with_comments_keep.vv b/vlib/v/fmt/tests/infix_expr_with_comments_keep.vv index a333822b8a..dc58ecdcf5 100644 --- a/vlib/v/fmt/tests/infix_expr_with_comments_keep.vv +++ b/vlib/v/fmt/tests/infix_expr_with_comments_keep.vv @@ -1,9 +1,9 @@ fn main() { a := 4 // comment1 - + /* comment2 */ 6 + + 6 // comment2 - b := 5 /* comment1 */ + // comment2 + b := 5 + // comment2 6 - c := 4 /* comment1 */ + /* comment2 */ 6 // comment3 + c := 4 + 6 // comment3 } diff --git a/vlib/v/fmt/tests/return_with_comments_keep.vv b/vlib/v/fmt/tests/return_with_comments_keep.vv deleted file mode 100644 index ccee188537..0000000000 --- a/vlib/v/fmt/tests/return_with_comments_keep.vv +++ /dev/null @@ -1,22 +0,0 @@ -fn foo1() int { - return (0 /* some comment */ ) -} - -fn foo2() int { - return ( /* some comment */ 0) -} - -fn foo3() int { - return ( /* some comment1 */ 0 /* some comment2 */ ) -} - -fn foo4() int { - return ( /* some comment1 */ /* some comment2 */ 0) -} - -fn foo5() int { - return ( /* some comment1 */ /* some comment2 */ 0 /* some comment3 */ /* some comment4 */ ) -} - -fn main() { -} diff --git a/vlib/v/fmt/tests/structs_expected.vv b/vlib/v/fmt/tests/structs_expected.vv index a6bcee9615..fb0490bb67 100644 --- a/vlib/v/fmt/tests/structs_expected.vv +++ b/vlib/v/fmt/tests/structs_expected.vv @@ -41,11 +41,11 @@ struct SomeStruct { mut: // 2 // 3 - somefield /* 4 */ /* 5 */ int /* 6 */ /* 7 */ /* 8 */ /* + somefield int /* 9 10 */ - somefield2 /* 11 */ int // 12 + somefield2 int // 12 pub: somefield3 int diff --git a/vlib/v/fmt/tests/structs_input.vv b/vlib/v/fmt/tests/structs_input.vv index 976eeb6c4e..df4a9211ba 100644 --- a/vlib/v/fmt/tests/structs_input.vv +++ b/vlib/v/fmt/tests/structs_input.vv @@ -41,11 +41,11 @@ struct SomeStruct { mut: // 2 // 3 -somefield /*4*/ /*5*/ int /*6*/ /*7*/ /*8*/ /* +somefield int /* 9 10 */ -somefield2 /*11*/ int // 12 +somefield2 int // 12 pub: diff --git a/vlib/v/gen/js/sourcemap/vlq/vlq_decode_test.v b/vlib/v/gen/js/sourcemap/vlq/vlq_decode_test.v index 365918d6f1..ca20ecdf02 100644 --- a/vlib/v/gen/js/sourcemap/vlq/vlq_decode_test.v +++ b/vlib/v/gen/js/sourcemap/vlq/vlq_decode_test.v @@ -23,8 +23,8 @@ fn test_decode_a() { TestData{'D', -1}, TestData{'2H', 123}, TestData{'qxmvrH', 123456789}, - TestData{'+/////B', 1073741823} /* 2^30-1 */, - // TestData{'hgggggggggggI', 9_223_372_036_854_775_808} /* 2^63 */, + TestData{'+/////B', 1073741823}, // 2^30-1 + // TestData{'hgggggggggggI', 9_223_372_036_854_775_808} // 2^63 ] for _, test_data in decode_values { diff --git a/vlib/v/gen/js/sourcemap/vlq/vlq_encode_test.v b/vlib/v/gen/js/sourcemap/vlq/vlq_encode_test.v index d73efe4eef..a7b9505edb 100644 --- a/vlib/v/gen/js/sourcemap/vlq/vlq_encode_test.v +++ b/vlib/v/gen/js/sourcemap/vlq/vlq_encode_test.v @@ -17,8 +17,8 @@ fn test_encode_a() { TestData{'D', -1}, TestData{'2H', 123}, TestData{'qxmvrH', 123456789}, - TestData{'+/////B', 1073741823} /* 2^30-1 */, - // TestData{'hgggggggggggI', 9_223_372_036_854_775_808} /* 2^63 */, + TestData{'+/////B', 1073741823}, // 2^30-1 + // TestData{'hgggggggggggI', 9_223_372_036_854_775_808} // 2^63 ] for _, test_data in decode_values { mut output := TestWriter{} diff --git a/vlib/v/markused/markused.v b/vlib/v/markused/markused.v index 80fb8c67d4..8553736afc 100644 --- a/vlib/v/markused/markused.v +++ b/vlib/v/markused/markused.v @@ -26,8 +26,8 @@ pub fn mark_used(mut table ast.Table, pref_ &pref.Preferences, ast_files []&ast. '__new_array_with_default', '__new_array_with_multi_default', '__new_array_with_array_default', - 'init_global_allocator' /* needed for linux_bare and wasm_bare */, - 'v_realloc' /* needed for _STR */, + 'init_global_allocator', // needed for linux_bare and wasm_bare + 'v_realloc', // needed for _STR 'malloc', 'malloc_noscan', 'vcalloc', @@ -89,12 +89,12 @@ pub fn mark_used(mut table ast.Table, pref_ &pref.Preferences, ast_files []&ast. '22.set', '22.get_unsafe', '22.set_unsafe', - '22.get_with_check' /* used for `x := a[i] or {}` */, + '22.get_with_check', // used for `x := a[i] or {}` '22.clone_static_to_depth', '22.clone_to_depth', '22.first', '22.last', - '22.pointers' /* TODO: handle generic methods calling array primitives more precisely in pool_test.v */, + '22.pointers', // TODO: handle generic methods calling array primitives more precisely in pool_test.v '22.reverse', '22.repeat_to_depth', '22.slice', diff --git a/vlib/v/scanner/scanner.v b/vlib/v/scanner/scanner.v index b3e458ebbf..56de53987e 100644 --- a/vlib/v/scanner/scanner.v +++ b/vlib/v/scanner/scanner.v @@ -1111,9 +1111,17 @@ fn (mut s Scanner) text_scan() token.Token { } s.pos++ if s.should_parse_comment() { - mut comment := s.text[start..(s.pos - 1)].trim(' ') + mut comment := s.text[start..(s.pos - 1)] if !comment.contains('\n') { - comment = '\x01' + comment + comment_pos := token.Pos{ + line_nr: start_line + len: comment.len + 4 + pos: start + col: s.current_column() - comment.len - 4 + } + s.error_with_pos('inline comment is deprecated, please use line comment', + comment_pos) + comment = '\x01' + comment.trim(' ') } return s.new_multiline_token(.comment, comment, comment.len + 4, start_line) diff --git a/vlib/x/ttf/ttf.v b/vlib/x/ttf/ttf.v index 513ef30a4c..f7019efd7d 100644 --- a/vlib/x/ttf/ttf.v +++ b/vlib/x/ttf/ttf.v @@ -1161,21 +1161,21 @@ fn tst() { mut tf := TTF_File{} tf.buf = [ - u8(0xFF), /* 8 bit */ + u8(0xFF), // 8 bit 0xF1, - 0xF2, /* 16 bit */ + 0xF2, // 16 bit 0x81, 0x23, 0x45, - 0x67, /* 32 bit */ + 0x67, // 32 bit 0x12, 0x34, 0x12, - 0x34, /* get_2dot14 16 bit */ + 0x34, // get_2dot14 16 bit 0x12, 0x34, 0x12, - 0x34 /* get_fixed 32 bit int */, + 0x34, // get_fixed 32 bit int ] assert tf.get_u8().hex() == 'ff' assert tf.get_u16().hex() == 'f1f2'