From 090e19842795448d9cc7b5af12bb4da6cfd5dd4d Mon Sep 17 00:00:00 2001 From: "Thomas E. Enebo" Date: Thu, 6 Sep 2018 11:14:07 -0500 Subject: [PATCH 001/158] [maven-release-plugin] prepare release jcodings-1.0.32 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1b539cc2..b1c46b1a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.32-SNAPSHOT + 1.0.32 JCodings Byte based encoding support library for java From bfc5daa5284d02e70c5eee6a328168961e55a357 Mon Sep 17 00:00:00 2001 From: "Thomas E. Enebo" Date: Thu, 6 Sep 2018 11:14:15 -0500 Subject: [PATCH 002/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b1c46b1a..4f72af3e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.32 + 1.0.33-SNAPSHOT JCodings Byte based encoding support library for java From fe1f1f237fe1e7bdb58cd845ad90aaf84adb4456 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 12 Sep 2018 03:46:19 -0500 Subject: [PATCH 003/158] Unnecessary. --- pom.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.yml b/pom.yml index 5f28a6a5..56198719 100644 --- a/pom.yml +++ b/pom.yml @@ -2,7 +2,6 @@ modelVersion: 4.0.0 parent: artifactId: oss-parent groupId: org.sonatype.oss - relativePath: ../pom.xml version: 7 groupId: org.jruby.jcodings artifactId: jcodings From fd4d569ca2d2474a4e176c031f5630abffc97b97 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 12 Sep 2018 03:46:42 -0500 Subject: [PATCH 004/158] Isolate module-info to JDK9+ builds. --- pom.yml | 27 ++++++++++++++++++++++----- {src => src9}/module-info.java | 0 2 files changed, 22 insertions(+), 5 deletions(-) rename {src => src9}/module-info.java (100%) diff --git a/pom.yml b/pom.yml index 56198719..16de8f7b 100644 --- a/pom.yml +++ b/pom.yml @@ -66,11 +66,6 @@ build: source: 1.7 target: 1.7 excludes: [module-info.java] - - id: compile9 - goals: [compile] - configuration: - release: 9 - includes: [module-info.java] - groupId: org.apache.maven.plugins artifactId: maven-jar-plugin version: 2.4 @@ -91,3 +86,25 @@ build: scriptSourceDirectory: scripts sourceDirectory: src testSourceDirectory: test +profiles: +- id: module-info + activation: + jdk: 9 + build: + plugins: + - groupId: org.codehaus.mojo + artifactId: build-helper-maven-plugin + version: 3.0.0 + executions: + - phase: generate-sources + goals: [add-source] + configuration: + sources: [src9] + - groupId: org.apache.maven.plugins + artifactId: maven-compiler-plugin + executions: + - id: compile9 + goals: [compile] + configuration: + release: 9 + includes: [module-info.java] \ No newline at end of file diff --git a/src/module-info.java b/src9/module-info.java similarity index 100% rename from src/module-info.java rename to src9/module-info.java From 933c03f66f22cfbf73775b122df85f8cb14a1af4 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 12 Sep 2018 03:47:09 -0500 Subject: [PATCH 005/158] Add back Java 8. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index a0bf2d1c..362f2627 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: java jdk: +- openjdk8 - openjdk9 script: mvn test From da5a62f2bb0fe9b5242999eca760b366d2fad978 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 12 Sep 2018 03:47:43 -0500 Subject: [PATCH 006/158] Add IDEA files to ignore. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index eb5a316c..824fc6cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ target +jcodings.iml +.idea/ + From 3adef241a720e49a33186a90890daff37d6fa86d Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 12 Sep 2018 04:01:58 -0500 Subject: [PATCH 007/158] Tidy up and add some whitespace for readability. --- pom.yml | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/pom.yml b/pom.yml index 16de8f7b..7d54d148 100644 --- a/pom.yml +++ b/pom.yml @@ -1,18 +1,22 @@ modelVersion: 4.0.0 + parent: artifactId: oss-parent groupId: org.sonatype.oss version: 7 + groupId: org.jruby.jcodings artifactId: jcodings version: 1.0.33-SNAPSHOT packaging: jar name: JCodings description: Byte based encoding support library for java + licenses: - distribution: repo name: MIT License url: 'http://www.opensource.org/licenses/mit-license.php' + developers: - name: Marcin Mielzynski id: lopex @@ -20,25 +24,34 @@ developers: - name: Charles Oliver Nutter id: headius email: headius@headius.com + scm: connection: 'scm:git:git://github.com/jruby/jcodings.git' developerConnection: 'scm:git:git@github.com:jruby/jcodings.git' tag: HEAD url: 'https://github.com/jruby/jcodings' + issueManagement: system: Github url: 'https://github.com/jruby/jcodings/issues' + dependencies: - groupId: junit artifactId: junit version: 4.10 scope: test + build: + scriptSourceDirectory: scripts + sourceDirectory: src + testSourceDirectory: test + finalName: jcodings + extensions: - artifactId: wagon-webdav-jackrabbit groupId: org.apache.maven.wagon version: 2.1 - finalName: jcodings + plugins: - groupId: org.apache.maven.plugins artifactId: maven-source-plugin @@ -46,6 +59,7 @@ build: executions: - id: attach-sources goals: [jar] + - groupId: org.apache.maven.plugins artifactId: maven-javadoc-plugin version: 2.9 @@ -55,6 +69,7 @@ build: executions: - id: attach-javadocs goals: [jar] + - groupId: org.apache.maven.plugins artifactId: maven-compiler-plugin version: 3.8.0 @@ -65,6 +80,7 @@ build: configuration: source: 1.7 target: 1.7 + excludes: [module-info.java] - groupId: org.apache.maven.plugins artifactId: maven-jar-plugin @@ -72,24 +88,27 @@ build: configuration: archive: manifestFile: MANIFEST.MF + - groupId: org.apache.maven.plugins artifactId: maven-resources-plugin version: 2.6 + - groupId: org.apache.maven.plugins artifactId: maven-surefire-plugin version: 2.20.1 configuration: argLine: -Dfile.encoding=UTF-8 + resources: - directory: resources filtering: false - scriptSourceDirectory: scripts - sourceDirectory: src - testSourceDirectory: test + profiles: - id: module-info + activation: jdk: 9 + build: plugins: - groupId: org.codehaus.mojo @@ -100,6 +119,7 @@ profiles: goals: [add-source] configuration: sources: [src9] + - groupId: org.apache.maven.plugins artifactId: maven-compiler-plugin executions: From c14e6dc7bdaf358c4ec3726fb512b31006390768 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 12 Sep 2018 04:58:26 -0500 Subject: [PATCH 008/158] Move release-related targets into jdk9-specific profile. --- pom.yml | 62 ++++++++++++++++------------------ {src9 => src}/module-info.java | 0 2 files changed, 29 insertions(+), 33 deletions(-) rename {src9 => src}/module-info.java (100%) diff --git a/pom.yml b/pom.yml index 7d54d148..5c1eee11 100644 --- a/pom.yml +++ b/pom.yml @@ -1,10 +1,5 @@ modelVersion: 4.0.0 -parent: - artifactId: oss-parent - groupId: org.sonatype.oss - version: 7 - groupId: org.jruby.jcodings artifactId: jcodings version: 1.0.33-SNAPSHOT @@ -53,23 +48,6 @@ build: version: 2.1 plugins: - - groupId: org.apache.maven.plugins - artifactId: maven-source-plugin - version: 2.2.1 - executions: - - id: attach-sources - goals: [jar] - - - groupId: org.apache.maven.plugins - artifactId: maven-javadoc-plugin - version: 2.9 - configuration: - additionalparam: '-Xdoclint:none' - quiet: true - executions: - - id: attach-javadocs - goals: [jar] - - groupId: org.apache.maven.plugins artifactId: maven-compiler-plugin version: 3.8.0 @@ -82,6 +60,7 @@ build: target: 1.7 excludes: [module-info.java] + - groupId: org.apache.maven.plugins artifactId: maven-jar-plugin version: 2.4 @@ -104,22 +83,13 @@ build: filtering: false profiles: -- id: module-info +- id: release-on-9 activation: jdk: 9 build: plugins: - - groupId: org.codehaus.mojo - artifactId: build-helper-maven-plugin - version: 3.0.0 - executions: - - phase: generate-sources - goals: [add-source] - configuration: - sources: [src9] - - groupId: org.apache.maven.plugins artifactId: maven-compiler-plugin executions: @@ -127,4 +97,30 @@ profiles: goals: [compile] configuration: release: 9 - includes: [module-info.java] \ No newline at end of file + includes: [module-info.java] + + - groupId: org.sonatype.plugins + artifactId: nexus-staging-maven-plugin + version: 1.6.8 + extensions: true + configuration: + serverId: ossrh + nexusUrl: https://oss.sonatype.org/ + autoReleaseAfterClose: true + + - groupId: org.apache.maven.plugins + artifactId: maven-source-plugin + version: 2.2.1 + executions: + - id: attach-sources + goals: [jar] + + - groupId: org.apache.maven.plugins + artifactId: maven-javadoc-plugin + version: 2.9 + configuration: + additionalparam: '-Xdoclint:none' + quiet: true + executions: + - id: attach-javadocs + goals: [jar] \ No newline at end of file diff --git a/src9/module-info.java b/src/module-info.java similarity index 100% rename from src9/module-info.java rename to src/module-info.java From c51cede3900b405168c39643880f2c3180ba0a9a Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 13 Sep 2018 15:11:08 -0500 Subject: [PATCH 009/158] Switch back to XML so we can use release plugin. --- pom.xml | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pom.yml | 126 ---------------------------------------- 2 files changed, 174 insertions(+), 126 deletions(-) create mode 100644 pom.xml delete mode 100644 pom.yml diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..e609118a --- /dev/null +++ b/pom.xml @@ -0,0 +1,174 @@ + + + 4.0.0 + org.jruby.jcodings + jcodings + 1.0.34-SNAPSHOT + JCodings + Byte based encoding support library for java + + + MIT License + http://www.opensource.org/licenses/mit-license.php + repo + + + + + lopex + Marcin Mielzynski + lopx@gazeta.pl + + + headius + Charles Oliver Nutter + headius@headius.com + + + + scm:git:git://github.com/jruby/jcodings.git + scm:git:git@github.com:jruby/jcodings.git + https://github.com/jruby/jcodings + HEAD + + + Github + https://github.com/jruby/jcodings/issues + + + + junit + junit + 4.10 + test + + + + src + scripts + test + + + org.apache.maven.wagon + wagon-webdav-jackrabbit + 2.1 + + + + + false + resources + + + jcodings + + + maven-compiler-plugin + 3.8.0 + + + default-compile + + 1.7 + 1.7 + + module-info.java + + + + + + UTF-8 + + + + maven-jar-plugin + 2.4 + + + MANIFEST.MF + + + + + maven-resources-plugin + 2.6 + + + maven-surefire-plugin + 2.20.1 + + -Dfile.encoding=UTF-8 + + + + + + + release-on-9 + + 9 + + + + + maven-compiler-plugin + + + compile9 + + compile + + + 9 + + module-info.java + + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.8 + true + + ossrh + https://oss.sonatype.org/ + true + + + + maven-source-plugin + 2.2.1 + + + attach-sources + + jar + + + + + + maven-javadoc-plugin + 2.9 + + + attach-javadocs + + jar + + + + + -Xdoclint:none + true + + + + + + + diff --git a/pom.yml b/pom.yml deleted file mode 100644 index 5c1eee11..00000000 --- a/pom.yml +++ /dev/null @@ -1,126 +0,0 @@ -modelVersion: 4.0.0 - -groupId: org.jruby.jcodings -artifactId: jcodings -version: 1.0.33-SNAPSHOT -packaging: jar -name: JCodings -description: Byte based encoding support library for java - -licenses: -- distribution: repo - name: MIT License - url: 'http://www.opensource.org/licenses/mit-license.php' - -developers: -- name: Marcin Mielzynski - id: lopex - email: lopx@gazeta.pl -- name: Charles Oliver Nutter - id: headius - email: headius@headius.com - -scm: - connection: 'scm:git:git://github.com/jruby/jcodings.git' - developerConnection: 'scm:git:git@github.com:jruby/jcodings.git' - tag: HEAD - url: 'https://github.com/jruby/jcodings' - -issueManagement: - system: Github - url: 'https://github.com/jruby/jcodings/issues' - -dependencies: -- groupId: junit - artifactId: junit - version: 4.10 - scope: test - -build: - scriptSourceDirectory: scripts - sourceDirectory: src - testSourceDirectory: test - finalName: jcodings - - extensions: - - artifactId: wagon-webdav-jackrabbit - groupId: org.apache.maven.wagon - version: 2.1 - - plugins: - - groupId: org.apache.maven.plugins - artifactId: maven-compiler-plugin - version: 3.8.0 - configuration: - encoding: UTF-8 - executions: - - id: default-compile - configuration: - source: 1.7 - target: 1.7 - - excludes: [module-info.java] - - - groupId: org.apache.maven.plugins - artifactId: maven-jar-plugin - version: 2.4 - configuration: - archive: - manifestFile: MANIFEST.MF - - - groupId: org.apache.maven.plugins - artifactId: maven-resources-plugin - version: 2.6 - - - groupId: org.apache.maven.plugins - artifactId: maven-surefire-plugin - version: 2.20.1 - configuration: - argLine: -Dfile.encoding=UTF-8 - - resources: - - directory: resources - filtering: false - -profiles: -- id: release-on-9 - - activation: - jdk: 9 - - build: - plugins: - - groupId: org.apache.maven.plugins - artifactId: maven-compiler-plugin - executions: - - id: compile9 - goals: [compile] - configuration: - release: 9 - includes: [module-info.java] - - - groupId: org.sonatype.plugins - artifactId: nexus-staging-maven-plugin - version: 1.6.8 - extensions: true - configuration: - serverId: ossrh - nexusUrl: https://oss.sonatype.org/ - autoReleaseAfterClose: true - - - groupId: org.apache.maven.plugins - artifactId: maven-source-plugin - version: 2.2.1 - executions: - - id: attach-sources - goals: [jar] - - - groupId: org.apache.maven.plugins - artifactId: maven-javadoc-plugin - version: 2.9 - configuration: - additionalparam: '-Xdoclint:none' - quiet: true - executions: - - id: attach-javadocs - goals: [jar] \ No newline at end of file From 49a7bd7c35e80253f621461962ae9de8fee3d3c6 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 14 Sep 2018 13:41:40 -0500 Subject: [PATCH 010/158] Go back to Sonatype parent pom for now. --- pom.xml | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index e609118a..b018b986 100644 --- a/pom.xml +++ b/pom.xml @@ -6,6 +6,11 @@ 1.0.34-SNAPSHOT JCodings Byte based encoding support library for java + + org.sonatype.oss + oss-parent + 7 + MIT License @@ -128,17 +133,6 @@ - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.8 - true - - ossrh - https://oss.sonatype.org/ - true - - maven-source-plugin 2.2.1 From f80d2fc13e222b9b3dbac29bcead68d50bab1b26 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 14 Sep 2018 13:49:38 -0500 Subject: [PATCH 011/158] [maven-release-plugin] prepare release jcodings-1.0.34 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b018b986..ade4aedb 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.34-SNAPSHOT + 1.0.34 JCodings Byte based encoding support library for java From fcf7edac6edf2a637ede687a5f89f5902051c302 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 14 Sep 2018 13:49:45 -0500 Subject: [PATCH 012/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ade4aedb..71b1d138 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.34 + 1.0.35-SNAPSHOT JCodings Byte based encoding support library for java From 9de14d3ee05b3f0205c9000d5c62598fc1185635 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 14 Sep 2018 14:11:08 -0500 Subject: [PATCH 013/158] Remove Maven polyglot extension. --- .mvn/extensions.xml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .mvn/extensions.xml diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml deleted file mode 100644 index 57656b9a..00000000 --- a/.mvn/extensions.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - io.takari.polyglot - polyglot-yaml - 0.3.0 - - From fffdfe0f7db7b2dea96bcb99cf445f09bd91b426 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Mon, 17 Sep 2018 18:52:01 +0200 Subject: [PATCH 014/158] update surefire plugin --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 71b1d138..d0205e8e 100644 --- a/pom.xml +++ b/pom.xml @@ -101,7 +101,7 @@ maven-surefire-plugin - 2.20.1 + 2.22.0 -Dfile.encoding=UTF-8 From bdf027df841d7fd497c260b4015f477b8f051377 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Mon, 17 Sep 2018 20:08:57 +0200 Subject: [PATCH 015/158] finalize some classes --- src/org/jcodings/CodeRange.java | 2 +- src/org/jcodings/EncodingDB.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/jcodings/CodeRange.java b/src/org/jcodings/CodeRange.java index b8f177c9..c6b2d38e 100644 --- a/src/org/jcodings/CodeRange.java +++ b/src/org/jcodings/CodeRange.java @@ -19,7 +19,7 @@ */ package org.jcodings; -public class CodeRange { +public final class CodeRange { public static boolean isInCodeRange(int[]p, int code) { return isInCodeRange(p, 0, code); } diff --git a/src/org/jcodings/EncodingDB.java b/src/org/jcodings/EncodingDB.java index 78650ec7..a3b7b2e5 100644 --- a/src/org/jcodings/EncodingDB.java +++ b/src/org/jcodings/EncodingDB.java @@ -23,7 +23,7 @@ import org.jcodings.exception.InternalException; import org.jcodings.util.CaseInsensitiveBytesHash; -public class EncodingDB { +public final class EncodingDB { public static final class Entry { private static int count; From adb0d33597fe30c2282ba66a39fc8ec5bc0e1fde Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Mon, 17 Sep 2018 20:12:23 +0200 Subject: [PATCH 016/158] bump to 2.5.1 for table generation --- scripts/generate.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index 5e785f86..cb7fa4eb 100644 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -1,6 +1,6 @@ # coding: utf-8 -REPO_PATH = ARGV.first || '/usr/src/ruby-2.5.0' # path to ruby repo +REPO_PATH = ARGV.first || '/usr/src/ruby-2.5.1' # path to ruby repo SECTION_NAME = "rdata" UNICODE_VERSION = "10.0.0" SRC_DIR = "../src/org/jcodings" From 7f70c64fa82aaba0b9bf5124496bd3c53ccff867 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Tue, 18 Sep 2018 12:30:05 +0200 Subject: [PATCH 017/158] move EMPTY_FOLD_CODES to CaseFoldCodeItem --- src/org/jcodings/AbstractEncoding.java | 3 ++- src/org/jcodings/CaseFoldCodeItem.java | 2 ++ src/org/jcodings/CaseFoldMapEncoding.java | 2 +- src/org/jcodings/specific/ISO8859_1Encoding.java | 2 +- src/org/jcodings/unicode/UnicodeEncoding.java | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/org/jcodings/AbstractEncoding.java b/src/org/jcodings/AbstractEncoding.java index 82df4342..d302ce11 100644 --- a/src/org/jcodings/AbstractEncoding.java +++ b/src/org/jcodings/AbstractEncoding.java @@ -85,6 +85,7 @@ public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) asciiApplyAllCaseFold(flag, fun, arg); } + @Deprecated protected static final CaseFoldCodeItem[] EMPTY_FOLD_CODES = new CaseFoldCodeItem[]{}; protected final CaseFoldCodeItem[]asciiCaseFoldCodesByString(int flag, byte[]bytes, int p, int end) { int b = bytes[p] & 0xff; @@ -94,7 +95,7 @@ public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) } else if (0x61 <= b && b <= 0x7a) { return new CaseFoldCodeItem[]{CaseFoldCodeItem.create(1, b - 0x20)}; } else { - return EMPTY_FOLD_CODES; + return CaseFoldCodeItem.EMPTY_FOLD_CODES; } } diff --git a/src/org/jcodings/CaseFoldCodeItem.java b/src/org/jcodings/CaseFoldCodeItem.java index d1802c26..753240b8 100644 --- a/src/org/jcodings/CaseFoldCodeItem.java +++ b/src/org/jcodings/CaseFoldCodeItem.java @@ -20,6 +20,8 @@ package org.jcodings; public final class CaseFoldCodeItem { + public static final CaseFoldCodeItem[] EMPTY_FOLD_CODES = new CaseFoldCodeItem[]{}; + public final int byteLen; public final int code[]; diff --git a/src/org/jcodings/CaseFoldMapEncoding.java b/src/org/jcodings/CaseFoldMapEncoding.java index 3cd03fd4..80ff4e20 100644 --- a/src/org/jcodings/CaseFoldMapEncoding.java +++ b/src/org/jcodings/CaseFoldMapEncoding.java @@ -106,7 +106,7 @@ private void ssApplyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object a } } } - return EMPTY_FOLD_CODES; + return CaseFoldCodeItem.EMPTY_FOLD_CODES; } @Override diff --git a/src/org/jcodings/specific/ISO8859_1Encoding.java b/src/org/jcodings/specific/ISO8859_1Encoding.java index b7b0b3de..2f182584 100644 --- a/src/org/jcodings/specific/ISO8859_1Encoding.java +++ b/src/org/jcodings/specific/ISO8859_1Encoding.java @@ -85,7 +85,7 @@ public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) return new CaseFoldCodeItem[]{CaseFoldCodeItem.create(1, b - 0x20)}; } } - return EMPTY_FOLD_CODES; + return CaseFoldCodeItem.EMPTY_FOLD_CODES; } @Override diff --git a/src/org/jcodings/unicode/UnicodeEncoding.java b/src/org/jcodings/unicode/UnicodeEncoding.java index f856acd5..82b970d4 100644 --- a/src/org/jcodings/unicode/UnicodeEncoding.java +++ b/src/org/jcodings/unicode/UnicodeEncoding.java @@ -407,7 +407,7 @@ public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) } } - if (items == null || n == 0) return EMPTY_FOLD_CODES; + if (items == null || n == 0) return CaseFoldCodeItem.EMPTY_FOLD_CODES; if (n < items.length) { CaseFoldCodeItem [] tmp = new CaseFoldCodeItem[n]; System.arraycopy(items, 0, tmp, 0, n); From 9bca923f78daae2ae59679b97778b3c13f8fbbaa Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Wed, 19 Sep 2018 21:08:02 +0200 Subject: [PATCH 018/158] [maven-release-plugin] prepare release jcodings-1.0.35 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d0205e8e..a82bc43a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.35-SNAPSHOT + 1.0.35 JCodings Byte based encoding support library for java From e4d04fadd84203c6969870ab46c70f26d09c6076 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Wed, 19 Sep 2018 21:08:17 +0200 Subject: [PATCH 019/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a82bc43a..83e86f92 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.35 + 1.0.36-SNAPSHOT JCodings Byte based encoding support library for java From 7de4842a03325b05d40c7ef4dc459c42670427c2 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 19 Sep 2018 14:48:04 -0500 Subject: [PATCH 020/158] Open-ended activation for JDK 9 on up. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 83e86f92..6556fab2 100644 --- a/pom.xml +++ b/pom.xml @@ -112,7 +112,7 @@ release-on-9 - 9 + [9,) From 4a2a72d24ea72ee2e7f1df8a23bafd2238eac9ff Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 01:13:32 +0200 Subject: [PATCH 021/158] remove empty foldcodes --- src/org/jcodings/AbstractEncoding.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/org/jcodings/AbstractEncoding.java b/src/org/jcodings/AbstractEncoding.java index d302ce11..d8393558 100644 --- a/src/org/jcodings/AbstractEncoding.java +++ b/src/org/jcodings/AbstractEncoding.java @@ -85,8 +85,6 @@ public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) asciiApplyAllCaseFold(flag, fun, arg); } - @Deprecated - protected static final CaseFoldCodeItem[] EMPTY_FOLD_CODES = new CaseFoldCodeItem[]{}; protected final CaseFoldCodeItem[]asciiCaseFoldCodesByString(int flag, byte[]bytes, int p, int end) { int b = bytes[p] & 0xff; From 34f4f4ce8ab1454f3e09108fc52941fa4ebd59aa Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 17:01:42 +0200 Subject: [PATCH 022/158] [maven-release-plugin] prepare release jcodings-1.0.36 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6556fab2..4d689d5e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.36-SNAPSHOT + 1.0.36 JCodings Byte based encoding support library for java From fcebd8d863afaefe271ad3c3a7d08b96525a1929 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 17:01:50 +0200 Subject: [PATCH 023/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4d689d5e..6995f393 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.36 + 1.0.37-SNAPSHOT JCodings Byte based encoding support library for java From d8f4e053252df6b066246300b9b04e61be74bda8 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 17:37:43 +0200 Subject: [PATCH 024/158] [maven-release-plugin] prepare release jcodings-1.0.37 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6995f393..847c3366 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.37-SNAPSHOT + 1.0.37 JCodings Byte based encoding support library for java From 6066231c0de984a0b9440d9e101024159edb8335 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 17:37:52 +0200 Subject: [PATCH 025/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 847c3366..d76f2fe6 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.37 + 1.0.38-SNAPSHOT JCodings Byte based encoding support library for java From a46820239018f4a41f47358f4ed8c8a1a5945f1b Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 17:45:31 +0200 Subject: [PATCH 026/158] [maven-release-plugin] prepare release jcodings-1.0.38 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d76f2fe6..530db2ed 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.38-SNAPSHOT + 1.0.38 JCodings Byte based encoding support library for java From c90c36f60dcc6b881296ce7a64695e79805ea5a6 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 17:52:40 +0200 Subject: [PATCH 027/158] make new snapshot --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 530db2ed..def506cc 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.38 + 1.0.39-SNAPSHOT JCodings Byte based encoding support library for java From 85877440485ff65a281271df30f2c0758a75e65a Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 17:53:26 +0200 Subject: [PATCH 028/158] [maven-release-plugin] prepare release jcodings-1.0.39 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index def506cc..a13157c6 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.39-SNAPSHOT + 1.0.39 JCodings Byte based encoding support library for java From 7463a2d7d1ae65c372c50b0c58ea813b57a52fc1 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 17:53:34 +0200 Subject: [PATCH 029/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a13157c6..5073ede6 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.39 + 1.0.40-SNAPSHOT JCodings Byte based encoding support library for java From 7fde2999d3bb9cc8d497733132422aae39bea816 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 18:18:02 +0200 Subject: [PATCH 030/158] [maven-release-plugin] prepare release jcodings-1.0.40 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5073ede6..5873f3ac 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.40-SNAPSHOT + 1.0.40 JCodings Byte based encoding support library for java From a35d2eae11cc4d9a1417452639563971a6321dad Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 20 Sep 2018 18:18:13 +0200 Subject: [PATCH 031/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5873f3ac..3a83b585 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.40 + 1.0.41-SNAPSHOT JCodings Byte based encoding support library for java From 422a1235a0f2e21dcfeb692c942d4a7de4668a59 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Sun, 23 Sep 2018 01:22:43 +0200 Subject: [PATCH 032/158] add -html5 javadoc option --- pom.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 3a83b585..405bac9c 100644 --- a/pom.xml +++ b/pom.xml @@ -147,7 +147,7 @@ maven-javadoc-plugin - 2.9 + 3.0.1 attach-javadocs @@ -157,7 +157,8 @@ - -Xdoclint:none + -Xdoclint:none + -html5 true From 78505dafa76b28198b7dbfa5966a41af329178a6 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Wed, 3 Oct 2018 23:49:11 +0200 Subject: [PATCH 033/158] add shebang --- scripts/generate.rb | 2 ++ 1 file changed, 2 insertions(+) mode change 100644 => 100755 scripts/generate.rb diff --git a/scripts/generate.rb b/scripts/generate.rb old mode 100644 new mode 100755 index cb7fa4eb..2283bb49 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -1,3 +1,5 @@ +#!/usr/bin/env ruby + # coding: utf-8 REPO_PATH = ARGV.first || '/usr/src/ruby-2.5.1' # path to ruby repo From ee1d9e08bff65c79ad2de9dc0458dd0e8628a3d5 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 4 Oct 2018 01:04:30 +0200 Subject: [PATCH 034/158] sort transcoder entries by name --- scripts/generate.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index 2283bb49..1e08b5d3 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -1,5 +1,4 @@ #!/usr/bin/env ruby - # coding: utf-8 REPO_PATH = ARGV.first || '/usr/src/ruby-2.5.1' # path to ruby repo @@ -88,7 +87,7 @@ def generate_transcoder_list generic_list = [] transcoder_list = [] - Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.each do |trans_file| + Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.sort.each do |trans_file| name = trans_file[/(\w+)\.c/, 1].split('_').map{|e| e.capitalize}.join("") trans_src = open(trans_file){|f|f.read} @@ -115,7 +114,7 @@ def generate_transcoder_list end def generate_transoder_data - Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.each do |trans_file| + Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.sort.each do |trans_file| # next unless trans_file =~ /utf8/ trans_file = trans_file[/(.*)\./, 1] src = open("#{trans_file}.c", "rb").read From 226a759726e0d2b1d5f691bcc8cd4d4b984a3279 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 4 Oct 2018 01:07:44 +0200 Subject: [PATCH 035/158] use .rodata section on linux --- scripts/generate.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index 1e08b5d3..33a1292b 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -2,7 +2,7 @@ # coding: utf-8 REPO_PATH = ARGV.first || '/usr/src/ruby-2.5.1' # path to ruby repo -SECTION_NAME = "rdata" +SECTION_NAME = RUBY_PLATFORM =~ /linux/ ? "rodata" : "rdata" UNICODE_VERSION = "10.0.0" SRC_DIR = "../src/org/jcodings" DST_BIN_DIR = "../resources/tables" From 1443a7b46048a7816591cd85a7b3073982a8a26a Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 4 Oct 2018 21:33:22 +0200 Subject: [PATCH 036/158] fix code range and transcoder binary file naming --- ...CR_In_Miscellaneous_Symbols_and_Pictographs.bin} | Bin ...bols.bin => CR_In_Transport_and_Map_Symbols.bin} | Bin scripts/generate.rb | 5 +++-- 3 files changed, 3 insertions(+), 2 deletions(-) rename resources/tables/{CR_In_Miscellaneous_Symbols_And_Pictographs.bin => CR_In_Miscellaneous_Symbols_and_Pictographs.bin} (100%) rename resources/tables/{CR_In_Transport_And_Map_Symbols.bin => CR_In_Transport_and_Map_Symbols.bin} (100%) diff --git a/resources/tables/CR_In_Miscellaneous_Symbols_And_Pictographs.bin b/resources/tables/CR_In_Miscellaneous_Symbols_and_Pictographs.bin similarity index 100% rename from resources/tables/CR_In_Miscellaneous_Symbols_And_Pictographs.bin rename to resources/tables/CR_In_Miscellaneous_Symbols_and_Pictographs.bin diff --git a/resources/tables/CR_In_Transport_And_Map_Symbols.bin b/resources/tables/CR_In_Transport_and_Map_Symbols.bin similarity index 100% rename from resources/tables/CR_In_Transport_And_Map_Symbols.bin rename to resources/tables/CR_In_Transport_and_Map_Symbols.bin diff --git a/scripts/generate.rb b/scripts/generate.rb index 33a1292b..f7de2ed8 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -118,19 +118,20 @@ def generate_transoder_data # next unless trans_file =~ /utf8/ trans_file = trans_file[/(.*)\./, 1] src = open("#{trans_file}.c", "rb").read + make_name = -> (name) {name.capitalize.split('_').map{|e|e.capitalize}.join('')} process_binary "#{trans_file}.o" do |name, binary, address| case name when /(.*)_byte_array/ name = $1 size = src[/(\w+?_byte_array)\[(\d+?)\]/m, 2].to_i - open("#{DST_BIN_DIR}/" + "Transcoder_#{name.capitalize.tr('_', '')}_ByteArray.bin", "wb") do |f| + open("#{DST_BIN_DIR}/" + "Transcoder_#{make_name.(name)}_ByteArray.bin", "wb") do |f| f << [size].pack("N") f << binary[address, size] end when /(.*)_word_array/ name = $1 size = src[/(\w+?_word_array)\[(\d+?)\]/m, 2].to_i - open("#{DST_BIN_DIR}/" + "Transcoder_#{name.capitalize.tr('_', '')}_WordArray.bin", "wb") do |f| + open("#{DST_BIN_DIR}/" + "Transcoder_#{make_name.(name)}_WordArray.bin", "wb") do |f| f << [size].pack("N") address.step(address + (size * 4 - 1), 4).each do |adr| f << binary[adr, 4].unpack("l").pack("N") From 70c6621eabbb308036dabee4bc30013a624ffdf9 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Fri, 5 Oct 2018 21:31:14 +0200 Subject: [PATCH 037/158] whoops, redundant --- scripts/generate.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index f7de2ed8..803ac260 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -118,7 +118,7 @@ def generate_transoder_data # next unless trans_file =~ /utf8/ trans_file = trans_file[/(.*)\./, 1] src = open("#{trans_file}.c", "rb").read - make_name = -> (name) {name.capitalize.split('_').map{|e|e.capitalize}.join('')} + make_name = -> (name) {name.split('_').map{|e|e.capitalize}.join('')} process_binary "#{trans_file}.o" do |name, binary, address| case name when /(.*)_byte_array/ From a90dbc47427853838711d619e2e5730c37324512 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 11 Oct 2018 20:18:24 +0200 Subject: [PATCH 038/158] support table generation on osx --- scripts/generate.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index 803ac260..251f79d1 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -2,7 +2,12 @@ # coding: utf-8 REPO_PATH = ARGV.first || '/usr/src/ruby-2.5.1' # path to ruby repo -SECTION_NAME = RUBY_PLATFORM =~ /linux/ ? "rodata" : "rdata" +SECTION_NAME, G_PREFIX = case RUBY_PLATFORM +when /linux/i; ["rodata", ""] +when /darwin/i; ["const_data", "g"] +else ;["rdata", ""] +end + UNICODE_VERSION = "10.0.0" SRC_DIR = "../src/org/jcodings" DST_BIN_DIR = "../resources/tables" @@ -19,8 +24,8 @@ def generate_data def process_binary obj_name binary = open(obj_name, "rb"){|f|f.read} - offset = `objdump -h -j .#{SECTION_NAME} #{obj_name}`[/\.#{SECTION_NAME}.*?(\w+)\s+\S+$/, 1].to_i(16) - `nm --no-sort --defined-only #{obj_name}`.split("\n").map{|s|s.split(/\s+/)}.each do |address, _, name| + offset = `#{G_PREFIX}objdump -h -j .#{SECTION_NAME} #{obj_name}`[/\.#{SECTION_NAME}.*?(\w+)\s+\S+$/, 1].to_i(16) + `#{G_PREFIX}nm --no-sort --defined-only #{obj_name}`.split("\n").map{|s|s.split(/\s+/)}.each do |address, _, name| yield name, binary, address.to_i(16) + offset end end From 292dde527deb3d0d679f2522a1929bd0634b15a1 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Fri, 12 Oct 2018 19:05:00 +0200 Subject: [PATCH 039/158] [maven-release-plugin] prepare release jcodings-1.0.41 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 405bac9c..4a55c92e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.41-SNAPSHOT + 1.0.41 JCodings Byte based encoding support library for java From f3ab278bfee65fba3948287fc2f98efa74723d7f Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Fri, 12 Oct 2018 19:05:13 +0200 Subject: [PATCH 040/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4a55c92e..89105919 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.41 + 1.0.42-SNAPSHOT JCodings Byte based encoding support library for java From a4b2a1ee895ae1e2753d80fd09a5d008deae7dc4 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 27 Dec 2018 21:55:00 +0100 Subject: [PATCH 041/158] remove version from mri build repo --- scripts/generate.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index 251f79d1..49c590e2 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -1,7 +1,7 @@ #!/usr/bin/env ruby # coding: utf-8 -REPO_PATH = ARGV.first || '/usr/src/ruby-2.5.1' # path to ruby repo +REPO_PATH = ARGV.first || '/usr/src/ruby' # path to ruby repo SECTION_NAME, G_PREFIX = case RUBY_PLATFORM when /linux/i; ["rodata", ""] when /darwin/i; ["const_data", "g"] From ccda5cb6cc2639bd0bc126e77045a4c7c369798f Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 27 Dec 2018 21:56:36 +0100 Subject: [PATCH 042/158] bump unicode version to 11.0 --- scripts/generate.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index 49c590e2..e96da4a0 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -8,7 +8,7 @@ else ;["rdata", ""] end -UNICODE_VERSION = "10.0.0" +UNICODE_VERSION = "11.0.0" SRC_DIR = "../src/org/jcodings" DST_BIN_DIR = "../resources/tables" INDENT = " " * 4 From 5343b3d7daec8c8a8c1e01c0df47dca03a0863cc Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 27 Dec 2018 21:59:41 +0100 Subject: [PATCH 043/158] update tables for unicode 11.0 --- resources/tables/CR_Age_11_0.bin | Bin 0 -> 5352 bytes resources/tables/CR_Ahom.bin | Bin 32 -> 32 bytes resources/tables/CR_Alnum.bin | Bin 5568 -> 5712 bytes resources/tables/CR_Alpha.bin | Bin 5288 -> 5416 bytes resources/tables/CR_Arabic.bin | Bin 464 -> 464 bytes resources/tables/CR_Armenian.bin | Bin 56 -> 48 bytes resources/tables/CR_Assigned.bin | Bin 5200 -> 5272 bytes resources/tables/CR_Bengali.bin | Bin 120 -> 120 bytes resources/tables/CR_Bopomofo.bin | Bin 32 -> 32 bytes resources/tables/CR_C.bin | Bin 5232 -> 5296 bytes resources/tables/CR_Case_Ignorable.bin | Bin 3056 -> 3160 bytes resources/tables/CR_Cased.bin | Bin 1088 -> 1120 bytes resources/tables/CR_Cf.bin | Bin 152 -> 160 bytes resources/tables/CR_Chakma.bin | Bin 24 -> 24 bytes .../tables/CR_Changes_When_Casefolded.bin | Bin 4832 -> 4864 bytes .../tables/CR_Changes_When_Casemapped.bin | Bin 936 -> 976 bytes .../tables/CR_Changes_When_Lowercased.bin | Bin 4728 -> 4760 bytes .../tables/CR_Changes_When_Titlecased.bin | Bin 4872 -> 4888 bytes .../tables/CR_Changes_When_Uppercased.bin | Bin 4864 -> 4896 bytes resources/tables/CR_Cn.bin | Bin 5200 -> 5272 bytes resources/tables/CR_Common.bin | Bin 1320 -> 1336 bytes resources/tables/CR_Devanagari.bin | Bin 40 -> 40 bytes resources/tables/CR_Diacritic.bin | Bin 1280 -> 1312 bytes resources/tables/CR_Digit.bin | Bin 448 -> 464 bytes resources/tables/CR_Dogra.bin | Bin 0 -> 16 bytes resources/tables/CR_Emoji.bin | Bin 1168 -> 1184 bytes resources/tables/CR_Emoji_Component.bin | Bin 48 -> 88 bytes resources/tables/CR_Emoji_Modifier_Base.bin | Bin 264 -> 280 bytes resources/tables/CR_Emoji_Presentation.bin | Bin 608 -> 624 bytes resources/tables/CR_Extended_Pictographic.bin | Bin 0 -> 624 bytes resources/tables/CR_Georgian.bin | Bin 72 -> 88 bytes resources/tables/CR_Graph.bin | Bin 5240 -> 5312 bytes resources/tables/CR_Grapheme_Base.bin | Bin 6336 -> 6456 bytes .../CR_Grapheme_Cluster_Break_E_Base.bin | Bin 256 -> 0 bytes .../CR_Grapheme_Cluster_Break_E_Base_GAZ.bin | Bin 16 -> 0 bytes .../CR_Grapheme_Cluster_Break_Extend.bin | Bin 0 -> 2664 bytes ..._Grapheme_Cluster_Break_Glue_After_Zwj.bin | Bin 168 -> 0 bytes .../CR_Grapheme_Cluster_Break_Prepend.bin | Bin 88 -> 96 bytes .../CR_Grapheme_Cluster_Break_SpacingMark.bin | Bin 1168 -> 1216 bytes resources/tables/CR_Grapheme_Extend.bin | Bin 2560 -> 2656 bytes resources/tables/CR_Grapheme_Link.bin | Bin 392 -> 408 bytes resources/tables/CR_Gunjala_Gondi.bin | Bin 0 -> 56 bytes resources/tables/CR_Gurmukhi.bin | Bin 136 -> 136 bytes resources/tables/CR_Han.bin | Bin 144 -> 144 bytes resources/tables/CR_Hanifi_Rohingya.bin | Bin 0 -> 24 bytes resources/tables/CR_Hebrew.bin | Bin 80 -> 80 bytes resources/tables/CR_ID_Continue.bin | Bin 5520 -> 5664 bytes resources/tables/CR_ID_Start.bin | Bin 4688 -> 4800 bytes resources/tables/CR_Ideographic.bin | Bin 136 -> 136 bytes resources/tables/CR_In_Chess_Symbols.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Dogra.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Georgian_Extended.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Gunjala_Gondi.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Hanifi_Rohingya.bin | Bin 0 -> 16 bytes .../tables/CR_In_Indic_Siyaq_Numbers.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Makasar.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Mayan_Numerals.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Medefaidrin.bin | Bin 0 -> 16 bytes resources/tables/CR_In_No_Block.bin | Bin 384 -> 416 bytes resources/tables/CR_In_Old_Sogdian.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Sogdian.bin | Bin 0 -> 16 bytes resources/tables/CR_Inherited.bin | Bin 224 -> 232 bytes resources/tables/CR_Kaithi.bin | Bin 16 -> 24 bytes resources/tables/CR_Kannada.bin | Bin 120 -> 112 bytes resources/tables/CR_Kharoshthi.bin | Bin 72 -> 72 bytes resources/tables/CR_L.bin | Bin 4688 -> 4800 bytes resources/tables/CR_LC.bin | Bin 1016 -> 1048 bytes resources/tables/CR_Latin.bin | Bin 256 -> 248 bytes resources/tables/CR_Ll.bin | Bin 5072 -> 5112 bytes resources/tables/CR_Lo.bin | Bin 3680 -> 3768 bytes resources/tables/CR_Lower.bin | Bin 5128 -> 5168 bytes resources/tables/CR_Lu.bin | Bin 5024 -> 5056 bytes resources/tables/CR_M.bin | Bin 2112 -> 2208 bytes resources/tables/CR_Makasar.bin | Bin 0 -> 16 bytes resources/tables/CR_Mc.bin | Bin 1288 -> 1336 bytes resources/tables/CR_Medefaidrin.bin | Bin 0 -> 16 bytes resources/tables/CR_Mn.bin | Bin 2416 -> 2512 bytes resources/tables/CR_Mongolian.bin | Bin 64 -> 64 bytes resources/tables/CR_N.bin | Bin 936 -> 1008 bytes resources/tables/CR_Newa.bin | Bin 32 -> 32 bytes resources/tables/CR_Nko.bin | Bin 16 -> 24 bytes resources/tables/CR_No.bin | Bin 488 -> 544 bytes resources/tables/CR_Old_Sogdian.bin | Bin 0 -> 16 bytes resources/tables/CR_Other_Alphabetic.bin | Bin 1656 -> 1712 bytes resources/tables/CR_Po.bin | Bin 1360 -> 1408 bytes .../CR_Prepended_Concatenation_Mark.bin | Bin 48 -> 56 bytes resources/tables/CR_Print.bin | Bin 5216 -> 5288 bytes resources/tables/CR_Punct.bin | Bin 1384 -> 1432 bytes resources/tables/CR_S.bin | Bin 1744 -> 1768 bytes resources/tables/CR_Sc.bin | Bin 144 -> 160 bytes resources/tables/CR_Sentence_Terminal.bin | Bin 552 -> 600 bytes resources/tables/CR_So.bin | Bin 1392 -> 1400 bytes resources/tables/CR_Sogdian.bin | Bin 0 -> 16 bytes resources/tables/CR_Soyombo.bin | Bin 32 -> 24 bytes resources/tables/CR_Tangut.bin | Bin 32 -> 32 bytes resources/tables/CR_Telugu.bin | Bin 112 -> 104 bytes resources/tables/CR_Terminal_Punctuation.bin | Bin 784 -> 824 bytes resources/tables/CR_Unified_Ideograph.bin | Bin 120 -> 120 bytes resources/tables/CR_Unknown.bin | Bin 5184 -> 5256 bytes resources/tables/CR_Upper.bin | Bin 5064 -> 5096 bytes resources/tables/CR_Word.bin | Bin 5544 -> 5688 bytes resources/tables/CR_XID_Continue.bin | Bin 5576 -> 5720 bytes resources/tables/CR_XID_Start.bin | Bin 4744 -> 4856 bytes resources/tables/CR_XPosixPunct.bin | Bin 1344 -> 1392 bytes resources/tables/CaseFold.bin | Bin 17296 -> 18244 bytes resources/tables/CaseUnfold_11.bin | Bin 15316 -> 16264 bytes .../jcodings/unicode/UnicodeProperties.java | 39 ++++++++++++++---- 107 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 resources/tables/CR_Age_11_0.bin create mode 100644 resources/tables/CR_Dogra.bin create mode 100644 resources/tables/CR_Extended_Pictographic.bin delete mode 100644 resources/tables/CR_Grapheme_Cluster_Break_E_Base.bin delete mode 100644 resources/tables/CR_Grapheme_Cluster_Break_E_Base_GAZ.bin create mode 100644 resources/tables/CR_Grapheme_Cluster_Break_Extend.bin delete mode 100644 resources/tables/CR_Grapheme_Cluster_Break_Glue_After_Zwj.bin create mode 100644 resources/tables/CR_Gunjala_Gondi.bin create mode 100644 resources/tables/CR_Hanifi_Rohingya.bin create mode 100644 resources/tables/CR_In_Chess_Symbols.bin create mode 100644 resources/tables/CR_In_Dogra.bin create mode 100644 resources/tables/CR_In_Georgian_Extended.bin create mode 100644 resources/tables/CR_In_Gunjala_Gondi.bin create mode 100644 resources/tables/CR_In_Hanifi_Rohingya.bin create mode 100644 resources/tables/CR_In_Indic_Siyaq_Numbers.bin create mode 100644 resources/tables/CR_In_Makasar.bin create mode 100644 resources/tables/CR_In_Mayan_Numerals.bin create mode 100644 resources/tables/CR_In_Medefaidrin.bin create mode 100644 resources/tables/CR_In_Old_Sogdian.bin create mode 100644 resources/tables/CR_In_Sogdian.bin create mode 100644 resources/tables/CR_Makasar.bin create mode 100644 resources/tables/CR_Medefaidrin.bin create mode 100644 resources/tables/CR_Old_Sogdian.bin create mode 100644 resources/tables/CR_Sogdian.bin diff --git a/resources/tables/CR_Age_11_0.bin b/resources/tables/CR_Age_11_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..378be4525b190699db1c665f00454dcfef8b7f5e GIT binary patch literal 5352 zcmXZg3vgXkxd7m`k|s^g-sdDer{vY72~vSeDW-rt_+RuF<9eIOXPfN&{TR4n491lqK~1&PB9)A~51<<&H{@jHjZ%*Wre_u6a! z|G(DW-O~_iP7I;yrcnN``pOWhzrsqs#VWpAah-T8w}nvi9u{&Q7hqh?YOd#dY-W_d z@)~c1Q0or0?aU2fW|judWHI-!iGA!3p>6@)oJtQDvb3U4T*ff>@c@soHH7-B`7h*L zFPHiuzRx-~Fv7hRuB(5Djr<-t*FV9Z*usvA7sZ!&nOAs~10iH0)zpwdJ()%d9L^D_ zA#*gx@LrDN1oS*}a)lZ*AK(l=%vtD3=HnImoB0&#FS|rs!8cHEM!lKUs5hhc8TDq= zn^A8@y&3gp{)hWfZ$`bD$5C(QkEl2E6r&a6qB=9`%N@ENBJ#(;0c~Y-HE!(tannP?!-P+Vo3cj&7saT zk2+Izrs_&hL0#!0)Rmrzy3%t|Tlz`<9s4y^SE{bGpR2GxQ}v|kN!63eHI-{>ol@(R z$~U!6sePHsHc)oM?bIv_;->SGqyp~lJtHqKZ@MElh&U)u=szgFtLt06$680R4y~SxwmF!qZ7F@IzilPoW{5Qma~G~}do%=> zggM?#b9ym;j``=j&ObwFKOVWX+Y9a1u-!Vfo2UJMc?4_TKFVYW9p>pM#i-^e>@aJ`ouj}SS zoL_e(gFKGf);-U72F^eX;IF!RV3VGdmF$4UA2_{4MrTgsgp4~Bm`gZ&Y{nY-j?+X~ePhJj%DfgKw z(2Tu5CBLZ?IGIx`dPHk5^+7z_Q;T?vts(5UKKpyQo*UTADEmWDayZaR7iV)0m+(23 zBaZ|2`hgYv6Kh*Ct^Vmp(UWQOO+SfVPCv^IygQ~}WSm#oNs-AALqe8AIh^-#GN*7F zi|J(vgX{~@?P9EACdY6**D=J63|EYb`$Md9o$v5i<#?52RpU&BSRFWo1)Pcd_(qS_ z##jH0TlgJMFc#tr<7YTNW0>`fu$AX9UybuMhtbVv=zmA8<1>$=hjZ!U(h%z$udAW1 zA|t*R_0*k!K9uQ0o$Kn(=VsROE5_Nw8@!1e>gUkOiMXz8Q2aF;d75WK^nD$DU&l-> zDFqIqnO5ZCdpc&UN5(w9pJPUUGM_~LnOoSztNe|(LQDd#^KBZFb1^o#oU8aAYp@Q9 z-X-!+jrV;Q(?RaVe7>(@YK^n{nAOLuxpIAcJ;Vm%8ys(Nyy1cn8~tvyKN`=Gux?;%ctP zzR2rIUTwZDV*anVZ{B@9uCbus1^q7Qb)kVq%v(5|Bk1O6jzJF#>Moqb>70Q+70yDv zh29GLp-{2}`>k*ZpJ#w8LY(csv-N5Ag%!rlUWz(qZ)TL|Lp;dugYM@+UJB8xD>k`r zllwHezNruMHW}AsA2n^_k0E*m#pX6Tm`^vSh1lYFi`-j=v7Rl{?`U(pO)YKaZMz!1 zZ2LKz*c)QI^X+wb4%)3z`w4sqoT3p*vk9SIk>pSe- zGS5-RDaftE{X5Lpp{|ZTF6L4`$1=P}I)<=cJHF3P7{j{M@%^5Ye&_n_#r|>Z`UP~P<%;8`TVIF!genf~njobNqHnTm%U4HL!uU+o7%lhqF%0(gm{fpceqQClL zu^P1$J27YRU6`}%FtJ2`i$`-T$D_6~^%YA#P;rJ>@{x+O#1ij{;>Y+nYA#xXGVhFH ziQLLA6ib#=$hBDVY5s%HR$MAB!?RetoGY*&i(kgRDSo|TQ2aJ}TD%ecEZRRsJuh10 z;+;Iq1oq{GeoV}#8_(RtF!sR2J^Y5pc$#Oh|8^U{JEf833}D~vel^5BRXD!qBzpKT zz39Q7J}wUNb=SYOjdA|Y1d}1Y?fBbYVvy%T-0Sz=1oQ3H-@WG9t7m)rxP~F_3ehKA zoHTCIxJmnNvWEf8HMxSXROr#<&l%w%Ht}0VnGSKEd42E2=>wtaj_sjpt$#lJ^|ADX zss}sh3RPQfWh7MnZ9G)TuWFy;rSa3#p<1jKXNWVz8nH&K6>G(r;!LqltP|_SdNCtr i#6(QQR7}OJm=$xry57+xu6*a87vgIn=X~Sz^uGYSEh!`b literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Ahom.bin b/resources/tables/CR_Ahom.bin index a7a029cd218624b8c6139890e71ff3a31f830e51..7a42287051b66e115720e1bb2771a961e739fce3 100644 GIT binary patch literal 32 fcmZQzU|?rpU|?oo6lVZpDIk^wVr?Kc0AhOp4dDT7 literal 32 fcmZQzU|?rpU|?oo6lVZpNg$R5Vr?Kc0AhOp4bTB= diff --git a/resources/tables/CR_Alnum.bin b/resources/tables/CR_Alnum.bin index 87cfc27ad1c161a58799330b24db49efc49d176c..351e619cce758aca1093719b999f9f83e609eb2f 100644 GIT binary patch delta 267 zcmXZTF-XH;6a?URDbYv_zsb^C5=R3nD3n4)P{Hb|o8pv36o(E@*}6JO;{)kZ=<57W z6-39nW$)tXR$Ypdc!*af-#V)uu=In>hZxNSjr zWWA*>mg|CQLTki_Du*==Yc1`E4R;`@4|E*f?dG1-bca8 XJI(Ygx|!?j3p!mLM=8GSXH+`BM!7mD delta 131 zcmcbhb3mJefq^xjfq`lJM2_36i9k;K#23blA2!P{I2|!NA#0SQV?>CDu-ezO0nEZkLFz*Bg2AN$zycdY~ zZ{EOR&%~%d`2&|a0f1_nl6bp}R$Ak8lW z#2_{Z8vwEEWCMO>Ru=|FLAT8T{Nap(QVfjZvOuiGz$gLKAYn0igMcyXTn0v|xsx9V zG?~dJFfhud0&zMJX8>^)5cdJ`1R$OW#FK$|8W7KbV7UhjjB?*5CkQ67i9k;K#0SQVA2y3H-ezMgpZtOS@aDrDHcX6qlepCx zUrpBF4(D9Qz_5G+5O1H{!0pfYck=~qer87F$q)FVCP(orZf@oeVdRu#U=)`HVy($9 a1dJyu3)WA*C73YTNl2CP&E^cD155xJmnJ9x diff --git a/resources/tables/CR_Arabic.bin b/resources/tables/CR_Arabic.bin index 554d260391885ee296e58fdcdc3805c7ad5b70bf..353e1dec05a6c2cfabd9829b5d18af6fb15bc825 100644 GIT binary patch delta 12 Tcmcb>e1UmFG2`WpB{7TuBFhB; delta 12 Tcmcb>e1UmFG2@kuB{7TuBG3f^ diff --git a/resources/tables/CR_Armenian.bin b/resources/tables/CR_Armenian.bin index c6bd894dc9a813cab94915c476c562f5a42a28c7..42b8d988306a47b4b4caab1e07b34045eb3f07a4 100644 GIT binary patch literal 48 ncmZQzVBlt8U|>SuO?f literal 56 tcmZQzVBlq7U|?flU^N8dFd&Wu;&>oV1mboe?t!VM(h z4Kn6@eL>NedFbUw^JR*^#m8&B5WnRK7O!P6wr8>MqC~9M$_`P*Ib6ta(T8$NRCfp8 z60~h|uVifoH%N=(<&1TOZTiYO_`N6LYGi_=n)U8U_c${sc; z2kRpB4mc=sAUSN-!P&t<3OV2){s)I&GyiFtNmQjPH6qnZlohiyvt|%s7}g;M8?Xs+ zu;2>P@CdXS%`Rj<$wiT01+Sf=$rcIt=dfb691S3GsZ zj(TVS6I$fKIa%iXC3X!#gxDbHfNq$AWw?-NZV5L@DtC_?CG6_q0oiqRdVItM#o&ip zFhz4$s7d0&9jSIluWGB};-1-#14*oMc!c3EBrs{!KoTAA>+d%lQ2 hvGq9zD{wE@Ub8ez{M`lPfa&)(oc~LsK1nFQ?+;(zY?A;0 diff --git a/resources/tables/CR_Bengali.bin b/resources/tables/CR_Bengali.bin index f792ed910c0df3cc700d46eb172ff635dc396368..da858df8ad9bf5746a6da848f3b34c93c40577ef 100644 GIT binary patch delta 6 Ncmb=Zm{8964*&_%0`~v_ delta 6 Ncmb=Zm{8967XS&;0`>p^ diff --git a/resources/tables/CR_Bopomofo.bin b/resources/tables/CR_Bopomofo.bin index 66aefdeb60b10640c6365f29a6933b9f578ba17b..c2fd7a7e0333d419eee3f5775d680fa3fe0c018a 100644 GIT binary patch delta 14 UcmY#Tm>|xn&%j`~0El-101}P@+yDRo delta 14 UcmY#Tm>|xn$G~8?0El-101|})+W-In diff --git a/resources/tables/CR_C.bin b/resources/tables/CR_C.bin index ba890dadf65cf167a18fba3507926e8ffa1a6ed2..ff1af0fd9bba0bd32a612255aef4ef17c317453b 100644 GIT binary patch delta 433 zcmXZV&ntrg7zgm@@wVB!diRxNQ0I1q>3NaS~|^{P24hxK|=L^*6H z7wY9=D{3bvHM=oLp) z>t~lMvd&44+YYa=EGY}=tfFv2a_+pEA_`_9XCKrntUeL-RaNA|lj5lKs|F9rx*FyW z$*3W|m!djgd%azXe}vc@hH;pH8Hs3{T|LCwAdC_FVvvLiv5vZqy1pp4n!!_2($YL8 zr@lFkiQ|j5wG+1lp&u~UG6~pgjmWGX5>q!vI&iLIxn>nvm8v;LR-M5mToHG^!LO9` zBbPzEaW4A}A^wz1!&);sg%VVVU*;hO2|MWbvfJ4rcJA!%#wd#!nD&>6zcBW_2T6F9 jV!#;PCjQ-lI3&QVNh7b}9v&bM&%|W{JSlI;a8u+TNWXh@ delta 363 zcmXZUF-QVo6bJD4x;yie?!3z&vLK?sqR2(K!AJ*(D8xZ1p{TZkg1{skA{U1mB97PK zkQ5Z;mT*f%AW=&Y6kKiX1rpg(2%$Zp;m3Rb$9u0lQX6&yD7^q}`<6SYE^}zvZLw1Q z_-SQLY+7X#9qWA)8?=Bq+_GPB1r-^fL#C)SujIMQ+XYFIFiS_STddft?GpA}0gPU= z`+pACDyvb(eSp&>iwFiOCQPi-wg`v|fb*71IuqlrQUjpWw4cPFWP|`cCJVDkHbt_! zAplTYVmUfgBN(G+^%TRD)snbK4_djHb;i?rfmPTI Ldt`5v>6-Whr2}b; diff --git a/resources/tables/CR_Case_Ignorable.bin b/resources/tables/CR_Case_Ignorable.bin index 84884f1cad37e5eddbb1f0d65b128582c48637e2..f0646dc49d494f45c08cee0521146652fcb6b920 100644 GIT binary patch delta 192 zcmXZNI}1T!7zgnG!*RT?dvZA`CdDGfAPhDc3|7$@O+JL#geO^KHoANY>Xfqh2u8(V zae0*C*YB3RSPF2*0UB>riBjGd@S_rkqL0 z>|5R)g@Rd7Fb4`ZMTeiNWJVlN#NoUy(}DZCL3Lj0ipK`UY(D8()GC6kil~YjC`CN< WtupBeC_NSPzlAI^cky85zkUHg7b|W6 delta 97 zcmca1@j;w}fr05a0|R62Mh+uJAr3JH1`b^yjs)UpAigp=gfVUMA;ycFXEPmV*__3` xfpM}Hr@`bTPD931lc#XnGulkP!f8HPn5&;lijjd)iVcW4CvV}JH@S%W833Rh8KM9H diff --git a/resources/tables/CR_Cased.bin b/resources/tables/CR_Cased.bin index 2dca73289c043bacf859cb8dc64d05b8647b3a6d..11cd07ba3464c1906896284630db02989d923795 100644 GIT binary patch delta 103 zcmX@W@qmMafq_w+fq|iWBFAOc1O^7yj)@PX%mgklFbMnt;=e%rpMgPm0T6!$;vYZ^ s6q9KH;tn950K~h1crOs|-z>nmoRM+o|yR1^@%w0UrPW delta 6 Ncmb1;m>|yR3;+Yz0UQ7T diff --git a/resources/tables/CR_Changes_When_Casefolded.bin b/resources/tables/CR_Changes_When_Casefolded.bin index 3a14279735149965fd200835214dd7162e84c8cf..53207d9f937fcc01f335c00698a82264a3a402c4 100644 GIT binary patch delta 63 zcmaE$+Mve4z`(Mffq^N0BgZWcKA8y&3^KcbcrOs|-~51M7bn~D9SjW1cTAok}81>*k<48jY5_$v_q0Aiq+Oal;i0PzGM k-UY;afq4Js4UGMaj5{YgFemZlIWREh)iW@@WB_7k0HL}Vb^rhX delta 58 zcmcb>zJi^Dfq~&A5SMJ^n8YY1ynum0_$v_q0OG$43^ENs+_CurV?QI~_Q?s%No+v1 Hj4z!5uZ9n# diff --git a/resources/tables/CR_Changes_When_Lowercased.bin b/resources/tables/CR_Changes_When_Lowercased.bin index 9dd3d51b97eda6140dee517131c099ba765bc049..6833ff94b359032f8b32b89bcbd575146096c3d1 100644 GIT binary patch delta 63 zcmeyNGDDSvfq`Wy0|QggMvhq=d@>Ul7-V(<@m?U_zj*=2Do(cLI~W+2@0jc%q{Wx# Pz`&Rn&%pSS0f-d=5L6K6 delta 33 pcmbQC`a^|-fq`W%0|S%aMvhq=n>TT+;GCQ!q`~%*fr0U*A^@H@33UJf diff --git a/resources/tables/CR_Changes_When_Titlecased.bin b/resources/tables/CR_Changes_When_Titlecased.bin index bd0caca046330b47fd8c4651dba83db2c6740d5a..991c2734168afb7bd4d1e4025b2267c0b1860708 100644 GIT binary patch delta 43 ycmeBBo1wRtH;%O-|?~Hv1t41!5I_6@7IEP+P`f0z$9} z7jOf&k}x&#h-6Gj?v*+7B>UyW?5nFMuCYTqU{B2eU{7tIRH+UbQlqX0KXJoi$uhDi zUb2lW+Jgf)B5r(vU&*LjdM|NsUxqCX{*-`az8Wvt92AHjroa!8)U(CNSOWPMy+|`Z;btHKn$K_$L8%>BmP~7Fhn3)l0+Uu8qVPo?uhdQIFb)a&NllGt>%Di delta 412 zcmXZUPbfnH90%~<&)b_lZF_sB{7IygiM-3S!(>wqqLCaN$W{)N)g;NuE<14I^>f(4 zP82tX=O8KhbD-4JxVlP9BSmvC-<89s-=Ds}U$*-p;387}L^WHME9^;NsM@TuqU~I= z5++xyoe&qS+a>;$Ag6iFKH&vc9Yk)2G$}J`23^KpRuqNTWz~7j7ZR=gY(69EIfuJ{ z1=J$E%YbW}N9EoXVN={%h>J3;b!o>$hgGMN)cTx9zeGnBJFE35Mv%BJ1YsD25qWf{ zhKSf3hcvNXA@+^KBrL-QTtOaQp#(pGoYDVpSPne<9F`I96wk??cfx2PZfu2KFd-@q zy-Upzx8x+CZ^*O0B`IGgzsas|-h*F-X^6v$?KbMzZmW;6ipvjE7X4#JnfME-?^Q^{ blic_t9Wmna1SA35auzP&67ujO0}Zo(O$~3K diff --git a/resources/tables/CR_Common.bin b/resources/tables/CR_Common.bin index cee9f022ff0d03db90d07c3bd647198a0988daf8..79c9c3b3d47b1cfa17a945f6dfa8af695b5c34f9 100644 GIT binary patch delta 178 zcmZ3%wS$X;fq~JNfq`M!Mvmo-f+rXlv`+!?KL!RpprD@L<_nBnjAEA_Ffd;F%)odV zsQ7Xi5GMd}#pDd;Rcvnx85rMenJmC!KRKKwK=3C6<9DE<@5Mme0K_*Y?_ja_EMQ># x2^9HR2Ew4*+6TIAZ_+ delta 161 zcmdnNwStR-fq~JJfq`MkMvmo-iaQw?wD$t>2_QZN#Fv2h4G_O)V9*09((~MWfU%2_ z?=n!+Q3Cyb|3$fU;>M<~WG??te5-j+Gf$=*~&G%v;ZUEvdlQ*!~8~QLX g{tN)(Y#;`T{+tfP2cY-@kbcI%$G`~13P8FZ0MEWHK>z>% diff --git a/resources/tables/CR_Devanagari.bin b/resources/tables/CR_Devanagari.bin index 05c104ccd58ba1a8e77067475ca14bec49c965ac..7a9437b56a3f691db75e2f50f3c7453b756b385a 100644 GIT binary patch delta 6 NcmdPUn4r%19{>e(0tf&A delta 6 NcmdPUn4r%17XSrv0tNs8 diff --git a/resources/tables/CR_Diacritic.bin b/resources/tables/CR_Diacritic.bin index 2456daab5253717a0c04ae2507261c0715734e01..409b3ba9512f0865029f24122d94d7d579f60a33 100644 GIT binary patch delta 58 zcmZqRTENA@z`*Fvz`(G0BgZRdK3*jTMqYIWMt(OS4w(Fbc@mq1B?F^`)#L^iBR1LT N42-hVCvRX0002Ot3OT28iL%wm&Wz`!WGa`FO31pt!32h{)o delta 25 fcmcb>e1MsQfq@|(h|M>07%@(EV$7JliBS#!NSp=J diff --git a/resources/tables/CR_Dogra.bin b/resources/tables/CR_Dogra.bin new file mode 100644 index 0000000000000000000000000000000000000000..f252d95fa8256c1c2bdea157a81b65ae4de91b98 GIT binary patch literal 16 VcmZQzU|?ooU|?imlmL{fq_w-fq`N2Mh<00#`wuPjOvVan?o3XGco?09Ka%PSir#evlxiWfVc{Z YYk>43Al?APJAwEB5FY~K3qbrI01Ap6yZ`_I delta 70 zcmZ3$If0Xdfq_w(fq`M-Mh<00#)Qc_jOvW_n?o3XGco>{9Ka&4=)=JHGXRLQfw%#P Orvvc;D82xsp8)`PG8OIs diff --git a/resources/tables/CR_Emoji_Component.bin b/resources/tables/CR_Emoji_Component.bin index 142380a4fba475b87137b0444707ddd31972bb87..93a5bc8543903fd6d2578fdf6849ac6283798a32 100644 GIT binary patch literal 88 zcmZQzU=U?sVBi8`WhmAH(jaUA#Fh*U3cOJK7)S&0KYlP~{P>K4@#B96#?QZj7)bxz O0K}Ua_!ty`xE=uB3K3cW literal 48 ocmZQzVBlt8U|bdfq`K<5PNUr5NBfiF%o%ZP7kS+ z%2K4cGr~Vjm&Cja>S8|H(2ilXMYpkwJrvb3J;yCx#rOuC^J9whzLmxVGMGeOOr<8~ zlX+iR%!v73#6Fl`-2ro|FW@_91@{KCU|+C?brf)jGT0ZgFJw;0oNyXBG4;9y{25Cvkci5yydG7}gWWOf1ZULf8-(Le$KN$drv delta 17 Wcma#>;9y{25Cme5i5yxJox}hVR|0MT diff --git a/resources/tables/CR_Graph.bin b/resources/tables/CR_Graph.bin index d25f97d7c3591965ec43d24dc48f3e2135e53426..dc269de68aefb551741b35176081cfb634852915 100644 GIT binary patch delta 448 zcmXZVPbhrVv>>h|2a1Wx$y9@SBnHmzDn* zX90dNp69qE!@R*s^NwRIANiVjo5j^dZ0~_y2th=8w0Mi=Bi1@0NbHEhI$d(7@Xh#v?>Aqp#|;kJ%TJ;Kn||q4t|NhapZeJnybeC E0E^LlBme*a delta 369 zcmXZUze@rE6bJD4JkIV;PrVGnN+KvMghOahBDkPIDx)BYAfg{jf)PbUOIQ$*E!Fjc zBBZ6ES|Ye18iIowq)F1hp&^89QU|FwG<^8J_xSSczFMyYAO-;($EFll=XqIVhwR8q zbYjI^(H#<)xhR&*QW_gHguA$9*|?0N0N@s>TbLF1c{;Fm1ebu@ly$zMZ6%vr7J1Lkre_N0DDRoj0)VYS7G@D@<0R|2p; T$rO^B{P|YY8@$))SX1&_`V6hX`>wK_g&ZJ_KVhC7LC`!{WBq zaYFT4pP8Ma*s5DmcC3&+SXyE=X$5f*3PP<9=x9J8ii%F+R;5A*K@bO>iugdqrQr?* zDXuz+@C_s4MJ{9eb-; zY)8vF* zOw&;~i#77Yu67Ar;z{vgGI)_f(>fKzhtd@4%IZ^ pXNJbCnbw!>bjWR3UF0=5>|8soNAX8ylt&NmWv<_{3*U=RQR diff --git a/resources/tables/CR_Grapheme_Cluster_Break_E_Base.bin b/resources/tables/CR_Grapheme_Cluster_Break_E_Base.bin deleted file mode 100644 index ce53e851905c32b536ac009b925c9e72549c18e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmXZWp$fua7=_{USHW&j*JiaERG6s2pjRRW1rdvgtXkX+teM3uV<3pd3-Bu325Y|J z7arbrIFkC3JjrjElA={XRqk^z2~BY~5BikL0t_(140E%fYi!Mq?!jIb;{2B{HHEseRf*{l^VOtC+D0!eGt zTG>`cO<8RbT;?JlP>Lr>E1NAPvyJH_Oasel)3u5Tz0bMlkJmmM{C?+qzTb21y&@@f zB5Juvs-RM2%qw_ZWbAfypvyW$_TVs%;M=6Mph%jFd$9%^tW)G^oW*bW9fP=tOCmR9 zTE*ltG@u24;3}>srH4e)a}mWvJYMmB+XV7!T57sZFHUM2~B*{@C4s{)B8Ps!1u@uyGn2$qkhq?xHa-PLzi~3G2 zsBKW!Va^V7cD@7k4eC17b^gPsh=;lcbv@bwEClsEi$P6e1xdf2wV+=QwG8_7Xx$cd zJQ_V}Uhai4hSXT!y9i4_UtZ46OAYVCpoW+Ay{zx0AA^3pT9?&BYTsDLNa}fi26x6g z0Q&P$*GF%@xu7o}bq)IR(U*^!20i&S>iVeb``-GI)Ov9etZi@~eejo9Gf3`=pL6ox zk1wo!WE;K$`}cDOe)buNfcqG@-I_&evn|dv@G@$!6|dqoyoDX81M3CoUket2&p_}t zuuhP5g6trt!`36DcISU*g!;Ro>$HewU# zGrS)M&;j;j93}Zoh0i2KJR%Vvs28DLq$w#kPb7B&3UD*1W6(z~XXl2&%-pEO9dR}K za_PyXCxi2IwRKnz_U68bYK!j%w^M{=B$^6(F=mp?E6N=)N=dB(tP!mNcQN`2K1Czg zd$bw5alslShj7WdO#USjE5vkAC&u~2j-wYR(T@S}ZjASgYozuM{uPOLL+3C?Me_JC z8LX3cMWm2Ah14mcPlGj!c&>OVrlAfWiZoP$Gi#{AOW1{auto##H>Ox=q{ev}`Q&6A z#u2c7qkf(mS`+_kDgyVvsSGu!#a^qGYy)@JI8P!m1-GIEoOy!JLxLG4?y{DX8fR#< zklG&X1NSX)5S(eE3x}*fNoJY&JE@sk1~YEf_@6dBK50ZmMgqtK^BQF?qxGWH^`w-3 zQCjMAcwQ9W)5=N3Sfs&=0PesXEVRy(7ex6cp+Hn%2_6s?n=0ve|z&y=IqUG3douO=>L`ePtg6JsBOO)`f2L;A>GipIdv# z{b&czV9ufW7JCS>&rq|qo7AWuVx7=|q;OnR_(n`XKA3Bmxki{* zg!x2fgLPeI;X0s>OOGydahZv`)G8xapd7342HwX9s1p?{1~ZTGZj3#~*q`w(`56*m zZ!!9eF`F2BjJ1l2b7pbgi?auVvxxJ4ocH5*gZjoh`kd6qVxCs+636n8Z)ZlTP5;a7Pp=F}34r5gOl80*XD}FZB<^KVkUc%h~ literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Grapheme_Cluster_Break_Glue_After_Zwj.bin b/resources/tables/CR_Grapheme_Cluster_Break_Glue_After_Zwj.bin deleted file mode 100644 index 84c2e0643a8503a621c228b3894d03c2ae1ec112..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmXZN%?&_67zEJSn*!8eBT<8hTDAiXxVx=TfrB0>NFq*t&gNqdFAqQtAO*5YYHkJ^ n0iQ_V0q#ts?4`$QgJ!0|DF diff --git a/resources/tables/CR_Grapheme_Cluster_Break_Prepend.bin b/resources/tables/CR_Grapheme_Cluster_Break_Prepend.bin index e948e99a308caa632c034f74622caf4c6cb0ffb1..f4490051ba66012fc34a8141487a419ddd6dda2d 100644 GIT binary patch delta 24 ecmaz@;9y{25C>xJi5y030%sW*1

iPyhfb!~|FX delta 17 WcmYd@;9y{25Cvkci5x}~o#X%%K?0lr diff --git a/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin b/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin index 4132ea8ec1e3c02dd170bd04ef173fb6623df994..c07e55ba56285378c449e49e861ff2fd63435821 100644 GIT binary patch delta 102 zcmbQhd4Q9Hfq_w-tMVgFPCY~vq?8W$SvoX_g=FLoO3XGGD*drNFP3~d0 hXSA7ohTVO#G{|mVG&R7Nj3(*3h delta 8 PcmeBR>|mVG&R7Zn3(x|f diff --git a/resources/tables/CR_Han.bin b/resources/tables/CR_Han.bin index 5b48d2de00a350435e18a606c39402e3345752f5..3bf341577351e4e985f8d2945777c32280d36cb9 100644 GIT binary patch delta 11 ScmbQhIDv73KjZs}0S*8cdjt~z delta 11 ScmbQhIDv73KjW*30S*8cX9Nxa diff --git a/resources/tables/CR_Hanifi_Rohingya.bin b/resources/tables/CR_Hanifi_Rohingya.bin new file mode 100644 index 0000000000000000000000000000000000000000..989b1e2043c285c4f6d2f6356d91510cd40507b1 GIT binary patch literal 24 acmZQzU|?lnU|?ck|vgexi&C01wLp9RL6T delta 9 QcmWFtm>|vgVWNx)01wXt9smFU diff --git a/resources/tables/CR_ID_Continue.bin b/resources/tables/CR_ID_Continue.bin index ff930213e81324be00ea651f4a779e5bdb39cd22..a9d253653b5623b6ae104f3b77e27eea721018a5 100644 GIT binary patch delta 311 zcmW;EF-QV&7zOa}yX*AiIR1AMc$r2+bioA%l4ULq5p6a$nM)KB(kL#q*(7&-i;LtM zGz7O)5DiUHLl86zEp67)ru1m|4e!BwVK7`ZiHt6h_7s_)Mg!p@`Y!TVmbjisPKc5d zIp=`i<(hkm)RZVSjW@M1$Ay_Mo!jD>FLp?jyN3sOj7R2%#s%>#A2(I2#&^=UO7VwP z)_GkV)m*lT*!E!!%ESs;G)MUIec?)CTW-q3bRlnh{C6f6efGAM2U(no;!)MOTc`HVJ`mk9Vz{w)wAD9OMm kE(^rkKx_cSmXiwvjVG@bET0@DR5AIMkSgPwO~MMy0I^~=VE_OC diff --git a/resources/tables/CR_ID_Start.bin b/resources/tables/CR_ID_Start.bin index 434b8f3cc43dc05e7b9ece7ea43e97326c6a163e..89b69fa56e3753e3e4401fd1f5a4f884c8469540 100644 GIT binary patch delta 225 zcmcbhazK@Xfq`W`0|Qg|M2^#f2@DLZ9YA~mh+hHm`;AXFvocmpp24=5cLD>0%q}3_ z3&i_3Td<2WG3rka;8bUPKe>W4oN?#m8=UTp|28XdsWUU0PWIr9lH+AyVB}S1VB`nV z{4zkS4#fsQ+I8{*US(Dn21Y@b%?Eh-89AjG7$txTCA24B;B#i3%fKi#cd`J#mzrz> z1EXvz5T^ri1`uZfaVHSZfMB@?42*K0CP(lmvE?~1Fy_@y-odZV_;K?C{sJZd-8nLS delta 122 zcmX@0dO?MQfq`W*0|S%iM2^#fi3|*^?Ld41h+hHmhmB7*voe-Xp24u7;B;sFyIF%vote>iasY4C|mUr&-i|#fjHyGi5?CBE&v6k delta 16 XcmeBR>|mUr&-iMhfjHxvi5?CBEx!eu diff --git a/resources/tables/CR_In_Chess_Symbols.bin b/resources/tables/CR_In_Chess_Symbols.bin new file mode 100644 index 0000000000000000000000000000000000000000..91f78801e64666f8bb4bf59e52f9cfda17a03868 GIT binary patch literal 16 WcmZQzU|?ooU|?im`~@U` literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Dogra.bin b/resources/tables/CR_In_Dogra.bin new file mode 100644 index 0000000000000000000000000000000000000000..546696473dac1c92143f375396be701a7b7d2804 GIT binary patch literal 16 VcmZQzU|?ooU|?imlmL0}cQH literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Makasar.bin b/resources/tables/CR_In_Makasar.bin new file mode 100644 index 0000000000000000000000000000000000000000..11113a4bb2bec9a5f881dece54aeb9647493f6ef GIT binary patch literal 16 VcmZQzU|?ooU|?imlzRZg{{aS>0wMqa literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Mayan_Numerals.bin b/resources/tables/CR_In_Mayan_Numerals.bin new file mode 100644 index 0000000000000000000000000000000000000000..d99e51ac99a63b44d72a23e7e91e885de31b92ec GIT binary patch literal 16 WcmZQzU|?ooU|?imyz~Hw{{sLFIRlCS literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Medefaidrin.bin b/resources/tables/CR_In_Medefaidrin.bin new file mode 100644 index 0000000000000000000000000000000000000000..5aef9f10dc7365552810888d03f6837478c5c195 GIT binary patch literal 16 VcmZQzU|?ooU|?im%yR(Z`2Yo(0m1+P literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_No_Block.bin b/resources/tables/CR_In_No_Block.bin index 186f4e228abeed8eae5f2e58fa83cfde84561a29..36342352779f583b3701afd829f609a2703d6fe5 100644 GIT binary patch delta 110 zcmZo*UcfBCz`&3W#KsH^90fo;f1*UNpaTOVUpx>u0P%kYM*f0{C0cCaK$b+n#5wAm z8yFbn?lUmTGfX_9&1%oUn73f!8)L@%lNA`%#NOmHFupm!!1xxZ`aJ^>1L#QF>j90fo;pMgPU0ub+?C=kraz`)2C55x@hR04vo4)c^nh diff --git a/resources/tables/CR_Kharoshthi.bin b/resources/tables/CR_Kharoshthi.bin index 0ed91f6b89e66be756d58fbe440fb53488d575b4..2dc09929282ab615c25d010c69e6807203e91bfa 100644 GIT binary patch delta 30 dcmeb9n4m9d%D~8F0mN27Y!Ad9KpX(X5dc6{1Azbl delta 30 dcmeb9n4m9d%)rQH0mN27Y!AflKpX(X5dc6M1AYJi diff --git a/resources/tables/CR_L.bin b/resources/tables/CR_L.bin index 7bcf4bbddf2c27ea290bcc622eab12f29d95f8ef..47fc27e9edbe5e6bc204e778f187987f22c00a7c 100644 GIT binary patch delta 225 zcmcbhazK@Xfq`W`0|Qg|M2^#f2@DLZ9YA~mh+hHm`;AXFvocmpp24=7cLD>0%q}3_ z3&i_3JFv?$G3rlF;8bUPKe>Z5oN?#m7o6^l|27+N$ul#WP7dIWlH+AyVB}S1VB`nV z{4zkS4#fsQ+I8{@US(Dn21Y@b%_n&I89AjG7$txTCA25s;B#i3%fKi#cd`V(mzrz> z1EXvz5T^ri1`uZfaVHSZfMB@?42*K0CMWPmvE?~1Fy_@y-odZV_;K?C{sJZd9N;qb delta 122 zcmX@0dO?MQfq`W*0|S%iM2^#fi3|*^?Ld41h+hHmhmB7*voe-Xp24t_@Ss)F<7l8N|5dQ_@{}V4r m@ySeJV364b#Cw5w|Hc>d85ws@p1@SZmgm60m{&iE`3C@T;~Dt? delta 72 zcmbQi@q?X%fq~&K5Z6uQSS_2#z`)whz#y;yh>rsCaVS0uq|Z)#Ahnr`aV{h0ItGU2 R8-RHG+feS$V3y6U-0{=HxaBy?Uu4iCa4#HcZ bcsq~=;hi8nd4fE|nu`mfTOrFE?o3Uc^3|4zaM*Yb**wh){Phy|W z_;2$J_V-MTrjt9kyySR+ns}8N82N!TzYGwoL$LvncAb2IOPSS$fl<(9^9L?|MouXP zMhT!o3GGQd)~s_G7^UV;w&3wnlTBb?luZTVbRf?* delta 99 zcmV-p0G$809pD@Y000A*0005Ykq9#Z@Uc8r1PTz)000pB000pElavJe0e7>I1wR1+ zE|bs(Cjsh{_y(5&{j-nfJ diff --git a/resources/tables/CR_Lower.bin b/resources/tables/CR_Lower.bin index b21c4defe88162c029afd262bfecd5a34149a6b4..e02da1e4034e961bbcdd1fc90ef62657443dcc87 100644 GIT binary patch delta 89 zcmeCs*r36|z`)AQz`)eHkz+E4XabPe!N4GJ0f>JA@n0bRzj*(V@Y?z`)ALz`)e7kz+CkYa)=>zIg+OG#Bqy28QJzyd8umzYvO=>?QmR04_fc Ah5!Hn diff --git a/resources/tables/CR_Lu.bin b/resources/tables/CR_Lu.bin index 209614d2f610d2d7e3f1915cb61a835aebe79bd3..8dcba87a6d59fd03c923b886ccd61f5335c9af9d 100644 GIT binary patch delta 59 zcmZ3Wen6drfq~^c0|Qg}Mvg@sd@>Ul7-V(<@m?U_zj+16B~G^GI~W+2@0eU6q{Wu! Nz`&Rnzj%QVBLL+d5bFQ{ delta 30 mcmX@0zCfLWfq~^Y0|Qg>Mvg@sn|Egut1Q5fq_Y#fq_wYBF7{)_P-1a?0+ZD&}O_m@kkmQ=RXDp&VQ3N81FN(Z02B+ zVrE?Z*K CT_xuL delta 71 zcmV-N0J#645x@`#0006H00038kqDBJqA3B?k<4b3Isx4Q1G5+c8UvF$1@MzP1~HR! d1{eX#lZ*x@0X&nm21k#U0)!`TU~!U@?P6e* a?E~V;Ks*JAr$MmXR|ZD8Z<9Z;NB{tG7!Z2^ delta 36 scmdnN)xpKVz`*Fpz`(FzBgbOq$(xz~vq`ZtFiLSuKEUEMS&3B)0G&+;nE(I) diff --git a/resources/tables/CR_Medefaidrin.bin b/resources/tables/CR_Medefaidrin.bin new file mode 100644 index 0000000000000000000000000000000000000000..22e3982e12c320e6479735295574d33649ec3a9e GIT binary patch literal 16 VcmZQzU|?ooU|?im%yR(ZSpWr;0lfeK literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Mn.bin b/resources/tables/CR_Mn.bin index 571425af9f3f40f2bf3a5a4aaa6ad73169fc2057..89f0d1752c48e955a0b4eeb5c7c9c88e8cb5e554 100644 GIT binary patch delta 164 zcmew$bU~Pdfq|)*fq~I-BF7{)_P-1a?0+ZD&}O_m@kkmQ=RXDp&VQ3N7%#K3Ffj12 zZ2rNxh?#B0e+GsX|2NNIm15-MRbgP{RcB!2cLU;p$s5?B8Bb2;VYg?rp6tVJ&Kk$S zC=xfhfqjyYggyhKggFpf0WhVmhR4ASfq=8uOGZ257yn|y0 E0M5!N761SM delta 77 zcmca0{6UC=fq^NSfq_wXBFChOi!>RpOgxh|*^2SvW?`oJ%$s+yN-$1-#1_eTYO)Qx hJ)_O!8g}!^yV?7>q!<|(rPzR&b8-yFyvb6W+W@4?7P$Zb diff --git a/resources/tables/CR_Mongolian.bin b/resources/tables/CR_Mongolian.bin index 9e10184fbaaf29bf675e76f3e246ddc3f0cad042..8fdb01ebd0c0a42e712f167e3e366b7979c6c954 100644 GIT binary patch delta 22 acmZ>8n4m9M!N4HV0K}^p7{wBRI0pbUeFPl< delta 22 acmZ>8n4m9M&cGni0K}^p7{wBRI0pbUYy=zt diff --git a/resources/tables/CR_N.bin b/resources/tables/CR_N.bin index 84448d70f9bd9fea3b2cd684be44fdfaa4230b25..e684b6892a7546e6f42e3fc40a16cd51956b6f4c 100644 GIT binary patch delta 148 zcmZ3%{(+r?fq~&S5Z7+xSkA=gF?j=%l^m}D10$~`10!Do5Z5s<^2-9T8W0BpameHk zOhs(63m6z>S58h~R`SbhU|`If#=v;#0T6#?V7v^}b-99p@%lL+{?EYp;y4hWXJC98 f0K}0DjBg5ocr_5O1>*HUyb*}EFfe{(0Ad~ht+y(t delta 77 zcmeyszJi^Dfq~&A5SMJ^SkA=gK6wL^6&qgy10!GEWDe${$xX}(YL|iB%Y_V#*Utg* Ze+I@E$AS1f1LMm8AdX~U{Kx>rJOETq7j6Im diff --git a/resources/tables/CR_Newa.bin b/resources/tables/CR_Newa.bin index e8e534eb0c48c1a6372d692cdc5396d2ee573c47..8dda1b9606af36c9b30f81f279ebf49519acb5f2 100644 GIT binary patch delta 6 NcmY#Tm>|y>2LJ?P0Z#w` delta 6 NcmY#Tm>|y>3jhRS0Zsq_ diff --git a/resources/tables/CR_Nko.bin b/resources/tables/CR_Nko.bin index 6afc50727240cdc12b96a805fa42c74a9c44dd0d..38c35e1000a2a1df8e8905799b2eb81d58445a45 100644 GIT binary patch literal 24 bcmZQzU|?lnU|?ckU_SuFzkv8J5dQ}N8T|v= literal 16 VcmZQzU|?ooU|?imU_SuFzW@a?0nGpa diff --git a/resources/tables/CR_No.bin b/resources/tables/CR_No.bin index a62aaa1fb27f1f45fb3d78d0d8a153ebb6f34921..912c7803d1efb9d5c4e89c3485e0343aab4475f1 100644 GIT binary patch delta 105 zcmaFCynuy+fq|hNh@CfbgflXFOio~Q;^UWPVB}W=;y@q{nY@6}$S$vefiZ6y1LLI! sK>V43@p1wXS1>TXI1a?;85rLb0`Y1fUJJzQfp{YjZ((5k$NHq-g089V? literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Other_Alphabetic.bin b/resources/tables/CR_Other_Alphabetic.bin index 64749cc343c4413e697e141da14bee137dd2367c..6ed7985b66cdfd6994965ac44c7645cfe597a771 100644 GIT binary patch delta 84 zcmeytvw@d`fq`)~0|Ud=jU2mJ*mzYK7)xgccz`z*Kz`(G6BL_F5Xc+?o7YKiVV4fBR2A-D95{%Os8T~eIU|Ph;#vjVS z$R9a5fJLA2#N-B+EH(*i21W_%$uC&6*yO%5Fv|UyEWoNImp7e(F>e+Fjwq~t`D0v7^gEbdTu_zw1{zX7K<+9$;mTVvLJ?GVHGE4%+2AfwR6o~B zK=tvn#8fw@B%ykfkE+LFuO}{Sgl6zVK&rHGo8~6g>Y$0(HViAoIstMWxjsN_U^Y6T z2WDUu&f(^dB(zFym$Vk=7Fn?M@}OMVf@S5z4j0q_?l@3ciaVt(QmwnCUtex;q0Ti1 z<1hh}unwDGg1|QH!69))2HqvDuUW&b#NizY8E$@+m@!gvi@)19;yZ#q7=}pl#VBO! z(;V^Baq`_BWC<1p>^b5r*0S>ugL^qB@;A*A=aA$UVd-BK?>;0T1!r&pY4{=jK*`6n HD8->)cVvDI delta 389 zcmXZVO(;YG5C`xXug81ZuV)pj>M4g!RyIls`M5Z&NRrF8yOEHCUUT3e z7YC~(^$s|wm5ZEY_u%LxN%^=SZTt@ozh?f^G?Qt0Xx50-3ZkM-TZ_2I5hh^`Htc8( zzu7Zpkw*4znDcf%&IRe>6fZhio@P}ca;egwjHoN0Yj0;C}? a_kOD`O8gyzIAHp{4cULUsE-mWAN~Vp>}p;B diff --git a/resources/tables/CR_Punct.bin b/resources/tables/CR_Punct.bin index 3c0a30f9998b94d7de1432549ffd442001389c18..4aa12de33b29412073fc43a19846aa09aa2cd339 100644 GIT binary patch delta 100 zcmaFCHG`Xjfq^lVfq`MuMh~7oGqB delta 57 zcmbQi{ep{wfq^lSfq`MoMh`+}E)fq`)+0|UdIjT}sjZ0!FS7})=B=3o?O;yl5?pnVF6|82Hlp2fuXW(@-) z7;ga58zx_1wVy1`<{|i#f$=-gi0{Qf+yKNkCKs^TTNW@d{sfBrECb>yD6Rq0i+~uY Y|L0C1J^;jrfcOFs|7T$Ql>o%K0FaV1dH?_b delta 123 zcmaFCdx4jOfq`)|0|Ud&jT}sjn}rxfnIv~IFlg@u;uAo83WzTO@f#q1zuAC!7SrTg zthTIr42&NQCX29n3;tkW{0=nYdod6<0P&T{1#I?;J`9XM1AsUih=HO%rvvc;D82xs Gp8)_a^CpY{ diff --git a/resources/tables/CR_Sc.bin b/resources/tables/CR_Sc.bin index e10e76a4afbaa4d4b51f9a22676e882185b67590..000338b5d6fcb083745852311dd3e407e4a88ccb 100644 GIT binary patch delta 35 ncmbQhxPXy^fq_9Ch=nI|D6z5sV_;zaKT#utgMsnQ1`q}ScFqW- delta 19 ZcmZ3$IDwIafq_98hy^EdC`~j<0{|YV15*G1 diff --git a/resources/tables/CR_Sentence_Terminal.bin b/resources/tables/CR_Sentence_Terminal.bin index 22be5298cc955daa181f517f5ea29d51787560a2..3c850b398387621b40652dba9c81b38ff26d9e0c 100644 GIT binary patch delta 93 zcmZ3%a)X6~fq`Kv5PMDJP-c{ys3RxFVa~t+#+E=Dgl&P?Zli}5BO8Ax10#RrV!Z delta 48 ycmcb?vVw(!fq|hDh+QUfC^O1W)REhmq`^3O5@W|?B_;*FJ@XkDLHJe&2m=5e^$lSF diff --git a/resources/tables/CR_So.bin b/resources/tables/CR_So.bin index a93ed019ec56108e97727ad7fc6f0596842f5dcc..9b7f556d90d26ccaaf92301b07d4ef50ffb33e51 100644 GIT binary patch delta 127 zcmeys^@EFpfq^lWfq`M&Mvi(W&Jzp_+NXf{-{u8Oml)aJtYKh$vu1Jui}~dBECGT) z85q9 z<41$Zb6A1}e=sn92kQP_48#pUd}R`=y`m2T|yik%6&;fq}8>695@L1Lyz% delta 14 VcmY#Tm>|yihJmqzfq}8>695?z1LFVy diff --git a/resources/tables/CR_Telugu.bin b/resources/tables/CR_Telugu.bin index e1aa0da35ca8eb138e3dc920fdc146a9055399d2..dcf1c0ebd3c071a59c21acd254ef6d214d379fdd 100644 GIT binary patch delta 18 WcmXTO;9+23kOX2N&BHKJBnAKznF1F8 delta 26 ccmc~O5Mf|okOpF21_mA=#lsB5tP^=+03H1TIsgCw diff --git a/resources/tables/CR_Terminal_Punctuation.bin b/resources/tables/CR_Terminal_Punctuation.bin index 81835aa307f40010fc018820d274033b31c47b77..93d74d0e713dabd20a2de22631af2bf1de8fcdb9 100644 GIT binary patch delta 85 zcmbQhwu6m>fq~&H5T{M#h-Q?VnDUKJ&xe5ljQxPL-{c6!S8V*D42=AdlO335vB`aB fV3hkY`394gSl)C7#=IE}jCzgb6^(= delta 48 zcmdnNHi3|yhexgJI01|%#kpKVy delta 9 Qcmb=Zm>|yhYNA8}01|5hi~s-t diff --git a/resources/tables/CR_Unknown.bin b/resources/tables/CR_Unknown.bin index daa80e5855cc571f4342fa42450979515cf64d7b..22d939c8e3f87d9ba2ecb8ae8c192b78e891ccdc 100644 GIT binary patch delta 464 zcmXZWK`6s<6bJD4EbPB*|EV}T$h2vk19EKg*VGc*?9d9>W9tR%sqU6a)gk?A%vBd4uA3`bKo%s5 zwvYuoun&jC^)K)%X?3I2M;zLf0keZYC1{?h!b>I#dE$o&2tYLTY&LM&8$SGYl6tlH yS-jREOOE&(V?V19hbP&#`nr~he^(#^QHT{KkwS$%Q0q9r*`oPJlK5 delta 412 zcmXZUPbfnH90%~<&)b{#*0#5Y@+Xl}i0m@$Fxk`&@^8t(L7^NdE0W~2T~_AA>*wIW ziL#r+bC8t32TJWQuCCJ3NYNb3ceTT(-=Ds}U%Kn6QzKFhqN+_x3wh=+l%>n8NGlht zIX{=Iogn9|`z8L904I6fKIH{g9Yk)2G$_+*3SG)xQ51zYWX*ZYmlCP|YCI?EzJP~{ z9BLjuq+i?SVR_WT>=(Bl^gdapC{N0ceqdwREG28dlj2*Cgh$&-6| zkchprkR&!r#J+KufE7r<4P@aB3h)canSB*eIr1EGNQS(VJR|$wnAt>J-wZwAhln_g z4)uVz=|DP-guEDAvg~W;ciHvLd+;ka1+%bfyG<9{Ej44T;_}lki?t(Wk@y>_pEXFr cv)t8&+s25CF^B`U#XY!$YskW@^w*940}w55X#fBK diff --git a/resources/tables/CR_Upper.bin b/resources/tables/CR_Upper.bin index 5a9637e3ff2d2080634e06a77b55b72c9ab84bf1..f9f2a2bd5688806d4dc1b0283b12677eaa9eeeae 100644 GIT binary patch delta 60 zcmX@1{z9FDfq~^G0|QgdMvg@sd@>Ul7-V(<@m?U_zj+16BTlyEI~W+2@0i>nq{Wu! Oz`&Rnzj=d@1S0?rzY(GU delta 31 ncmaE%enOptfq~^C0|QgVMvg@sn|E? diff --git a/resources/tables/CR_Word.bin b/resources/tables/CR_Word.bin index 8274bfb4422e3c36ed8a4b307968994c8b354425..ef7ea713ab3f1f76c5e580ce3556027d0c4a8d5f 100644 GIT binary patch delta 311 zcmW;EF-QV&7zOa}yX*AiIR1AMc-h(51s5bplDRlUwb|HYE>TEG?JjU8flSMJp^zskEBa#hZpy3rtBY{bRlnh{C6f6efGAM2U(no;!)MOTc`HVJ`mk9Vz{w)wAD9OMm kE(^rkKx_cSmXiwvjVG@bET0@DR5AIMkSgPwO~Mw;0IUKwVgLXD diff --git a/resources/tables/CR_XID_Continue.bin b/resources/tables/CR_XID_Continue.bin index 964a9bd62b45d54272b1e06f97caec3b42426139..fae9503970bbc54765929cac3f8e4f4216a0b2f0 100644 GIT binary patch delta 333 zcmXZVze@rE6bJD4?!5ElIPOjYO}sFO91IjBsT^vEaMQoQT%vMt2_js&u}SWD1TB(7 zLqS7uQ$e&e^kZyk3ZbP)LIB9;ke8rS>UD~ zpAf|-;&XxDlMk~sQqhjn!9oAb=1A&R_sn a#B)RV5hK~vI~&BEWAT%D{*Eq_IrSHd21+IX delta 177 zcmcbib3&Vgfq}JG)MUIec?)CTW-q3FpA3pu{IDJ0I}ud b6@tc-9}AXGo+MN;Sx8uw@y%unVFhLY?%y=n diff --git a/resources/tables/CR_XID_Start.bin b/resources/tables/CR_XID_Start.bin index 5ebdf7dd8f330312fe69aaf4806fd775463827dc..a92bfbcf996c04b765359d1399979ea1984e4719 100644 GIT binary patch delta 225 zcmeBB{h`Xiz`(MXfq^M*BFAaL1O^7y4j{e&#IJz({l+JoSs5!P&tO~3JAr{gW)~0x z70c}3Y{4$h#Hc?xfK#3E{p1SHaK@dJZ*aOZ{@bj;70=9QI=O*2N{*L-fst34fsr3b z^UDCSIusiKY1hd&c$HaQ7#IazHviz|XXKP(V3YtVl+d2c!SBpEmw{1g?qm;sFE!Z& z21eObAWjG33?R+|;!Yr*0l{()7#QU~O`gD?#Fpp4z?fG*`2)W?|$5!T@l-BSFG>oX0Z2OE-IpU5yeDZ931Tx zu@~$OTVi=~eYVe&Z}MBtsaX>*t&MphbhzA*S6P@A)r9=w7(&675Q^66t9ZS>hBxTz zc%#07H|d*rv%ZD5=-YU!zJs^vyLfxfX(+fy>~Oe`cj^|rOFzK7bt~SZAL70G5#FaC z8!}-YGCPCpPQ zjgPoNf5NBqXPnhvaHIZ;PwRHvq`%=a`a3?Wf8b{Q6Q2wDU2<>#i#YG_8(+|W@J0PM zTUA)vxnss-ndWS5*KVECq&T<7WMYU(iJpW@^<-S8r{L~-D(<1D;hwq@_tMjGZ(W7^ z=oz?g&S^|$68#)z;c`72_t$gq0G;50dM+NM=i$M6J|3bM;GudU9;O%J;s5_nOcoOr r4omO|y%dks)p(R%hDYn=c#K|w$Lf`MoL+^;>(zLIj%l`~q%r;j#{#N0 delta 30 mcmX@o$2g&#k%fVQwQ?g%n&jq5(hky_@0pqKZl2`2i4g#ncM2i^ diff --git a/resources/tables/CaseUnfold_11.bin b/resources/tables/CaseUnfold_11.bin index e40a062b7ff8ce8e8b85821a5d862ea34e641a1f..b58b88ed2a58d0e30735e30dfc88c241838922d9 100644 GIT binary patch delta 980 zcmXxhw@+4K97plzCYTr}CI-Xc?B;45z=FMZ#ok4)4Jo$E;NWOQ?A=#UQG6AV1o#gO zDt7E0D|SgN$2Z6AbMnnE&+xRCZc4I3=#pQXbtNasZV44Vq7ZU7hmd_$Z^75}R(xG= z!>xKdzM*&Eo4OL;(mU~OU4`%HUHERsNyyzz+;iB2+w@+1U+=>Y^nUzMAHa|FLHt-B z!cX*J{8S&o&-79JJTZXQ* zx8&4y@0Q~5-%YAMy|GtA*Cd{q=_t+%Q9MiMHWxw=1|rw8Eqx&SZG1MxyV z2rtru@#2h=C>}x-ISj>1^f0_s567_{ftTr#c)1>hSLo4rr5=M<>9M$2kHf1IV?0r! rC*V>&5tr#nxLi-hYxESnR!_z2bRk}^r{N8HI{yD|G$Y-ocUANk#V558 delta 28 kcmeCEzf#V^z`*ipBg;9l&A%kJNNwI_yn|!&C);U^0Im-VQUCw| diff --git a/src/org/jcodings/unicode/UnicodeProperties.java b/src/org/jcodings/unicode/UnicodeProperties.java index 55b3d1cc..5be7c6c6 100644 --- a/src/org/jcodings/unicode/UnicodeProperties.java +++ b/src/org/jcodings/unicode/UnicodeProperties.java @@ -145,7 +145,8 @@ public class UnicodeProperties { new CodeRangeEntry("xidc", "CR_XID_Continue"), new CodeRangeEntry("defaultignorablecodepoint", "CR_Default_Ignorable_Code_Point"), new CodeRangeEntry("di", "CR_Default_Ignorable_Code_Point"), - new CodeRangeEntry("graphemeclusterbreak=extend", "CR_Grapheme_Extend"), + new CodeRangeEntry("graphemeextend", "CR_Grapheme_Extend"), + new CodeRangeEntry("grext", "CR_Grapheme_Extend"), new CodeRangeEntry("graphemebase", "CR_Grapheme_Base"), new CodeRangeEntry("grbase", "CR_Grapheme_Base"), new CodeRangeEntry("graphemelink", "CR_Grapheme_Link"), @@ -420,6 +421,20 @@ public class UnicodeProperties { new CodeRangeEntry("soyo", "CR_Soyombo"), new CodeRangeEntry("zanabazarsquare", "CR_Zanabazar_Square"), new CodeRangeEntry("zanb", "CR_Zanabazar_Square"), + new CodeRangeEntry("dogra", "CR_Dogra"), + new CodeRangeEntry("dogr", "CR_Dogra"), + new CodeRangeEntry("gunjalagondi", "CR_Gunjala_Gondi"), + new CodeRangeEntry("gong", "CR_Gunjala_Gondi"), + new CodeRangeEntry("makasar", "CR_Makasar"), + new CodeRangeEntry("maka", "CR_Makasar"), + new CodeRangeEntry("medefaidrin", "CR_Medefaidrin"), + new CodeRangeEntry("medf", "CR_Medefaidrin"), + new CodeRangeEntry("hanifirohingya", "CR_Hanifi_Rohingya"), + new CodeRangeEntry("rohg", "CR_Hanifi_Rohingya"), + new CodeRangeEntry("sogdian", "CR_Sogdian"), + new CodeRangeEntry("sogd", "CR_Sogdian"), + new CodeRangeEntry("oldsogdian", "CR_Old_Sogdian"), + new CodeRangeEntry("sogo", "CR_Old_Sogdian"), new CodeRangeEntry("whitespace", "CR_Space"), new CodeRangeEntry("wspace", "CR_Space"), new CodeRangeEntry("bidicontrol", "CR_Bidi_Control"), @@ -486,9 +501,10 @@ public class UnicodeProperties { new CodeRangeEntry("graphemeclusterbreak=regionalindicator", "CR_Regional_Indicator"), new CodeRangeEntry("emoji", "CR_Emoji"), new CodeRangeEntry("emojipresentation", "CR_Emoji_Presentation"), - new CodeRangeEntry("graphemeclusterbreak=emodifier", "CR_Emoji_Modifier"), + new CodeRangeEntry("emojimodifier", "CR_Emoji_Modifier"), new CodeRangeEntry("emojimodifierbase", "CR_Emoji_Modifier_Base"), new CodeRangeEntry("emojicomponent", "CR_Emoji_Component"), + new CodeRangeEntry("extendedpictographic", "CR_Extended_Pictographic"), new CodeRangeEntry("unknown", "CR_Unknown"), new CodeRangeEntry("zzzz", "CR_Unknown"), new CodeRangeEntry("age=1.1", "CR_Age_1_1"), @@ -510,12 +526,12 @@ public class UnicodeProperties { new CodeRangeEntry("age=8.0", "CR_Age_8_0"), new CodeRangeEntry("age=9.0", "CR_Age_9_0"), new CodeRangeEntry("age=10.0", "CR_Age_10_0"), + new CodeRangeEntry("age=11.0", "CR_Age_11_0"), new CodeRangeEntry("graphemeclusterbreak=prepend", "CR_Grapheme_Cluster_Break_Prepend"), new CodeRangeEntry("graphemeclusterbreak=cr", "CR_Grapheme_Cluster_Break_CR"), new CodeRangeEntry("graphemeclusterbreak=lf", "CR_NEWLINE"), new CodeRangeEntry("graphemeclusterbreak=control", "CR_Grapheme_Cluster_Break_Control"), - new CodeRangeEntry("graphemeextend", "CR_Grapheme_Extend"), - new CodeRangeEntry("grext", "CR_Grapheme_Extend"), + new CodeRangeEntry("graphemeclusterbreak=extend", "CR_Grapheme_Cluster_Break_Extend"), new CodeRangeEntry("regionalindicator", "CR_Regional_Indicator"), new CodeRangeEntry("ri", "CR_Regional_Indicator"), new CodeRangeEntry("graphemeclusterbreak=spacingmark", "CR_Grapheme_Cluster_Break_SpacingMark"), @@ -524,11 +540,7 @@ public class UnicodeProperties { new CodeRangeEntry("graphemeclusterbreak=t", "CR_Grapheme_Cluster_Break_T"), new CodeRangeEntry("graphemeclusterbreak=lv", "CR_Grapheme_Cluster_Break_LV"), new CodeRangeEntry("graphemeclusterbreak=lvt", "CR_Grapheme_Cluster_Break_LVT"), - new CodeRangeEntry("graphemeclusterbreak=ebase", "CR_Grapheme_Cluster_Break_E_Base"), - new CodeRangeEntry("emojimodifier", "CR_Emoji_Modifier"), new CodeRangeEntry("graphemeclusterbreak=zwj", "CR_Grapheme_Cluster_Break_ZWJ"), - new CodeRangeEntry("graphemeclusterbreak=glueafterzwj", "CR_Grapheme_Cluster_Break_Glue_After_Zwj"), - new CodeRangeEntry("graphemeclusterbreak=ebasegaz", "CR_Grapheme_Cluster_Break_E_Base_GAZ"), new CodeRangeEntry("inbasiclatin", "CR_ASCII"), new CodeRangeEntry("inlatin1supplement", "CR_In_Latin_1_Supplement"), new CodeRangeEntry("inlatinextendeda", "CR_In_Latin_Extended_A"), @@ -593,6 +605,7 @@ public class UnicodeProperties { new CodeRangeEntry("olchiki", "CR_Ol_Chiki"), new CodeRangeEntry("olck", "CR_Ol_Chiki"), new CodeRangeEntry("incyrillicextendedc", "CR_In_Cyrillic_Extended_C"), + new CodeRangeEntry("ingeorgianextended", "CR_In_Georgian_Extended"), new CodeRangeEntry("insundanesesupplement", "CR_In_Sundanese_Supplement"), new CodeRangeEntry("invedicextensions", "CR_In_Vedic_Extensions"), new CodeRangeEntry("inphoneticextensions", "CR_In_Phonetic_Extensions"), @@ -739,7 +752,10 @@ public class UnicodeProperties { new CodeRangeEntry("inpsalterpahlavi", "CR_In_Psalter_Pahlavi"), new CodeRangeEntry("inoldturkic", "CR_In_Old_Turkic"), new CodeRangeEntry("inoldhungarian", "CR_In_Old_Hungarian"), + new CodeRangeEntry("inhanifirohingya", "CR_In_Hanifi_Rohingya"), new CodeRangeEntry("inruminumeralsymbols", "CR_In_Rumi_Numeral_Symbols"), + new CodeRangeEntry("inoldsogdian", "CR_In_Old_Sogdian"), + new CodeRangeEntry("insogdian", "CR_In_Sogdian"), new CodeRangeEntry("inbrahmi", "CR_In_Brahmi"), new CodeRangeEntry("inkaithi", "CR_In_Kaithi"), new CodeRangeEntry("insorasompeng", "CR_In_Sora_Sompeng"), @@ -758,6 +774,7 @@ public class UnicodeProperties { new CodeRangeEntry("inmongoliansupplement", "CR_In_Mongolian_Supplement"), new CodeRangeEntry("intakri", "CR_In_Takri"), new CodeRangeEntry("inahom", "CR_In_Ahom"), + new CodeRangeEntry("indogra", "CR_In_Dogra"), new CodeRangeEntry("inwarangciti", "CR_In_Warang_Citi"), new CodeRangeEntry("inzanabazarsquare", "CR_In_Zanabazar_Square"), new CodeRangeEntry("insoyombo", "CR_In_Soyombo"), @@ -765,6 +782,8 @@ public class UnicodeProperties { new CodeRangeEntry("inbhaiksuki", "CR_In_Bhaiksuki"), new CodeRangeEntry("inmarchen", "CR_In_Marchen"), new CodeRangeEntry("inmasaramgondi", "CR_In_Masaram_Gondi"), + new CodeRangeEntry("ingunjalagondi", "CR_In_Gunjala_Gondi"), + new CodeRangeEntry("inmakasar", "CR_In_Makasar"), new CodeRangeEntry("incuneiform", "CR_In_Cuneiform"), new CodeRangeEntry("incuneiformnumbersandpunctuation", "CR_In_Cuneiform_Numbers_and_Punctuation"), new CodeRangeEntry("inearlydynasticcuneiform", "CR_In_Early_Dynastic_Cuneiform"), @@ -774,6 +793,7 @@ public class UnicodeProperties { new CodeRangeEntry("inmro", "CR_In_Mro"), new CodeRangeEntry("inbassavah", "CR_In_Bassa_Vah"), new CodeRangeEntry("inpahawhhmong", "CR_In_Pahawh_Hmong"), + new CodeRangeEntry("inmedefaidrin", "CR_In_Medefaidrin"), new CodeRangeEntry("inmiao", "CR_In_Miao"), new CodeRangeEntry("inideographicsymbolsandpunctuation", "CR_In_Ideographic_Symbols_and_Punctuation"), new CodeRangeEntry("intangut", "CR_In_Tangut"), @@ -786,6 +806,7 @@ public class UnicodeProperties { new CodeRangeEntry("inbyzantinemusicalsymbols", "CR_In_Byzantine_Musical_Symbols"), new CodeRangeEntry("inmusicalsymbols", "CR_In_Musical_Symbols"), new CodeRangeEntry("inancientgreekmusicalnotation", "CR_In_Ancient_Greek_Musical_Notation"), + new CodeRangeEntry("inmayannumerals", "CR_In_Mayan_Numerals"), new CodeRangeEntry("intaixuanjingsymbols", "CR_In_Tai_Xuan_Jing_Symbols"), new CodeRangeEntry("incountingrodnumerals", "CR_In_Counting_Rod_Numerals"), new CodeRangeEntry("inmathematicalalphanumericsymbols", "CR_In_Mathematical_Alphanumeric_Symbols"), @@ -793,6 +814,7 @@ public class UnicodeProperties { new CodeRangeEntry("inglagoliticsupplement", "CR_In_Glagolitic_Supplement"), new CodeRangeEntry("inmendekikakui", "CR_In_Mende_Kikakui"), new CodeRangeEntry("inadlam", "CR_In_Adlam"), + new CodeRangeEntry("inindicsiyaqnumbers", "CR_In_Indic_Siyaq_Numbers"), new CodeRangeEntry("inarabicmathematicalalphabeticsymbols", "CR_In_Arabic_Mathematical_Alphabetic_Symbols"), new CodeRangeEntry("inmahjongtiles", "CR_In_Mahjong_Tiles"), new CodeRangeEntry("indominotiles", "CR_In_Domino_Tiles"), @@ -807,6 +829,7 @@ public class UnicodeProperties { new CodeRangeEntry("ingeometricshapesextended", "CR_In_Geometric_Shapes_Extended"), new CodeRangeEntry("insupplementalarrowsc", "CR_In_Supplemental_Arrows_C"), new CodeRangeEntry("insupplementalsymbolsandpictographs", "CR_In_Supplemental_Symbols_and_Pictographs"), + new CodeRangeEntry("inchesssymbols", "CR_In_Chess_Symbols"), new CodeRangeEntry("incjkunifiedideographsextensionb", "CR_In_CJK_Unified_Ideographs_Extension_B"), new CodeRangeEntry("incjkunifiedideographsextensionc", "CR_In_CJK_Unified_Ideographs_Extension_C"), new CodeRangeEntry("incjkunifiedideographsextensiond", "CR_In_CJK_Unified_Ideographs_Extension_D"), From 81ee9f6573c718f633d562519993317a18b63bea Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 27 Dec 2018 22:09:47 +0100 Subject: [PATCH 044/158] [maven-release-plugin] prepare release jcodings-1.0.42 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 89105919..075eb4c0 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.42-SNAPSHOT + 1.0.42 JCodings Byte based encoding support library for java From e11d8ec4d9f3f4b1bd0060259dda0c0fd4e74d5f Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 27 Dec 2018 22:09:54 +0100 Subject: [PATCH 045/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 075eb4c0..3ac5b12e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.42 + 1.0.43-SNAPSHOT JCodings Byte based encoding support library for java From 68a9bf5b8baf070d62b3ca089dce5cae1f0d3c1e Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Wed, 6 Mar 2019 17:11:07 +0100 Subject: [PATCH 046/158] update to unicode 12 --- resources/tables/CR_Adlam.bin | Bin 32 -> 32 bytes resources/tables/CR_Age_12_0.bin | Bin 0 -> 5424 bytes resources/tables/CR_Alnum.bin | Bin 5712 -> 5728 bytes resources/tables/CR_Alpha.bin | Bin 5416 -> 5440 bytes resources/tables/CR_Assigned.bin | Bin 5272 -> 5344 bytes resources/tables/CR_C.bin | Bin 5296 -> 5360 bytes resources/tables/CR_Case_Ignorable.bin | Bin 3160 -> 3216 bytes resources/tables/CR_Cased.bin | Bin 1120 -> 1128 bytes resources/tables/CR_Cf.bin | Bin 160 -> 168 bytes .../tables/CR_Changes_When_Casefolded.bin | Bin 4864 -> 4904 bytes .../tables/CR_Changes_When_Casemapped.bin | Bin 976 -> 992 bytes .../tables/CR_Changes_When_Lowercased.bin | Bin 4760 -> 4800 bytes .../tables/CR_Changes_When_Titlecased.bin | Bin 4888 -> 4928 bytes .../tables/CR_Changes_When_Uppercased.bin | Bin 4896 -> 4936 bytes resources/tables/CR_Cn.bin | Bin 5272 -> 5344 bytes resources/tables/CR_Common.bin | Bin 1336 -> 1376 bytes resources/tables/CR_Devanagari.bin | Bin 40 -> 40 bytes resources/tables/CR_Diacritic.bin | Bin 1312 -> 1376 bytes resources/tables/CR_Digit.bin | Bin 464 -> 480 bytes resources/tables/CR_Egyptian_Hieroglyphs.bin | Bin 16 -> 24 bytes resources/tables/CR_Elymaic.bin | Bin 0 -> 16 bytes resources/tables/CR_Emoji.bin | Bin 1184 -> 1216 bytes resources/tables/CR_Emoji_Modifier_Base.bin | Bin 280 -> 296 bytes resources/tables/CR_Emoji_Presentation.bin | Bin 624 -> 656 bytes resources/tables/CR_Extender.bin | Bin 240 -> 256 bytes resources/tables/CR_Graph.bin | Bin 5312 -> 5384 bytes resources/tables/CR_Grapheme_Base.bin | Bin 6456 -> 6568 bytes .../CR_Grapheme_Cluster_Break_Control.bin | Bin 160 -> 160 bytes .../CR_Grapheme_Cluster_Break_Extend.bin | Bin 2664 -> 2696 bytes .../CR_Grapheme_Cluster_Break_Prepend.bin | Bin 96 -> 96 bytes .../CR_Grapheme_Cluster_Break_SpacingMark.bin | Bin 1216 -> 1224 bytes resources/tables/CR_Grapheme_Extend.bin | Bin 2656 -> 2688 bytes resources/tables/CR_Grapheme_Link.bin | Bin 408 -> 424 bytes resources/tables/CR_Hiragana.bin | Bin 40 -> 48 bytes resources/tables/CR_ID_Continue.bin | Bin 5664 -> 5712 bytes resources/tables/CR_ID_Start.bin | Bin 4800 -> 4880 bytes resources/tables/CR_Ideographic.bin | Bin 136 -> 136 bytes ...In_Egyptian_Hieroglyph_Format_Controls.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Elymaic.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Nandinagari.bin | Bin 0 -> 16 bytes resources/tables/CR_In_No_Block.bin | Bin 416 -> 432 bytes .../tables/CR_In_Nyiakeng_Puachue_Hmong.bin | Bin 0 -> 16 bytes .../tables/CR_In_Ottoman_Siyaq_Numbers.bin | Bin 0 -> 16 bytes .../tables/CR_In_Small_Kana_Extension.bin | Bin 0 -> 16 bytes ..._In_Symbols_and_Pictographs_Extended_A.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Tamil_Supplement.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Wancho.bin | Bin 0 -> 16 bytes resources/tables/CR_Inherited.bin | Bin 232 -> 232 bytes resources/tables/CR_Katakana.bin | Bin 72 -> 80 bytes resources/tables/CR_L.bin | Bin 4800 -> 4880 bytes resources/tables/CR_LC.bin | Bin 1048 -> 1056 bytes resources/tables/CR_Lao.bin | Bin 152 -> 96 bytes resources/tables/CR_Latin.bin | Bin 248 -> 264 bytes resources/tables/CR_Ll.bin | Bin 5112 -> 5144 bytes resources/tables/CR_Lm.bin | Bin 464 -> 488 bytes resources/tables/CR_Lo.bin | Bin 3768 -> 3816 bytes resources/tables/CR_Lower.bin | Bin 5168 -> 5200 bytes resources/tables/CR_Lu.bin | Bin 5056 -> 5096 bytes resources/tables/CR_M.bin | Bin 2208 -> 2248 bytes resources/tables/CR_Mc.bin | Bin 1336 -> 1352 bytes resources/tables/CR_Miao.bin | Bin 32 -> 32 bytes resources/tables/CR_Mn.bin | Bin 2512 -> 2552 bytes resources/tables/CR_N.bin | Bin 1008 -> 1048 bytes resources/tables/CR_Nandinagari.bin | Bin 0 -> 32 bytes resources/tables/CR_Newa.bin | Bin 32 -> 32 bytes resources/tables/CR_No.bin | Bin 544 -> 568 bytes .../tables/CR_Nyiakeng_Puachue_Hmong.bin | Bin 0 -> 40 bytes resources/tables/CR_Other_Alphabetic.bin | Bin 1712 -> 1776 bytes resources/tables/CR_Other_Grapheme_Extend.bin | Bin 192 -> 200 bytes resources/tables/CR_Po.bin | Bin 1408 -> 1440 bytes resources/tables/CR_Print.bin | Bin 5288 -> 5360 bytes resources/tables/CR_Punct.bin | Bin 1432 -> 1464 bytes resources/tables/CR_S.bin | Bin 1768 -> 1824 bytes resources/tables/CR_Sc.bin | Bin 160 -> 176 bytes resources/tables/CR_So.bin | Bin 1400 -> 1456 bytes resources/tables/CR_Soyombo.bin | Bin 24 -> 16 bytes resources/tables/CR_Takri.bin | Bin 24 -> 24 bytes resources/tables/CR_Tamil.bin | Bin 136 -> 152 bytes resources/tables/CR_Tangut.bin | Bin 32 -> 32 bytes resources/tables/CR_Telugu.bin | Bin 104 -> 104 bytes resources/tables/CR_Terminal_Punctuation.bin | Bin 824 -> 824 bytes resources/tables/CR_Unknown.bin | Bin 5256 -> 5328 bytes resources/tables/CR_Upper.bin | Bin 5096 -> 5136 bytes resources/tables/CR_Wancho.bin | Bin 0 -> 24 bytes resources/tables/CR_Word.bin | Bin 5688 -> 5736 bytes resources/tables/CR_XID_Continue.bin | Bin 5720 -> 5768 bytes resources/tables/CR_XID_Start.bin | Bin 4856 -> 4936 bytes resources/tables/CR_XPosixPunct.bin | Bin 1392 -> 1424 bytes resources/tables/CaseFold.bin | Bin 18244 -> 18328 bytes resources/tables/CaseUnfold_11.bin | Bin 16264 -> 16348 bytes scripts/generate.rb | 2 +- .../jcodings/unicode/UnicodeProperties.java | 18 ++++++++++++++++++ 92 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 resources/tables/CR_Age_12_0.bin create mode 100644 resources/tables/CR_Elymaic.bin create mode 100644 resources/tables/CR_In_Egyptian_Hieroglyph_Format_Controls.bin create mode 100644 resources/tables/CR_In_Elymaic.bin create mode 100644 resources/tables/CR_In_Nandinagari.bin create mode 100644 resources/tables/CR_In_Nyiakeng_Puachue_Hmong.bin create mode 100644 resources/tables/CR_In_Ottoman_Siyaq_Numbers.bin create mode 100644 resources/tables/CR_In_Small_Kana_Extension.bin create mode 100644 resources/tables/CR_In_Symbols_and_Pictographs_Extended_A.bin create mode 100644 resources/tables/CR_In_Tamil_Supplement.bin create mode 100644 resources/tables/CR_In_Wancho.bin create mode 100644 resources/tables/CR_Nandinagari.bin create mode 100644 resources/tables/CR_Nyiakeng_Puachue_Hmong.bin create mode 100644 resources/tables/CR_Wancho.bin diff --git a/resources/tables/CR_Adlam.bin b/resources/tables/CR_Adlam.bin index 41665b96697308fe8896e8495f39fd595b6fe0c5..82bc7f5936b2e4095776d29283e89cebf3b70308 100644 GIT binary patch literal 32 fcmZQzU|?rpU|?ooe8~XB-as4x#F0Q82gLCJQEdk} literal 32 fcmZQzU|?rpU|?ooe8~XBUO*fG#F0Q82gLCJQCtT% diff --git a/resources/tables/CR_Age_12_0.bin b/resources/tables/CR_Age_12_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..3b7125192237cd59fccaa4f5bcd7510251a2353f GIT binary patch literal 5424 zcmXZg3vgXkxd7m`k|s^g-X}@VDS0(%f>c2IFa_ixuUth?m`dbn#nPw<+*WBorl6xX zSG|H&AmX4_kOq0A55yJ$Q3?hXLA;ben-&lx6^AJzAuW$KiEZwe)5FZiKWFc?*ZTi| zt$lK)A(WjNLdjjB@L%cGA(VcN6?})4{GjLt@pkSAq3naq=X@4oT-o*9$Pamf0sh5X zyc0sX70R2K8N$>o)ttcsHqy@+`$DLgOB*NC&V^i5)G02Zm-~5;N7xcV<+u4?dmM(qu$J~c>wih)SG!6^=AHpdNWTmP&6c}Go#MTE=HLMAyIFl-bB4gih2|EChASp zo2WNYZ=&8ry@`4gbtdXePDOo*`V#de>Pyb&0@Ri)VliJpeTj3Jd<*p@>PuGQ{3Siy z#LcYYXWUwJo4A@gxD!1{^dPwxbtjMV2mZ{HJcYUwbr;z0WRkiQ=TM0u^}n4*w=^3aiJrA{|pXM_-uc^9Hb*0NtTk3qK>Pgj;swb6eD%aFLrS>V6 zZ)%@X=Q5RVD&JJTseIExw(<8O`<1?mywkU^XX)+`vhvTCV!yKL$f_f&j;uPe^3KXT zEAOnlvuANG^32LJy8`{sejEMI{usT^ZbXjRhw;u8^ow%L%CF!VaVv5xcwT%3`DNvo zoy^VmL6!4V^_J4N3WSE5%{cW_rxpJ?qW>sIMcm9-1>s7imT>}S;r zyo7bD^`Y9?tNsLE;tGDkD)hM8xv2g>HuGW#S`=y?$NN!W&YDT)&FNQ8zj6!cz&_{f zbAi3iImfw9u0!s*>*-+w_hD~y4`I!m{0p4Pob__@&*@oCzw$NMr~E&@dDC8)nnS3A7hEdktTvi>vT_!+Jd5;QOdy0Q=D3 zd^gU(T#XmeiTWFz&BpK1!zz0DC7y45Gz5=?8NOp?bYT1p^Urvj|Af$VEOKdb7Mko~ zlYMG3Pt)&s1bf~zz*q>)=4l>fJcJhe(4qk?F1EDtF`R`KbF^5epa18A%po4{c7Hh6^HrBlt!um)#l~gf}T3R`j!a~Qz7B5WCZ1q`eIY10>~ElzvpJVbxQwO9W4|-Le>wkQ;(!VDPdtjAOqg%tDfDvU zIkw|FW8x)-c#WM5Ga6z@$Z{x$^I=ZpBu-%g9W0`ou@Eg6V+m6^ietHf9&VwxXh7T- zVu|NUZpHNy*Gh&M53w|G2y;0D>-dcwON}r6Iji|2Pcj(d6yvA3KBbqnY+wt|V?M_{ zmK{bLUtrk*<*rXXhIY=QlS@OaaJ{08ilU78A=FcG9Qsh84;7xPxPaT}<5vu^n|F8@ zIaJP|h2!yDLAUrDHt`J4h3NNj^!qqw%1Oy{5Op*l55I?F#(reXtnXEE*OKFsI$QB3V|Rv)wam^D{b zC*KUQ+W2bMt6i^N$Pm`8alOVlsW}@xuUWxkJY6&(?qr0~5WSvp+R@mPX{XV_a=P)% zG~=he!VdH{XMAoNdXzgE<8t5Sx}ufh_1uW_k<*);8vVA2xqo5ZoOQjnF|Y4=eb4K8 zzM2}$n?IZ*XyZtZLND{`&!51loQ{6w&qTfXjw0tGKWP!pUH%fjL>E_uINiF_^=tZt zMaE5Ej5?-2!2mCWc#zKrJ-|b}9HOtVSZm!{>(qL_wiEN#8dqyfZ9jhr(N|HdYowXk zv~fy^^{&^;y}lRwT0e0>gU=0ptYbSb^3M<(jc-(AqxBkpK|gy#Y;wJ+f(-Vo={P=y zaZU1R>O$|EZo<4xdf)V5h`t_Ub2*-EuEcjuv*(+g=>qRp^GV3H*}Bc?oE5kn`OUHqv${ik|3^b?bN%Rfw4s($ zeLl@Oyi8o;^OANhqLcr|97~+*B?G+42=9jID>*LJhov3Jd#U|h`Z=6|rC0L}^yPB% zUH-EWml?n849?*zuKo4o6r?g(+fxB>Y-D?WQDA7E#Q{yfCz;* zR-ddSyVcn!xJ$end$9E$?&Y^UT=acOBMY_sOJH6i*N9k*`|@x||R3-WsLc77G2KXY-YoC@lh!NDBD zEc9ULh!A%ew_^@%IEOo|yW7Z{c>FyJ34Zyq5Jm%n07k5&amMjlPd~mq&VWc1AYxdmiH%p2fM{W&Ey`8sxI8 zi+gx2#N8#hzWW5)`8XZu!R}7J7~{>=zuA?|T~&sXT?dEDRgMu>Y|-HQ!y2@Vpgp3>+gV8am9gu OrigEaD)(z9CjK9NAxO~x literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Alnum.bin b/resources/tables/CR_Alnum.bin index 351e619cce758aca1093719b999f9f83e609eb2f..2ddcbc5c58d58672b8f7fd3b254a9a441fdc4087 100644 GIT binary patch delta 361 zcmXZVu}cDR7{>AUweC*g%FHXcI-*hN$O z9tcf4lTzDdo)hDdW!35sSsj^+R6|48MBXjjL7V780ZmxCBewKuQPC6PUe9q}CiS;-O`S>eXEl?L%}L)2o9W1bM39$dl`G~pS7t{3!`c!XdEW?>Or**iGF zoD@^>WNL-Dum(jqf-2x|0V4$r{Mo}mu}xe;%b&zGv_1wdWMBvK@;IL1$pE*&hIv?k dB}l>Qzt#m5GeNBG95k|usj%Wq?oe*qE|U`7A{ delta 348 zcmXZYF-Ssj6vg3lmG^wp%#jXRE*Mg^dW0$QY5KfweFC#LckIszo_ndi# z?t$_zP!aNyMLzPAs}F%`yYdHIL4N|{)*IKmM%|dT4OFwb=x#{L)Z7=3IqX{!{Rpn< zN@z;&LJ?~RGMF=sP)uY}Kl?|=<{+5_Wl5<-O?riF0h0fM@GVmKhSb>lut|rPWuV2~ QYCzg-dzR)qj1yUvfAsNH%m4rY diff --git a/resources/tables/CR_Alpha.bin b/resources/tables/CR_Alpha.bin index f25418384760af4aa99c793f3781031d8a419f9f..ac8ab8ea25d9281db7fc9c6f0001b5253eaaf60c 100644 GIT binary patch delta 356 zcmXZVF-SsT6vgp#h4*~mqi1S@BGOh^5ELc^6+}x4DYmrP5IEWxv@~T%;P5RGK|;lo zrsP|shNPj{EomvOMcNt?T z<#cG=Co-od15+DmNGVHYs?r7VbBQA*4*c2UKzRT;W-DKiTecCW9OY@3ih4hgmUx%9 c?kuHfnKu9RT9DqSY6YWaKLhD!bSIdTUk}G#DgXcg delta 332 zcmXZY!7GDt9LMp`_tDRuJd20tqNnDHIkCn~l42760JWmkPUcK4r8Yff2VW(nmRQeB z$~-Q(_#2#epycFY7f$k7?eOY-_}1s}eM#1nHefPW9`_7E{0Iomv!I?0-K%=NFXG?O?T>Qz3tbuXSl)I*ZJLda<_*0ao zSz4z9Dn(zeBQmYOgQJrRkOB{dA}Lkrjou+U94LQ7_!$Y>kUO?H66J@MMPI$)sO_!F EKYI*J>Hq)$ diff --git a/resources/tables/CR_Assigned.bin b/resources/tables/CR_Assigned.bin index 896a00eb09a7e7f0337fbb6f811389eba7f7bd70..5ac29afea94a3750315a424a3c24d092ecfabbb9 100644 GIT binary patch delta 484 zcmXZYK}eHv7{~GFacQpu_nH%Q9Wpx<1Bt-FL>R71;Q}`nfn72%P_Wn=N=m2j;B*KI ze*&R{BN>Yhp}Zm98XY16!AlgKwh}>FpdB3Vd$Die;lp$I@%$cm)}qy@CDI%hX?nF~ zO$Bt;oe5mi$bv|yfMsl;bf)aq&y6>!Z!+f(%q?q4(`L_FZ~Y)r{)kV;X)Wu7+a1gX zTI{N*ed12G#Z|{lF*Kw*rWzW&5-EyC%6N-!_HGWj`~42Tf^XmFAgXI4l9E|RSmtG8QSRW$ zIFX`3qGlUewF`T206HAPF`U$-kyU4K4i{j;jd5w4mDmzZ_BX}pALQ^ww1h#I zEFwzo5KY!l4LL?Xll@XbQWR)i!+HgWhnJ7{oCDv!~5a3d(Y=lX*~N zj9xwz29v8XL2TQCZMcRTc!EFT`VI()e$#F;!k}#V^n~yl!4Rf#r>wxpoN5J0f zHy{_ji1&~wI|QH?!Vpm|%st$Gi|(!&TEGKd=!7l^65ppmg%a@t5kF)8z{a?-XAE6Tyvp0?DgjkB5qImt$9lfzuRWLN9(PMC03hUlM*x)N41oRBkhi*1>x z-{VQEu_3NlMpHktAsbqhPvu@4Y;lR(hadrquq0vqgk34?(ifq`-2Mh<`G&GF0@ER1_M&tR8g7L&Zfz$kegh;IS$Z6JOC!jm^} z9bz*vU|=+{m|VauE$h#~m=D7JKs+Cafr|1U0`X%Io;-tllH5a};)k{jjE~*`@p}fw U7Z-r|8Uy1?7a;bYY{8=d0F!hl%m4rY delta 101 zcmbOrc|(GOfq_|+fq}7WBZogT>rMs+zTKNcn5|hD_iUcPF2y|g5Z3{o)FlM8qh09rB~kN^Mx diff --git a/resources/tables/CR_Cased.bin b/resources/tables/CR_Cased.bin index 11cd07ba3464c1906896284630db02989d923795..21714e4b28de35b13040d4acce2281584d46bc6e 100644 GIT binary patch delta 56 zcmaFB@q&Ycfq_wyfq|iCBgc6r#r+Hn%MStZF(Cc{#J?CARvQ3u6cEP%ar)*DOa+Vp D%8L;e delta 30 mcmaFC@qmMafq_w+fq|iWBgc6r#+{QNFo`p!ZvMekzz6_+@(9=f diff --git a/resources/tables/CR_Cf.bin b/resources/tables/CR_Cf.bin index 29e490a714a5fd37feca57415e83f9f578999cdb..bbe8747a0c65c89d7331be657491355d206eb17b 100644 GIT binary patch delta 26 gcmZ3$xPp;`fq_92h(#uHRI!;DFff`}Ol(j906IJbs{jB1 delta 19 ZcmZ3%xPXy^fq_9Ch=nI|R88!X0{|jY1K9uo diff --git a/resources/tables/CR_Changes_When_Casefolded.bin b/resources/tables/CR_Changes_When_Casefolded.bin index 53207d9f937fcc01f335c00698a82264a3a402c4..6d9c273e7250178549e7c0210a4cd8e225faac5a 100644 GIT binary patch delta 60 ycmZorTcO6mz`$~nfq^MyBgZNswdK1Q7{GWBkOtv>P<#kTgYXd`J~nxSPyhfZtrP43 delta 21 ccmZ3X)}Y40z`(Mffq^N0BgZPC$+v|306IYh;{X5v diff --git a/resources/tables/CR_Changes_When_Casemapped.bin b/resources/tables/CR_Changes_When_Casemapped.bin index 4da34c532b1ac629fdadfa1576af4108534470ce..a30c67c409327ac2e97dcddb6a2c15ff393cfd5f 100644 GIT binary patch delta 63 zcmcb>{(zl>fq~&W5LZv+xXsu!@yS0n***pa*}lyW81oq=r!X)qp9aM1fOrEC?+4;T LKzwX+0&@WXkpC4s delta 48 zcmaFBeu15Xfq~&O5LZs*xXsu+@yWlwtIz5bvB^z+3UwdK1Q7{GWBkOtv>P<#kTgYXd`J~lZ)$N~Tyc@sMT delta 21 ccmX@0IzyF%fq`Wy0|QggMvf?<$z4Kb068oLG5`Po diff --git a/resources/tables/CR_Changes_When_Titlecased.bin b/resources/tables/CR_Changes_When_Titlecased.bin index 991c2734168afb7bd4d1e4025b2267c0b1860708..e0eab6568ec7bc4b17ebf6eacf2d4847f9c1ee10 100644 GIT binary patch delta 77 zcmbQCc0i4Tfq~^b0|Qg~Mvm7kj7^)ru&A-H$@VcY$o6fP;I!vtoH98=C`)enZUzQ0 U-V3Bbcs~>$2GWNo9}tQF0A!IEWB>pF delta 39 vcmX@0Hbaerfq~^H0|QgiMvm7kjLn$2GWNopAd=w0BnR9j{pDw delta 39 vcmX@1wm^-8fq~^X0|Qg?MvliUjLn3V7`SNUVM1?KHtv+&*Mlf;uYzLiMXDW zyjR?M-O9Q9wD*>X|9)G6-1lOi)$mNXbjKtP{4l4zcQs`y-n?&Fq_~3jCgUsWwAFJk z?e3_G25f7xE2cVbp8ALNo%!q^Jen8nUBnVT;uF5(zv$sJNSfn;x4yDycpJN>7C6=! z?H7%nG@fAg)LGH&dECJRJOeLfzk!O|e?i{+E&7@)g^@%W6PUIN!4aLRF{_^d&Gk5j zF@keQiGC@=!LI065&g;i#v0b~0i3rIpnGc+moP5c%;Ak_i=9^7I?|m~y=pR{SY%W5 zPZcfv!VW00XR!eO!DenZ&1z`i;vvz0Gi`I^Jf5R~mw1H@R79N%xQuJaf<}iO=LTqY MZsH*xnW3JsJs>WlCjbBd delta 408 zcmXZTPbh!2M%&T%Sxgg9Clg>^(0rd198EST5{NBCZ-+sz3i~E zvivDE>p9SKp+q^kkent5e-0?hpQRq3={dZ5|Gs^{zq>#-pc2)#5xFuYbxPrwIj3~+ zNRmifbEMD>NP|Gukw>cvj%~DR7xrM^VWF0JP&4l0ium0RTIU7PKO42>+nr)V66z*f z67=lwqi=!a~}iQX=+`b>A2IEqy?4r$0k z8SVjJSKk3${~#`+r4}<+Kgf-bct4%NIotr|=OGDtn@z(z%seeQUtjAr@n;!c;0-E( s!>>h%!>#=Kdcr#KPslNkEYp#5ER^ULqgff1@nYo4 zH^{@FZ0+gF7U6gjU8DGZsi( zQ3b=7j;b4e=?eKo^rAOuNW$G@KvTLA^W>@aM!B7XqgEj X>JdA7MC@oT>lrO*i9F=b<(>QhA7w`D delta 183 zcmaFBwS$X;fq~JNfq`M!Mh+>)$y$uPf+rXlv`+!?KL!RppoE^^<^zmgjGKj+IT$A^ zvDh+ZPflR5SG>Z&`0W7@zX9S8K>U+|@jK9{@5Mme0K_*YpI|W#6<}ceX$Qm(KwJRC wK-r&VKwJgIH9&e15N`nDoj`m5hz|kr1t9*O6o`|7I1PyF85mYP0OJ1uFVO{H literal 40 jcmZQzVBln6U|@kzoB=>O7>JXBI1PyF85mYP0OJ1uFQ)}w diff --git a/resources/tables/CR_Diacritic.bin b/resources/tables/CR_Diacritic.bin index 409b3ba9512f0865029f24122d94d7d579f60a33..a4e3494699e83c816486a129a3121bf7532abeb8 100644 GIT binary patch delta 158 zcmZ3$^?-|mfq^lcfq`N5MvmExth*Q(_;yWRz!qg>oD0P5K->$&{ZKp$ zNY7?q5RL`n_{{=L%8a}~Q{D7H*fq|hMh^;qr9AXrE=)l1E(364j(FY*@$-wwB0Ei<2;)x7< delta 24 ecmaFBe1VyRfq|hIh%GmA9Aad98Nk5!G7ZM10c2l014FrZU6uP literal 16 VcmZQzU|?ooU|?imGysw&dH@0d0GR*) diff --git a/resources/tables/CR_Elymaic.bin b/resources/tables/CR_Elymaic.bin new file mode 100644 index 0000000000000000000000000000000000000000..c7195add79ae8c0788fd5dd050f5e96d978b8123 GIT binary patch literal 16 VcmZQzU|?ooU|?imy#9U{TNf#lZOe0T91tVEoAo#8yCT1H`UC z><+|*KwJ#OWk6g7#EXD{fq_w-fq`N2Mh<0`$;K=yfj=1-e+mGx6%gA1u^kXQ0I@3&y903n5Elb+ d84y=NaSf1O1jHMFcqb4a0OCVHd;y660|5NhB8vb3 diff --git a/resources/tables/CR_Emoji_Modifier_Base.bin b/resources/tables/CR_Emoji_Modifier_Base.bin index 21af9239a60c636ea8af600fcfdf45e1a3df9fdd..1063fa48f74da2c37af2b69ac3bf82d6a4633f6b 100644 GIT binary patch delta 139 zcmbQiw1SC)fq}sjh*c(X_-j@$Fn+0l;zl6d48*NK+z!P3P&^SxPn_5g?aR-=_!ERB rfLI=g)u7k_NLvE24G`M_@m3(-2E;pncqb6=hT^k8`aBR{1me2@q+>6H delta 123 zcmZ3%G=qtQfq}slh?ORC_-ke|Fn-B{;sPLD0mL;>+z6zbfw&cj+b1?e+e$Dn{*(b? kIUtq?Vl^l>0MeE~YzxG8K)e-*w*m1EAl?bY7lHUL0J>Eu1^@s6 diff --git a/resources/tables/CR_Emoji_Presentation.bin b/resources/tables/CR_Emoji_Presentation.bin index c30463d698c12546275f854d713b28f82dbb383c..91a1dcb705567b0f9ebbcd86890efe89e46d6a83 100644 GIT binary patch delta 143 zcmWm4F$#k~6adk`VqihMkfaUP-b4{Z1R;2WZM=ZN#zOEKf~9@>SXfBJZFDSNGtBCm zhZd0!qCtC3Ig9$=eps-L-^42Y|sxCTfs0^$uoyc38I0P!Ipz5vAk0n*ARg8%>k diff --git a/resources/tables/CR_Extender.bin b/resources/tables/CR_Extender.bin index 711a725b8c445402078ac52a7f5ede8b856222d0..50b45476d51dcb517f730edce7fb2f07e3109b77 100644 GIT binary patch delta 39 ncmeys*uccWz`$S+#PSn49*N~YW?%&2hc-ZL%fR^31&G}Mz`F{o delta 23 dcmZo*`oPG+z`$S)#Ih4P9ygOvl3!^&z>!o{B{TSK|oK~er}S|K^e!A6SurQ9r9 zZ#l?%OKz5glydPWC&R%)A$h&;0pH^A>FL+=Jm05&+3IACL{!v5RFKL@aT8CfGo~tb z%@f%dVF@-N{ZCOp3Wp2W5Ru|wgseM-6r4dC&fyZS8ZyYbYq)`1$ib8G+!RpQ6jw`4a~Fu*uTUfMko2jCydb)o z=A8IiGrW1%wqh~X+Q*pva-vP~qZG9XyOW5W^RNW_a3CJ*gVIA%w)TtD795!+4&fNu zg=0v=2YeETQI3BT<0nr35bMZnw^6WpS!V2=U0&i6s-;!%!#Z(!3+|1meUUjJg^uyw zH{uHRDrNWrlemhVY6SM+U0jaQIUBJ#3DXb;T+MCRX^0^&K!+UU;RTBDNBp}1LD3z) Ee+!6prT_o{ diff --git a/resources/tables/CR_Grapheme_Base.bin b/resources/tables/CR_Grapheme_Base.bin index 7a13881a0e6d7da7063f26b8af918bfbef4420ec..8e014a4763308c08fb45aaf88aee58687e156c05 100644 GIT binary patch delta 509 zcmXZYPe{{Y9LMqRm$~tqsSBsWg{W7-Lo{I>6ckSyG%>8BB7zl)6G6q3M5L$(<*Abg zqmV^{I)0adkRwDvkpc-i2s-sJ@eii3vEN1Cp@$b=9zM_K`@oZU@-1YEc;1M(YU5TY zPlxTgyjL3hAW}4mX?(@Py_mh{_PNZpwdN^zM9Lkr;=M3S`Lh}^4G%WGYa+3q*f3VX zl>RUu3%0e#?kwzbd3*<=zKorGxTx+9(UK1Hx_H%{5Dg?umA|bb_*pau>dO>ass>@yqXEr$j)>@C5~sLC4mWqw^wR6t#4phk&L>TH_MiD3c;q=((ervc z9f+v*nx|#q>OZ2H1Dt_<8AmirFFS}a`~`XT)XbEH+6zT<10c-}VH97m0KO`>ge~ld aIxo7)MgRZ+ diff --git a/resources/tables/CR_Grapheme_Cluster_Break_Prepend.bin b/resources/tables/CR_Grapheme_Cluster_Break_Prepend.bin index f4490051ba66012fc34a8141487a419ddd6dda2d..87bbb0af05abef488a5bbccc77b4a5b6143eb066 100644 GIT binary patch delta 18 WcmYdDm=Mg{!oVoi$-pS<2EqU;?*pL# delta 18 WcmYdDm=Mg{#=t1m$-pS<2EqU<2?L`5 diff --git a/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin b/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin index c07e55ba56285378c449e49e861ff2fd63435821..e519d0b7b8f38b19816f5ba35b8e890829e17458 100644 GIT binary patch delta 77 zcmX@Wd4iLJfq~JGfq`MhMvmKzlV39yOipIj@nRYj=K|?m09}L@lmGw# delta 66 zcmX@Xd4Q9Hfq_wOV diff --git a/resources/tables/CR_Grapheme_Extend.bin b/resources/tables/CR_Grapheme_Extend.bin index d942eb7acfeaff5b553953aa6bbd6d59155a45a1..31ca2b60b4edbd3bc188ab957d8fc6c8f4aa80e5 100644 GIT binary patch delta 90 zcmaDL(jdygz`!)0fq~I~BZoNiW_9KnjGK?MWH2)B-E6?Nh)GQH3In6$bs)Y4#J7R? o0SHgNz;T(?pMf#ofARv(MSKqp7#JU#F)%)Q1H|tqJ8&rg09Laa(*OVf delta 58 zcmV-A0LA}+72p&I0007)0003?u?QCf1-SqK4!g4)1DgQ_Gynh_HnX$@YXJegvmged Q0+ZSZ(UY?YpOaz=9+>eED*ylh diff --git a/resources/tables/CR_Grapheme_Link.bin b/resources/tables/CR_Grapheme_Link.bin index 4b4692fd547bab623a784ff9a79aa7af0c996c5a..82e572de6ca0ce83cb1fdf366a39b7cb6657fcb3 100644 GIT binary patch delta 38 scmbQiyn>m7fq@|th)pJPB(d@BVqoCgwK0Qa$4BrPmroLt4I2LL$I1u*~s diff --git a/resources/tables/CR_Hiragana.bin b/resources/tables/CR_Hiragana.bin index 1cbe946492cdf68a5c983d01cc9845518dea47be..0284cf0115fd7a409fb713e347fe5cc193f1c821 100644 GIT binary patch literal 48 tcmZQzVBlt8U|?lnFmMFoX+S&|i03mfZeV0!+$aac0YDtY!1##)gaMWW2vPt5 literal 40 ocmZQzVBln6U|?ZjFmMFoX+S&|i03mfZeV0!+$hJu_=y380b0cdNdN!< diff --git a/resources/tables/CR_ID_Continue.bin b/resources/tables/CR_ID_Continue.bin index a9d253653b5623b6ae104f3b77e27eea721018a5..1b7f1a7f86ab65099f004cbc4d0ebb814dbb280a 100644 GIT binary patch delta 269 zcmXZUKdV7;90u_3_lSs&4#7lPJ=GE(~D!=E`K?sPIFoK}QKL zh}<7oiBV|BHQ5NKeF5!{Si8uPW-(X9Eo$*x6!dJu=o1?*j9~}A;K312qM^s7qvyF; zBDO7PK@S|jrH!eL=}Vo6TUX*XvU4V$Ag2lVf^VooO-4Uvobu3lCS)K7c_>2p-(g97 OxQk^h&YyB0EASK8ZA zEo?SFb;GCc(^F49PI8tML~55vx$MPNtzh!^pzj)@e`A=y6l|Eo0+y~7`nQG+Y~ciF z`BI+>f2AXAg-=$)d*hlkdJ!T${e5eH4l ze>qx`lxS?|1$ergv?-Z1^&B~T_`>t_a<};eVD<9dU e0v*s1o&6j2Afqox$UhuFChVj{rxD#w9m*dj9!}E$ delta 205 zcmbQBc0iSbfq`W`0|Qg|Mvi6{&vpg|z78Png5q8v4Z>4^csdZz1mgKXyby>N1MyNQ zUJj%|coh(@2I94wm#{Q5aeicAkogM4-!@yY*E2Eh+|mVW&iH+zhXVi>y94_G delta 11 ScmeBR>|mVW&iHYnhXVi>qXYE- diff --git a/resources/tables/CR_In_Egyptian_Hieroglyph_Format_Controls.bin b/resources/tables/CR_In_Egyptian_Hieroglyph_Format_Controls.bin new file mode 100644 index 0000000000000000000000000000000000000000..4e410f70102e8cd3c9c65bd36d218bd530bd7300 GIT binary patch literal 16 VcmZQzU|?ooU|?imG%)~TdjJC&0Nwxq literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Elymaic.bin b/resources/tables/CR_In_Elymaic.bin new file mode 100644 index 0000000000000000000000000000000000000000..59e39aa8271ab65a57c6d2f6a53d570505745115 GIT binary patch literal 16 VcmZQzU|?ooU|?imW`86GU delta 97 zcmdnMynva5fq@|%h>a(52GYL@Cbux^006lJAlCo@ diff --git a/resources/tables/CR_In_Nyiakeng_Puachue_Hmong.bin b/resources/tables/CR_In_Nyiakeng_Puachue_Hmong.bin new file mode 100644 index 0000000000000000000000000000000000000000..e6ef8e32260924b6d286b8d5502d954a789bd081 GIT binary patch literal 16 WcmZQzU|?ooU|?imd(zkwj)peg$= zZXPDhH}nELU6htcGHB{Ka`^Ct=keEXH{yW(3Rq|D__gia0Lccm=z$*RJo9cht@IRF z{iYfHM$E-x%}R6uuSaj@GqEF5HMyl1E2ahzHPgZJbfE%Ssc1i0h-EsEOy^FmWu1G7 zfMyPeaSI$1xW1&QfC`qkY~1?r81q+IaSSR%9Xv4U${m4 cl&9l=Lmx8yfQ4^csdZz1mgKXyby>N1MyNQ zUJj%|coh(@2I94wm#}m*aeicAkogM4-!?n2w=*&B+j!3Y3l)CYwC diff --git a/resources/tables/CR_Lao.bin b/resources/tables/CR_Lao.bin index db9468e283e298d6d2f24231c4765213df1c7b52..5a66edd9762e931cd8ef3215bb14ef6ad3f8d531 100644 GIT binary patch literal 96 zcmZQzU=U|uVBlt8;A;fpCLnHs;x-`N1;jl-ycmd=Lh*7Sy%&fN0PztZJ_f}nfb>}) Oz5v8Gf%py(-vrpBcOd@Hz_8i?h@*fw28dIDI1Px?Cq9q> E00M{+=>Px# delta 24 ecmeBR`oYM-z`$S&#Bvik_A~CBctL97CoupPpAbc2vCvOlEXH4IGLdbv-0Plqo AAOHXW delta 28 kcmbQC@k5=1fq~^O0|QgtMvm1&lP?R2Fs5#PA!NV^0DTV#uK)l5 diff --git a/resources/tables/CR_Lm.bin b/resources/tables/CR_Lm.bin index 28c71890429de4689aa24a4c7b371730becca516..784de7e7f4c2c05ebddcefdc5d4ba2e2bb1aa1d4 100644 GIT binary patch delta 42 pcmcb>{DPT-fq|hCh;24zefpG(n r-Y5seK>3Y9K%4@^>5~I^wZt9*r5@@4u^$9KI>5mA==J6bUI#`1DHuHz delta 199 zcmaDMyF-?Pfq{7~0|Vo=jU1bqJ=+-=_&R{N3yOPzGzd=t;^{y<6Nu*n@j@V848%*J zcsY;;;Z;Dq8i?0!zQSzG#QBkdLFOwEf7>jQzsCp++{voaY2KFfq_++fq|)WBgbPQ)7=aV%RzWA6z>PpAbc2#e*o!U3=FFcfH(?>V}Lk) Ildu6J0A6_)6951J delta 44 vcmcbhu|b1_fq|8qfq|)YBgbPQ(H{&9%YQL2tTq7RC?Jjj;?&Iw!Ul{03F`~m diff --git a/resources/tables/CR_Lu.bin b/resources/tables/CR_Lu.bin index 8dcba87a6d59fd03c923b886ccd61f5335c9af9d..8cb00c6ca468d750d31a9ec237d911b4a7c601d2 100644 GIT binary patch delta 61 zcmX@0{z9FDfq~^G0|QgdMvg8awdK1Q7{GWBkOtv>P<#kTgYXd`KDK#+kO3nAW4IJ| delta 22 dcmaE%en6drfq~^c0|Qg}Mvg9_&AWv37y(UP25tZV diff --git a/resources/tables/CR_M.bin b/resources/tables/CR_M.bin index 4e66f14197b33ab309426a41374330d18b2be99d..a5e5fda372d598442120f27bbfc564c8a7b6c763 100644 GIT binary patch delta 113 zcmZ1=ctVhafq}`8fq_wCBgcQH&HT(YjErA4_poeZ5|g~hz$kegh;IS$10a3^!jm1? zSM&NaFy@1BAP~1t{=hy700D1) LlL!c!ld=dFX|fKg diff --git a/resources/tables/CR_Mc.bin b/resources/tables/CR_Mc.bin index 423c07eed7c30569fdb0d1ac57a3c0f99fe423ec..d1f6e3bd13e6f335ff2f2841a6c3bf79f54f1133 100644 GIT binary patch delta 73 zcmdnNb%Kk7fq^lQfq`MgMvl!)lMgcmFz(wd!n}@AO!6WFqvT~Ez5~Sff%pjsPd>ns SF4)e%crg`-(||Y^h>HN@B^3n# delta 56 zcmX@XwS$X;fq~JNfq`M!Mvl!)te+SdWIj*c!4%B6cQX(3I>yPDSW*S+7#J_60&yA; I=K^sN0Lt$XBLDyZ diff --git a/resources/tables/CR_Miao.bin b/resources/tables/CR_Miao.bin index 1444a8832b6044d21d8171fe996151d1e5102ec2..d606ae32527699190a205d165d71802f601c7f4b 100644 GIT binary patch literal 32 fcmZQzU|?rpU|?oo%x3^%FCg{@;&veJ2jckvG13J2 literal 32 fcmZQzU|?rpU|?oo%x3^%7a$G*;yNJi2jckvF(?G< diff --git a/resources/tables/CR_Mn.bin b/resources/tables/CR_Mn.bin index 89f0d1752c48e955a0b4eeb5c7c9c88e8cb5e554..502ce50a580513df45b576f7de9656bcbd27cd17 100644 GIT binary patch delta 105 zcmca0{6m<7fq|)(fq~I(Bgb*3&DWU(m>KtOe!*JABqn) diff --git a/resources/tables/CR_N.bin b/resources/tables/CR_N.bin index e684b6892a7546e6f42e3fc40a16cd51956b6f4c..da39180cee500704f17f4fec7e994f35d48eeac3 100644 GIT binary patch delta 70 zcmeysK7)gUfq{{gfq|iEBS#f8oBRO=M)@m~8|y>4*&#Y0Z;${ delta 6 NcmY#Tm>|y>2LJ?P0Z#w` diff --git a/resources/tables/CR_No.bin b/resources/tables/CR_No.bin index 912c7803d1efb9d5c4e89c3485e0343aab4475f1..f784b026877faec022a78f6f095a15774091ae86 100644 GIT binary patch delta 51 zcmZ3$vV(<#fq|hHh}|}FTw-LCKfu5!e`WFwMkleij0}u#b%9tPh;11dKQaI@4**fY B4WRAIzVgy#I``}0K}d^><7gD0EX}g-2eap literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Other_Alphabetic.bin b/resources/tables/CR_Other_Alphabetic.bin index 6ed7985b66cdfd6994965ac44c7645cfe597a771..9bc613196325ae2829a665f6047cd7bdcd84fa72 100644 GIT binary patch delta 196 zcmdnM`+=8(fq`*10|Ud|jU4>Unkftn0_i}U3&e#$Tmr;RK->$&{ZKp$NY9<@z&xGN zZ1MwUZC)k@h7};p4Z@Q-Sd`dS{0B1sPu5^jQd{|yfdPb9X#%ks5IaM$50Lf+;%XqS y-JHM@#V96uk%3Y2IuPFi;`>1S1cWE=V4WqF@6W&p#(_Y(9fUnn?@{0_i}U0mOwsTmr;RK->nzbAWg*1A}lp2v2rk zp3Z5?z##Jph(Axh!K^)5m_>fF6^p{;Bo@id%`D-JlRvS};LA2(V9YjSV9XB$;=0KT G*a84`lNwh5 diff --git a/resources/tables/CR_Other_Grapheme_Extend.bin b/resources/tables/CR_Other_Grapheme_Extend.bin index 0b0a288ae529bb901baf39076fad0be3203a0ca2..37df10f4c6f51bb55f06dc0fdf7c9b3ab62d1692 100644 GIT binary patch delta 26 gcmX@Wc!H6Gfq}sgh$SX+B(X`GGB8M+PRxh^06zQ#&Hw-a delta 19 ZcmX@Xcz}_Efq_9Eh{Y#zBuy*|0{|xO1T6pn diff --git a/resources/tables/CR_Po.bin b/resources/tables/CR_Po.bin index f550cc345cce4c05d040324b34e830a07c460a74..c81b683c90751ed7c7d9f199675129381a777daf 100644 GIT binary patch delta 94 zcmZqRUck-4z`&T!z`(G1BZo92YdHf0Px)j8#$?94%`J@9jEw%94={N#u}MB+V3d3` pnS<4cP5wUvqx}EL7OX~c`9M(+-ZLM9Z?!Wp-s)yxd>IGC@c=`L8Xo`v delta 66 zcmZ3$-N4Pkz`z*Kz`(G6BZoBOWNpR-#@x+4jMj{dew$A)c`;3vVl|i?#A+b6XFdZX R2;XW4;%)}UmvKNG4*($l5@rAZ diff --git a/resources/tables/CR_Print.bin b/resources/tables/CR_Print.bin index a9b8e1a3a373190cdb8d98aca6b1d162165a6fd7..d44793fb7e72fefa4f43e63a1c821b8c928ad83e 100644 GIT binary patch delta 483 zcmXZYK}eHv7{~GFak@5Po4BCnLD7Rch!7MEZB(aF!HtQsE*U6zF{TVkqQmH*HiDu* z9m7au(jg{q#BL4`9t4l#=(L%a(Ud8&@xB-P1|2>;hab=HfoD5h3wuObMn#%F?|4!! zeQCXR^=W8T#Gk=CY+~!btaa5q*QAa~+&DKgp0^q`CC`R;S0uZKeUtWPb;0Uyjl0}| zl4ziAt@wsjXHCxkK=Y>NAL$8w5e;SW4afL}Q_&8=W5mq;z|YpMf@s$TuFX}T*F7{K zI&{z6Zc9EI7fnX7hWFS2x01g_m*`k)h^{j;m!di5PA6iBV;&1uzHMCZmdVO@Kyx{Q zhZw^o=szjI#`QlR+i!JGh*l`7Ji$}UidL8LL-b4$u?E_ss*5Ha91b6e)=Q|O21m5P z#YPHg6hYqjV~WASX`iS~l}&2Dz$<*k7Wk9>9S1lRb*AtP&#?q{oE5O+(Coay2YfQI Gn~A@EP?o^} delta 411 zcmXZXK`4U(6bJD4zL9Umx3Bqf*g#pWv6Mm!wtQ<|)aj zSuRMxnd4=v?3{I2qiqAs^AgiW_)@O4A-9K!Jrghun~)I0b)k4kimq-^^ibazaTvq! zI_yFgO7KP;!Ey4F7*BEPi`YcwJ1tWWaz`0;`5qqNg}8#g5|n`3V=cNTnODSYAM7d; zf0y7Ls$dh>uvm-22E2-H^pESr_Amq>0+`yXu+|Vq9)bx4xP?1-hCkw;1qeyTnEMBy C6?HEF diff --git a/resources/tables/CR_Punct.bin b/resources/tables/CR_Punct.bin index 4aa12de33b29412073fc43a19846aa09aa2cd339..89dbb8d333d4e73894c7ee75d35865f55b7a58c8 100644 GIT binary patch delta 74 zcmbQiy@Q*Bfq^lXfq`M$Mh0& cWCd0uHu?VyjPm~{2LPG*K+*h1lN(qi0I2O02LJ#7 delta 47 zcmdnNJ%gKrfq^lVfq`MuMh{1p3c{={e_Y4`NXfU5UtP9$l#AxFU}0FSVlj_A?L7hJ(Z&!Xj4{O; W8&Ok487^v|V_KkNxNN%Uq5lC%%2WCP delta 174 zcmZ3$_kx#$fq`)+0|UdIjU2leH=klmW#l};z@U8!i2rRiVBWJ1{7b}mSF^=pFe-1rAiGgn6uXu%l@!JC+egniGfcPf^<9DDz-;05`0f=u*)?hVu6<}ceX$Qm(KwJRC mK-r&VKwJgIH9&e15N`nDoj`m5hz|kr1t9*^2D$(M delta 16 VcmbQi*ulubz`&pg!~zpJ8UPgs0(AfY diff --git a/resources/tables/CR_Tangut.bin b/resources/tables/CR_Tangut.bin index 92cedd57ebb236af115a9c7a5caf5b1f6b0aa9fc..06a7804d2654a6a57e7ffd463bad61692bdef98b 100644 GIT binary patch delta 14 VcmY#Tm>|yioq@4~fq}8>695@>1MUC- delta 14 VcmY#Tm>|yik%6&;fq}8>695@L1Lyz% diff --git a/resources/tables/CR_Telugu.bin b/resources/tables/CR_Telugu.bin index dcf1c0ebd3c071a59c21acd254ef6d214d379fdd..2dfa002d21b8f7ff49bc235e18fc8c065e9983d7 100644 GIT binary patch delta 10 Rcmd1En2^j`&cMJ^4*(JW0?PmZ delta 10 Rcmd1En2^j`!N9;%4*(Jb0?Ysa diff --git a/resources/tables/CR_Terminal_Punctuation.bin b/resources/tables/CR_Terminal_Punctuation.bin index 93d74d0e713dabd20a2de22631af2bf1de8fcdb9..8778e38e206486327caea7260d06e0069dd90966 100644 GIT binary patch delta 18 acmdnNwu5cLX~w*XXJ#|{Z_Z%6zz6_Ji3fZD delta 18 acmdnNwu5cLX~x`%XJ#|{ZO&l4zz6_Jcn5j_ diff --git a/resources/tables/CR_Unknown.bin b/resources/tables/CR_Unknown.bin index 22d939c8e3f87d9ba2ecb8ae8c192b78e891ccdc..8b376338b46c538fbfe2e3838b65cb081810bc40 100644 GIT binary patch delta 499 zcmXZYPe{{Y9LMqR*SXrnwvoF`1nE-kARQDW6o;N4is z4rgA}Te6;BYgUb$*Pf7mGQT`6H!`Auc`V=ueqtZzqP3lfn%mxw?q$*X6P%eX@69Vs zcSM`+no3`){hny53u#Q_4R|TF2P($@ft>s!x=1e7BZ_YHAYo;FVSTp6Y`Xz8Z?_?Y zFzzEJy0Z)$XQI0zdcgg|RjgqXoR1=)`{)rKBQ9F##|P0OJH|xMs Mk75S1rqv(00M=Ea@c;k- delta 408 zcmXZT&nv@m9LMqZd!v1K@cpta2M*eWmX$;~IPA0%t8elL>_A*Fq?R0Z8OF5aeQ{V> zS$>q7^*zw{LWy$XKyq3+_;El{etc73ujzYu^!&Vgzdu)@Oh_TB4HCK5%F39Vlg5<0 zjRzNr)MZB&U4^n@M^aRK8*JjHKF}cz3+vh;+j63{%Bwcf86{3&l}JGj z3Q&Q2z}KaBKvzD9OK7>p$k+FC<0IZrXK)U;fcbeq!oFrh_r;jUCGYPE-VlFQ;04~m t0vvwLLJIEW*WVS@h<_rEX> diff --git a/resources/tables/CR_Upper.bin b/resources/tables/CR_Upper.bin index f9f2a2bd5688806d4dc1b0283b12677eaa9eeeae..48fc0b9552e202737c1ecac528fe9ff379c49678 100644 GIT binary patch delta 61 zcmaE%K0$+nfq|8ofq|)UBgZTuwdK1Q7{GWBkOtv>P<#kTgYXd`KDK#*kOw0GD!&tu delta 22 ecmbQB@j{)0fq~^G0|QgdMvhrRn@f(J_g literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Word.bin b/resources/tables/CR_Word.bin index ef7ea713ab3f1f76c5e580ce3556027d0c4a8d5f..5e616eca5d0cd79c25221088d1dc2b0ac3e39941 100644 GIT binary patch delta 269 zcmXZUKWoBZ7zFU=i5Mc4#!x{5C8L96=v)vSYYR>37to>L7(YTLBU0$_PMuN^N$Aqr zcX3l%aB@%4#iS0MJNR$vl{);m;f@>G-?m1SeI!z5L+vALc8HF9a1VVL9E9>zT`0Vl zTkS>3jfui{n2P8q=9cvGm5iz{iS@ONbceYiwgrbr;=(w$%qL3n2 T>woElINga!vBX#Mv)JTc*Cb6Y delta 239 zcmaE%vqOi2fq}J`fr07RMvlX*f$augC1;s!aJ`kP)#M6OzCJ@gD;)OuG7>Jib z@p2#y!mEIIH4v`_;+;Ued-D_4+f0lflAUy--eyt|J<*p{db88iOQgNDDe?Y-tG`uRozF4-p#f52%nhXwrU* zn-SvD;t&~4o;K*}P}Jl%a`^D@^1cu6dp6v%MN)SnRw-KE=1S((-PhuwXyBuQYutbr0o8!&p9`v$Z_$vfPDLAJa|0!u;2dRBSbfxd!Y;`o ghh6NUh~t05C(+@L=$N~42R*!rPM9Z0W@W9QGc!L@jQ{`u delta 239 zcmeCsy`jUwz`#0{fr07NMvl|0f$augC1;xEU8ic0+@pK@b3B>b(cp(rk2I8eq zyc|e_@G2l)4a94Kcqb6=-u#C3F%#p@%@;V9GcoR*+`xUEF?DkUPZaa!UHra`jB%4W z1pOJePmU0@n!HI+l(m_GQL1h85kY50Ll*|d`~V=X1LA%lo)5$ifcPN;V*vvLWBW%2 uMxaX>yFM{6ZUE97l@9_!pp;Vh>X6=}om< zc5flBPhEPWFfn3Bx~A52OGSJ85U-Zd><#g;$8C?Bu~R_Ke;^lZX99U(gEH|hsM9eu m&2_FMm5{S=owjJ34*w1Nkl`mJ;yikWjM?!n9mGsOUzI<7zf^hv delta 226 zcmXZWF$)249LDkA?>ceHos5z!3>MjJ1{RxFV6#|w2Zk$jG5wWHmyjam`cDRBFnAec zIV?_*(Q|dfr|&a9=iDzFAyN-SO2dhmYOPPC55NkHP~R9PFa;ZCFo$Jeh5FX8fvsGq zrlNU7sSkW*Dcn_fFOOP*xhY@Kw;~=fPu%pf$Qv2aGO{6)IN1|J<5{c{x9b6c+Hip@ iafgWe9x+a`^(Nk-PFf!0N!DF#_e6Y0?-dzOl=u(tVLCAY diff --git a/resources/tables/CR_XPosixPunct.bin b/resources/tables/CR_XPosixPunct.bin index 97910a025bf1cf4ffbb05eec8dbc05a2b133dea0..48be357428ec5404541eff1148fadfec5383d9bc 100644 GIT binary patch delta 94 zcmeysHG!Lhfq^lZfq`M;Mh;;{)^Y|0p7O~OjKz$3n|m0g85#XIuV4ydVv~Htz$p1> q@(&gxHu?VyjPm~{Yp@#0vfq^lafq`M|Mh;=d$;ylcjJcbqFiJBr`fc986vQ-{i`8JV6RUyPp7{)n RAbhJGh`SjWU&aA(JOC}E5_bRq diff --git a/resources/tables/CaseFold.bin b/resources/tables/CaseFold.bin index 3d88d1f67b02c2496255f3ec9476191ff1b2b45e..a477f2cafefd04e25eacfbfda1dab6ef204e10f2 100644 GIT binary patch delta 103 zcmX@o$2g;(k%fVQ_54PbTV_GacQJ4{FfuSK-wnijpzOUs_C6?kKahP0%03KaAAz!` X0NF<&Y^Ek4`xt~R+qe0SS%v@r-sc;A delta 20 bcmbQy&v>Mdk%fVQ^~6S&TV|V$%+mw_NH7MZ diff --git a/resources/tables/CaseUnfold_11.bin b/resources/tables/CaseUnfold_11.bin index b58b88ed2a58d0e30735e30dfc88c241838922d9..08ac63c5fa74a4895d878063585ac4540c184d89 100644 GIT binary patch delta 110 zcmeCEzf;e`z`*LUk!3X(XA=X10wV*%@}ryAaODYc$@W3{$2LpIvWsy}fpU*bmNA~E hw|qC0y9=meFO Date: Wed, 6 Mar 2019 18:15:23 +0100 Subject: [PATCH 047/158] [maven-release-plugin] prepare release jcodings-1.0.43 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ac5b12e..acb87b27 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.43-SNAPSHOT + 1.0.43 JCodings Byte based encoding support library for java From 9553c0c3ce278e3b130ebef06a357695485cc1be Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Wed, 6 Mar 2019 18:15:31 +0100 Subject: [PATCH 048/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index acb87b27..798cf6de 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.43 + 1.0.44-SNAPSHOT JCodings Byte based encoding support library for java From 9e4cbe279df2ee57d6006edc8f66c230e1361f45 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Tue, 23 Apr 2019 18:29:53 +0200 Subject: [PATCH 049/158] fix for #23 - reenable old reflection loading api --- src/org/jcodings/Encoding.java | 6 +++++- test/org/jcodings/specific/TestUnicode.java | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/org/jcodings/Encoding.java b/src/org/jcodings/Encoding.java index 02a93d24..11bb9ba1 100644 --- a/src/org/jcodings/Encoding.java +++ b/src/org/jcodings/Encoding.java @@ -564,7 +564,11 @@ public final boolean isFixedWidth() { public static final byte NEW_LINE = (byte)0x0a; public static Encoding load(String name) { - String encClassName = name; + return load(name, "org.jcodings.specific"); + } + + public static Encoding load(String name, String pkg) { + String encClassName = pkg + "." + name + "Encoding"; Class encClass; try { encClass = Class.forName(encClassName); diff --git a/test/org/jcodings/specific/TestUnicode.java b/test/org/jcodings/specific/TestUnicode.java index 5eae407a..34c2ea78 100644 --- a/test/org/jcodings/specific/TestUnicode.java +++ b/test/org/jcodings/specific/TestUnicode.java @@ -45,4 +45,9 @@ public void testCodeToMbcLength() throws Exception { assertEquals(enc.codeToMbcLength(0xfffffffe), 1); // USE_INVALID_CODE_SCHEME assertEquals(enc.codeToMbcLength(0xffffffff), 1); // USE_INVALID_CODE_SCHEME } + + @Test + public void testEncodingLoad() throws Exception { + assertEquals(UTF8Encoding.INSTANCE, Encoding.load("UTF8")); + } } From 0b5dc3cd546d078956b8a806a0555b1c1ef38c6d Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Tue, 23 Apr 2019 18:32:48 +0200 Subject: [PATCH 050/158] [maven-release-plugin] prepare release jcodings-1.0.44 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 798cf6de..c9392112 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.44-SNAPSHOT + 1.0.44 JCodings Byte based encoding support library for java From 8e09c6caab59f9a0b9760e57d2708eea185c2de1 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Tue, 23 Apr 2019 18:32:55 +0200 Subject: [PATCH 051/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c9392112..139efbb7 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.44 + 1.0.45-SNAPSHOT JCodings Byte based encoding support library for java From ead988260e86555337e2b57e33dd90e0c42f66d2 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Tue, 23 Jul 2019 17:21:43 +0200 Subject: [PATCH 052/158] add utf8 -> utf-8 alias --- scripts/generate.rb | 1 + src/org/jcodings/EncodingList.java | 1 + 2 files changed, 2 insertions(+) diff --git a/scripts/generate.rb b/scripts/generate.rb index 17bf38cb..59d1b4d7 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -80,6 +80,7 @@ def generate_encoding_list defines, other = open("#{REPO_PATH}/encdb.h").read.tr('()', '').scan(/ENC_([A-Z_]+)(.*?);/m).partition { |a, b| a =~ /DEFINE/ } other << ["ALIAS", "\"MS932\", \"Windows-31J\""] + other << ["ALIAS", "\"UTF8\", \"UTF-8\""] open("#{SRC_DIR}/EncodingList.java", "wb") { |f| f << open("EncodingListTemplate.java", "rb").read. sub(/%\{defines\}/, defines.map { |cmd, name| "#{INDENT*2}EncodingDB.declare(#{name}, \"#{enc_map[name[/[^"]+/]] || (raise 'class not found for encoding ' + name)}\");" }.join("\n")). diff --git a/src/org/jcodings/EncodingList.java b/src/org/jcodings/EncodingList.java index 11a69ec3..d87970d0 100644 --- a/src/org/jcodings/EncodingList.java +++ b/src/org/jcodings/EncodingList.java @@ -194,6 +194,7 @@ static final void load() { EncodingDB.replicate("UTF8-SoftBank", "UTF-8"); EncodingDB.replicate("SJIS-SoftBank", "Windows-31J"); EncodingDB.alias("MS932", "Windows-31J"); + EncodingDB.alias("UTF8", "UTF-8"); } public static Encoding getInstance(String name) { From 4cbf09e628619bf953ca784af2c759f9128c063f Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 1 Oct 2019 20:42:18 -0500 Subject: [PATCH 053/158] Avoid calling Java 9+ version of *Buffer.position. Fixes #27. --- src/org/jcodings/spi/ISO_8859_16.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/org/jcodings/spi/ISO_8859_16.java b/src/org/jcodings/spi/ISO_8859_16.java index d9a209ef..561a7893 100644 --- a/src/org/jcodings/spi/ISO_8859_16.java +++ b/src/org/jcodings/spi/ISO_8859_16.java @@ -20,6 +20,7 @@ package org.jcodings.spi; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; @@ -174,7 +175,7 @@ protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) { if (replace != null) { if (out.remaining() < replace.length) { - in.position(in.position() - 1); + ((Buffer) in).position(in.position() - 1); return CoderResult.OVERFLOW; } else { out.put(replace); From 3709fc519a3081cb4931dfae47584596ad2d15e0 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 1 Oct 2019 20:43:34 -0500 Subject: [PATCH 054/158] [maven-release-plugin] prepare release jcodings-1.0.45 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 139efbb7..d001e4d7 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.45-SNAPSHOT + 1.0.45 JCodings Byte based encoding support library for java From c5ded8fe942e21a9cd95b42516aac98702e2f68e Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 1 Oct 2019 20:43:40 -0500 Subject: [PATCH 055/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d001e4d7..619eeba5 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.45 + 1.0.46-SNAPSHOT JCodings Byte based encoding support library for java From 549d6310f47fa8b6a5ab5f1803e5f1960c4a6524 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 31 Oct 2019 20:22:21 +0100 Subject: [PATCH 056/158] update to unicode 12.1.0 --- resources/tables/CR_Age_12_1.bin | Bin 0 -> 5416 bytes resources/tables/CR_Assigned.bin | Bin 5344 -> 5336 bytes resources/tables/CR_C.bin | Bin 5360 -> 5352 bytes resources/tables/CR_Cn.bin | Bin 5344 -> 5336 bytes resources/tables/CR_Common.bin | Bin 1376 -> 1384 bytes resources/tables/CR_Graph.bin | Bin 5384 -> 5376 bytes resources/tables/CR_Grapheme_Base.bin | Bin 6568 -> 6560 bytes resources/tables/CR_Print.bin | Bin 5360 -> 5352 bytes resources/tables/CR_S.bin | Bin 1824 -> 1816 bytes resources/tables/CR_So.bin | Bin 1456 -> 1448 bytes resources/tables/CR_Unknown.bin | Bin 5328 -> 5320 bytes scripts/generate.rb | 2 +- .../jcodings/unicode/UnicodeProperties.java | 1 + 13 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 resources/tables/CR_Age_12_1.bin diff --git a/resources/tables/CR_Age_12_1.bin b/resources/tables/CR_Age_12_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..016d87e762670c10bcd1b6ef22d57b4da87db4f0 GIT binary patch literal 5416 zcmXZg3v^vonE>FulO|2>IX6k~EqV2(2}1>jK1>05$Sb1=3adlpX$MQ=h`_W;1F{O^ zQkzjnunI(6I93=M1W6x=Edz){!7z#-4kgg01qLJ?X0eJ$NXw&5Vw?GLds*w_U-z7S z_Wu8W?{jlkL#X&n2xa$%;(z7Whfw}CR`DHH^MjIG#JjmCgo=-{kc(N2aTPanD?j9E z2Kh7Z@_q=FR;Vm6JA~<3YB`5RY-WIQ4unuOpLR~CgG;%rq)S{z9}n>ekFza=>TmO} z$hlfB)xG?Pb!=c050-eY`qymXcgVT=8UDytc9y&ynGaRMiCGN+cPG4lz|=F^;uo@72-qQ9BXqyC~R#FhLD>dmM(b2IAA=zT`L z8TDq=n^A8@y_x^uVbq&ZZ{{h~oB0Fk%{<3o$*`!-j5;%W7-KSoM7@c66ZIx3>P^&} zs5en>qTWQkiFys;aSw3sJqC1CsWj&IEP9MssE)l zs58x>&QzVLy3*57S9%ueO3y)E=|!k5{T%;*^O~wFRad$KwWZEys-9Fmsd`emrgBZ~ zQ)-`5`KId2}i zEAOnlv+~Z$J9{1%BG0Tmv#Zem?6=YX?2pmw>}KSceGKnh(SRt&to(|e7q=tFqL;+i zkzZDR*{R%oAJjNcH6P~;yx%p>bB#4?zEkpDaW#5Xa}Pf+=@+eCW8E74sj+sE9@Xei zjs2{7nOCuHtv=K`d$qpjYQM}i{2Ob~<67sU_P^Q6D=3dxL#%aI>L}6X@Uqy3mh?tLf%izDf_T zG0aplJ&Lg7T@ zQg9Xu_OM`|3g#*NCy!xkY@&|;pJF(yK2wGXWt(CT7q8=t~iXf;Qxby_cBaml6P zlqDrg#cv>w)`xfm=eE_kZQaHW{)gA_ezbZ&THohG4u)X4&~`aj;Ow^PS=%khyX{W; z_zm)I8x7%b;}8En?$0@r4xHIJT_Mc1zjIe|J3k3w-U8au-+AuO)2DfAp8pY!Dw!`% zF>d~qte~4!{FpxOV;v8$iAQ)8`!Roj-}4Mx8Ds}9@h65uSa2Ra*v|!bAdim*h8Sfc zgm$0X&*1N{Zo9GVlOZguz~F@o(U*n2*w2Lnyn*MBolRQ^iyp@HweN<|7ecuA2N-{^ z{O%nL;l8Pa;liiFk7Gg-qawJFdaZcql&R`LpETM<-5G@yD8PhqA6S;+6?x3$^ zP&^P~ndi#x#Pu@Q%7&Q;u{>}D^En6W_-!4_jW7Rq*794PVJO6D#!qv7S|97##5P{S ze2#gnIEr?@$cjTMU7vme9b7~gSB6;SdQ}BgB^mK!sHf^A^r1)}sytV933t)YFBxVp z@ACn2sGdbDC*!%I9`RRf;dx#R(eL8ucX7;Al9J~z8fZcueh0^l{m7Wd@7|cvpUmfw ze`YNMyvf^q7-ACeoZpl&xd>yEYq^0RvIhH*=v^ZJ)Of$kV%o!ln9uK`nA+p4K4$eX zYp$9uz8PYz@wKkkx?a1OVXRx{dYyApcRqSvw~8luu4GW$%_w6bdOhQe<-W^JC9B1oxfSOlr#Cq@`b`mYf5y5w>w0ZtUf=Wj zp4anyEp?bTe>BI?&aoVaUgp)GKZP?n8~w_ki+b~&CC){D$`YKr{1tqeZmtV)rgdlP z*UU>xjGMU>b5m`8anL|BTv2`4K;%4{OaHMxLz$>_MGJtO;>W;A-SI$3D#I3GpMJ46)ty;}_75 zTF&(OEa&hlahcD{I=GB3{t0s|bFP;S@(!bX5TdW-xLhBWcOviQ_ILRga0ZrN&o|JQ ztIc=yPeWW`{EBlpj~j7s#af1WBgAg^Z`>E+P2y_%wMpDO8}n~IpUcsc&D|kBI1%C& z_qXWH7N56#ogQwY7xi!Pu5Y;~#6jZ*<@KnA-*X87l(N-M1P**wu|ZF zh7h;=y!}F4+itGycOl>H&PLJC#rv=a+wbQAe$8VgkBh(MsSt-Mn2s|vlw~IM6j0;P z$vCS+r_+IRKV(me^lV5EhV)>EHFvBF(ckE}b8CpNe4jgz*DH7P%MksUi^G*v(a0s;ja)?zMW zX^4NhhKE9YCt_ZIYU4;bdN9(8Tt@x|xfC5GPO&c|$8tO;q9;ZAGBV{8C1;CMukka~Kehq2jXleAA&y^wdHk-7 zepkkE&y0K5#yvCM!?!U1`0XK19t>so?FeQ4{`v7&$I}tY9&Mp5lx@A6O`+`V;ZP>u zvT@g^#!pU$aTCQcJ8#0s%etQ4n<)5R*WN~{*E#f+E{6EP7}F%`37R;=;s?~pce R)uDf$i0_6P_vpS2$}!@ diff --git a/resources/tables/CR_C.bin b/resources/tables/CR_C.bin index ce268bf76c838180bc2f13724a30e0f989011f9a..46d08db061ff405f5262d9f84c1919be17849ce9 100644 GIT binary patch delta 22 dcmeyM`9hO}fq~VMfq`kxMh+>?&03ttxB*0?1)=}| delta 29 lcmaE%`9YI|fq~VUfq`l6Mh+=XHlzOx3`YMqD{!9R1^{!@2n7HD diff --git a/resources/tables/CR_Cn.bin b/resources/tables/CR_Cn.bin index e3e08dd069f5df160aa2ad3b52272a9bba0175e9..a053641e4f35c93612127ff805e02d4b14262919 100644 GIT binary patch delta 22 ecmaE$c|((ffq~VOfq`k(Mvg}un?G^9;|2gqmIpEb delta 29 lcmcbi`9PC{fq~VWfq`lEMvg}uY)1bX7>xdJe!=m98vuSS36%f< diff --git a/resources/tables/CR_Common.bin b/resources/tables/CR_Common.bin index 2df049a4cd97d76181a250e254e7574eeb0cf731..f3843ffe63a1a96bf26b9877616cd0dca6abec94 100644 GIT binary patch delta 29 lcmaFB^@59ofq^lSfq`MoMh+z=HlzOx3`YMqYcN?b0|0G$2S@+_ delta 22 dcmaFC^?-|mfq^lcfq`N5Mh+#W%|=XS%m6=B1myq# diff --git a/resources/tables/CR_Graph.bin b/resources/tables/CR_Graph.bin index bd77c78686810f1658ca2ff70ee40d2e7d336b08..2119491b3d7002e753632ae8e5864c056b467610 100644 GIT binary patch delta 22 dcmeCsYS7|fU|_XpU|^cRk%NzOvmECuZU8g!1nB?( delta 29 kcmZqB>d@j~U|@A*U|?FXk%Nzu&FCKkgE7Nq5zaT<09S1WO#lD@ diff --git a/resources/tables/CR_Grapheme_Base.bin b/resources/tables/CR_Grapheme_Base.bin index 8e014a4763308c08fb45aaf88aee58687e156c05..8101ee357d73935c3adea6c673633acdd01c1563 100644 GIT binary patch delta 22 dcmZ2syug@)fq^ZZfq~h0BS#wd<}z+0J^(uy1o!{| delta 29 kcmZ2ryuz4+fq^ZPfq~g%BS#uHo6$c824jZJIou|E0AYFtTmS$7 diff --git a/resources/tables/CR_Print.bin b/resources/tables/CR_Print.bin index d44793fb7e72fefa4f43e63a1c821b8c928ad83e..c574f91b711a9562b2b6edbe837f7f91e43df21d 100644 GIT binary patch delta 22 ecmeyM`9hO}fq~VMfq`kxMviYBo7p&DaRUHKSq6Oo delta 29 lcmaE%`9YI|fq~VUfq`l6MviYBY)1bW7>pS<|KWJU4FG+H2;cw! diff --git a/resources/tables/CR_S.bin b/resources/tables/CR_S.bin index 10d3a06451fd0bcf8e87519a7267030b5cb05a0a..f823ebc1b92e8a0b70db29fc813ec33a88b6e70f 100644 GIT binary patch delta 22 ecmZ3$H-nFZfr0TT0|UdOjU30AH(z7+Vg>+1iw0l- delta 29 lcmbQiw}6j>fr0Tj0|Ue3jU30A*^K@%Fc>pzKEv$83;=Ng2gCpX diff --git a/resources/tables/CR_So.bin b/resources/tables/CR_So.bin index fcd89d957ad2c5753fa4b33da6f0f0df54c59c1e..9e8fff0364341ecb6f8810a503dbd92d1eebbeb8 100644 GIT binary patch delta 22 dcmdnMy@H#Afq^lTfq`MmMh-dV&3epDOaM3*1lIrn delta 29 kcmZ3%y@8v9fq^lbfq`M`Mh-bxdJe!=m88vuG2310vJ diff --git a/scripts/generate.rb b/scripts/generate.rb index 59d1b4d7..eac5d2d9 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -8,7 +8,7 @@ else ;["rdata", ""] end -UNICODE_VERSION = "12.0.0" +UNICODE_VERSION = "12.1.0" SRC_DIR = "../src/org/jcodings" DST_BIN_DIR = "../resources/tables" INDENT = " " * 4 diff --git a/src/org/jcodings/unicode/UnicodeProperties.java b/src/org/jcodings/unicode/UnicodeProperties.java index ecf855cf..93bf907b 100644 --- a/src/org/jcodings/unicode/UnicodeProperties.java +++ b/src/org/jcodings/unicode/UnicodeProperties.java @@ -536,6 +536,7 @@ public class UnicodeProperties { new CodeRangeEntry("age=10.0", "CR_Age_10_0"), new CodeRangeEntry("age=11.0", "CR_Age_11_0"), new CodeRangeEntry("age=12.0", "CR_Age_12_0"), + new CodeRangeEntry("age=12.1", "CR_Age_12_1"), new CodeRangeEntry("graphemeclusterbreak=prepend", "CR_Grapheme_Cluster_Break_Prepend"), new CodeRangeEntry("graphemeclusterbreak=cr", "CR_Grapheme_Cluster_Break_CR"), new CodeRangeEntry("graphemeclusterbreak=lf", "CR_NEWLINE"), From de8f1e758112e12fc5f4bceb17d14560f9fc9b82 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 31 Oct 2019 20:23:24 +0100 Subject: [PATCH 057/158] [maven-release-plugin] prepare release jcodings-1.0.46 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 619eeba5..10c36e6d 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.46-SNAPSHOT + 1.0.46 JCodings Byte based encoding support library for java From 1ef9a07cd6dccc187c8facf5c09a7e3f12c075d7 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 31 Oct 2019 20:23:32 +0100 Subject: [PATCH 058/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 10c36e6d..66ab2b4e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.46 + 1.0.47-SNAPSHOT JCodings Byte based encoding support library for java From ad3bdf0de523e495e27ff5c538d63504dfe28459 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Fri, 3 Apr 2020 22:24:29 +0200 Subject: [PATCH 059/158] ignore cseu for now --- scripts/generate.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index eac5d2d9..293b0645 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -78,7 +78,7 @@ def generate_encoding_list "Windows-1257" => "Windows_1257" } - defines, other = open("#{REPO_PATH}/encdb.h").read.tr('()', '').scan(/ENC_([A-Z_]+)(.*?);/m).partition { |a, b| a =~ /DEFINE/ } + defines, other = open("#{REPO_PATH}/encdb.h").read.tr('()', '').scan(/ENC_([A-Z_]+)(.*?);/m).reject{|a, b| b =~ /CESU/}.partition { |a, b| a =~ /DEFINE/ } other << ["ALIAS", "\"MS932\", \"Windows-31J\""] other << ["ALIAS", "\"UTF8\", \"UTF-8\""] @@ -93,7 +93,7 @@ def generate_transcoder_list generic_list = [] transcoder_list = [] - Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.sort.each do |trans_file| + Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/ || f =~ /cesu/}.sort.each do |trans_file| name = trans_file[/(\w+)\.c/, 1].split('_').map{|e| e.capitalize}.join("") trans_src = open(trans_file){|f|f.read} From 09a2adff03ab9f7527c8d0285e8f30f88437bf91 Mon Sep 17 00:00:00 2001 From: kiichi Date: Sat, 4 Apr 2020 14:08:14 +0900 Subject: [PATCH 060/158] fix caseMap for Georgian --- src/org/jcodings/unicode/UnicodeEncoding.java | 19 +++++++++++++------ test/org/jcodings/specific/TestCaseMap.java | 13 +++++++++++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/org/jcodings/unicode/UnicodeEncoding.java b/src/org/jcodings/unicode/UnicodeEncoding.java index 82b970d4..62d5fdbc 100644 --- a/src/org/jcodings/unicode/UnicodeEncoding.java +++ b/src/org/jcodings/unicode/UnicodeEncoding.java @@ -461,9 +461,12 @@ public final int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, b flags |= Config.CASE_MODIFIED; code = 'I'; } - } else if ((folded = CaseFold.Values.get(code)) != null) { - if ((flags & Config.CASE_TITLECASE) != 0 && (folded.flags & Config.CASE_IS_TITLECASE) != 0) { - + } else if ((folded = CaseFold.Values.get(code)) != null) { /* data about character found in CaseFold_Table */ + if ((flags & Config.CASE_TITLECASE) != 0 && code >= 0x1C90 && code <= 0x1CBF) { /* Georgian MTAVRULI */ + flags |= Config.CASE_MODIFIED; + code += 0x10D0 - 0x1C90; + } else if ((flags & Config.CASE_TITLECASE) != 0 && (folded.flags & Config.CASE_IS_TITLECASE) != 0) { /* Titlecase needed, but already Titlecase */ + /* already Titlecase, no changes needed */ } else if ((flags & folded.flags) != 0) { final int[]codes; final int start; @@ -504,9 +507,13 @@ public final int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, b code = codes[i]; } } - } else if ((folded = CaseUnfold11.Values.get(code)) != null && (flags & folded.flags) != 0) { - flags |= Config.CASE_MODIFIED; - code = folded.codes[(flags & folded.flags & Config.CASE_TITLECASE) != 0 ? 1 : 0]; + } else if ((folded = CaseUnfold11.Values.get(code)) != null && (flags & folded.flags) != 0) { /* data about character found in CaseUnfold_11_Table */ + if ((flags & Config.CASE_TITLECASE) != 0 && (folded.flags & Config.CASE_IS_TITLECASE) != 0) { /* Titlecase needed, but already Titlecase */ + /* already Titlecase, no changes needed */ + } else if ((flags & folded.flags) != 0) { /* needs and data availability match */ + flags |= Config.CASE_MODIFIED; + code = folded.codes[(flags & folded.flags & Config.CASE_TITLECASE) != 0 ? 1 : 0]; + } } } toP += codeToMbc(code, to, toP); diff --git a/test/org/jcodings/specific/TestCaseMap.java b/test/org/jcodings/specific/TestCaseMap.java index d79ad014..5c4c586e 100644 --- a/test/org/jcodings/specific/TestCaseMap.java +++ b/test/org/jcodings/specific/TestCaseMap.java @@ -81,4 +81,17 @@ public void testISOCaseMap() throws Exception { assertTrue(caseMap(enc, "ß", Config.CASE_DOWNCASE).equals("ß")); } } + + @Test + public void testGeorgian() throws Exception { + Encoding enc = UTF8Encoding.INSTANCE; + assertTrue(caseMap(enc, "\u1C90\u1C91\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); + assertTrue(caseMap(enc, "\u1C90\u1C91\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); + assertTrue(caseMap(enc, "\u1C90\u10D1\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); + assertTrue(caseMap(enc, "\u1C90\u10D1\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); + assertTrue(caseMap(enc, "\u10D0\u1C91\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); + assertTrue(caseMap(enc, "\u10D0\u1C91\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); + assertTrue(caseMap(enc, "\u10D0\u10D1\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); + assertTrue(caseMap(enc, "\u10D0\u10D1\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); + } } From a6caf81348f3422cb607b0ffb4ba334fc02bebfd Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Sat, 4 Apr 2020 18:10:31 +0200 Subject: [PATCH 061/158] sync code for #31 --- src/org/jcodings/unicode/UnicodeEncoding.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/jcodings/unicode/UnicodeEncoding.java b/src/org/jcodings/unicode/UnicodeEncoding.java index 62d5fdbc..6b570442 100644 --- a/src/org/jcodings/unicode/UnicodeEncoding.java +++ b/src/org/jcodings/unicode/UnicodeEncoding.java @@ -507,7 +507,7 @@ public final int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, b code = codes[i]; } } - } else if ((folded = CaseUnfold11.Values.get(code)) != null && (flags & folded.flags) != 0) { /* data about character found in CaseUnfold_11_Table */ + } else if ((folded = CaseUnfold11.Values.get(code)) != null) { /* data about character found in CaseUnfold_11_Table */ if ((flags & Config.CASE_TITLECASE) != 0 && (folded.flags & Config.CASE_IS_TITLECASE) != 0) { /* Titlecase needed, but already Titlecase */ /* already Titlecase, no changes needed */ } else if ((flags & folded.flags) != 0) { /* needs and data availability match */ From 3fe911a23d3c4b485406097767ed6bdc19cf599a Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Sat, 4 Apr 2020 18:15:26 +0200 Subject: [PATCH 062/158] sync encoding list --- src/org/jcodings/EncodingList.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/org/jcodings/EncodingList.java b/src/org/jcodings/EncodingList.java index d87970d0..70f63545 100644 --- a/src/org/jcodings/EncodingList.java +++ b/src/org/jcodings/EncodingList.java @@ -33,7 +33,6 @@ static final void load() { EncodingDB.declare("EUC-JP", "EUCJP"); EncodingDB.declare("EUC-KR", "EUCKR"); EncodingDB.declare("EUC-TW", "EUCTW"); - EncodingDB.declare("GB2312", "GB2312"); EncodingDB.declare("GB18030", "GB18030"); EncodingDB.declare("GBK", "GBK"); EncodingDB.declare("ISO-8859-1", "ISO8859_1"); @@ -126,6 +125,7 @@ static final void load() { EncodingDB.alias("EUC-JISX0213", "EUC-JIS-2004" /* defined at JIS X 0213:2000, and obsolete at JIS X 0213:2004 */); EncodingDB.alias("eucKR", "EUC-KR"); EncodingDB.alias("eucTW", "EUC-TW"); + EncodingDB.replicate("GB2312", "EUC-KR"); EncodingDB.alias("EUC-CN", "GB2312"); EncodingDB.alias("eucCN", "GB2312"); EncodingDB.replicate("GB12345", "GB2312"); @@ -210,7 +210,6 @@ public static Encoding getInstance(String name) { case "EUCJP": return EUCJPEncoding.INSTANCE; case "EUCKR": return EUCKREncoding.INSTANCE; case "EUCTW": return EUCTWEncoding.INSTANCE; - case "GB2312": return GB2312Encoding.INSTANCE; case "GB18030": return GB18030Encoding.INSTANCE; case "GBK": return GBKEncoding.INSTANCE; case "ISO8859_1": return ISO8859_1Encoding.INSTANCE; From d730127d9fc3356525e5506367df2bc1bc490db5 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Sat, 4 Apr 2020 20:15:57 +0200 Subject: [PATCH 063/158] move unicode code ranges to enum --- ...ate.java => UnicodeCodeRangeTemplate.java} | 28 +- scripts/generate.rb | 4 +- .../jcodings/unicode/UnicodeCodeRange.java | 884 ++++++++++++++++++ src/org/jcodings/unicode/UnicodeEncoding.java | 34 +- .../jcodings/unicode/UnicodeProperties.java | 866 ----------------- 5 files changed, 920 insertions(+), 896 deletions(-) rename scripts/{UnicodePropertiesTemplate.java => UnicodeCodeRangeTemplate.java} (65%) create mode 100644 src/org/jcodings/unicode/UnicodeCodeRange.java delete mode 100644 src/org/jcodings/unicode/UnicodeProperties.java diff --git a/scripts/UnicodePropertiesTemplate.java b/scripts/UnicodeCodeRangeTemplate.java similarity index 65% rename from scripts/UnicodePropertiesTemplate.java rename to scripts/UnicodeCodeRangeTemplate.java index cd8a253a..a80f7e60 100644 --- a/scripts/UnicodePropertiesTemplate.java +++ b/scripts/UnicodeCodeRangeTemplate.java @@ -19,12 +19,30 @@ */ package org.jcodings.unicode; -import org.jcodings.unicode.UnicodeEncoding.CodeRangeEntry; +import org.jcodings.util.ArrayReader; +import org.jcodings.CodeRange; -public class UnicodeProperties { - static final CodeRangeEntry[]CodeRangeTable = new CodeRangeEntry[] { -%{extcrs} - }; +public enum UnicodeCodeRange { +%{extcrs}; + private final String table; + final byte[]name; + private int[]range; + + private UnicodeCodeRange(String name, String table) { + this.table = table; + this.name = name.getBytes(); + } + + int[]getRange() { + if (range == null) range = ArrayReader.readIntArray(table); + return range; + } + + public boolean contains(int code) { + return CodeRange.isInCodeRange(range, code); + } + + static final UnicodeCodeRange[]CodeRangeTable = UnicodeCodeRange.values(); static final int MAX_WORD_LENGTH = %{max_length}; } diff --git a/scripts/generate.rb b/scripts/generate.rb index 293b0645..b6ff6826 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -190,8 +190,8 @@ def generate_coderange_list end.flatten(1) max_length = out.max_by{|name, table|name.length}.first.length.to_s - open("#{SRC_DIR}/unicode/UnicodeProperties.java", "wb") do |f| f << - open("UnicodePropertiesTemplate.java", "rb").read.sub(/%\{max_length\}/, max_length).sub(/%\{extcrs\}/, out.map{|name, table| "#{INDENT * 2}" + "new CodeRangeEntry(\"#{name}\", \"CR_#{table}\")"}.join(",\n")) + open("#{SRC_DIR}/unicode/UnicodeCodeRange.java", "wb") do |f| f << + open("UnicodeCodeRangeTemplate.java", "rb").read.sub(/%\{max_length\}/, max_length).sub(/%\{extcrs\}/, out.map{|name, table| "#{INDENT}" + "#{name.upcase.tr('=.', '_')}(\"#{name}\", \"CR_#{table}\")"}.join(",\n")) end end diff --git a/src/org/jcodings/unicode/UnicodeCodeRange.java b/src/org/jcodings/unicode/UnicodeCodeRange.java new file mode 100644 index 00000000..c3e9728a --- /dev/null +++ b/src/org/jcodings/unicode/UnicodeCodeRange.java @@ -0,0 +1,884 @@ +/* + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.jcodings.unicode; + +import org.jcodings.util.ArrayReader; +import org.jcodings.CodeRange; + +public enum UnicodeCodeRange { + NEWLINE("newline", "CR_NEWLINE"), + ALPHA("alpha", "CR_Alpha"), + BLANK("blank", "CR_Blank"), + CNTRL("cntrl", "CR_Cntrl"), + DIGIT("digit", "CR_Digit"), + GRAPH("graph", "CR_Graph"), + LOWER("lower", "CR_Lower"), + PRINT("print", "CR_Print"), + XPOSIXPUNCT("xposixpunct", "CR_XPosixPunct"), + SPACE("space", "CR_Space"), + UPPER("upper", "CR_Upper"), + XDIGIT("xdigit", "CR_XDigit"), + WORD("word", "CR_Word"), + ALNUM("alnum", "CR_Alnum"), + ASCII("ascii", "CR_ASCII"), + PUNCT("punct", "CR_Punct"), + ANY("any", "CR_Any"), + ASSIGNED("assigned", "CR_Assigned"), + C("c", "CR_C"), + OTHER("other", "CR_C"), + CC("cc", "CR_Cntrl"), + CONTROL("control", "CR_Cntrl"), + CF("cf", "CR_Cf"), + FORMAT("format", "CR_Cf"), + CN("cn", "CR_Cn"), + UNASSIGNED("unassigned", "CR_Cn"), + CO("co", "CR_Co"), + PRIVATEUSE("privateuse", "CR_Co"), + CS("cs", "CR_Cs"), + SURROGATE("surrogate", "CR_Cs"), + L("l", "CR_L"), + LETTER("letter", "CR_L"), + LC("lc", "CR_LC"), + CASEDLETTER("casedletter", "CR_LC"), + LL("ll", "CR_Ll"), + LOWERCASELETTER("lowercaseletter", "CR_Ll"), + LM("lm", "CR_Lm"), + MODIFIERLETTER("modifierletter", "CR_Lm"), + LO("lo", "CR_Lo"), + OTHERLETTER("otherletter", "CR_Lo"), + LT("lt", "CR_Lt"), + TITLECASELETTER("titlecaseletter", "CR_Lt"), + LU("lu", "CR_Lu"), + UPPERCASELETTER("uppercaseletter", "CR_Lu"), + M("m", "CR_M"), + MARK("mark", "CR_M"), + COMBININGMARK("combiningmark", "CR_M"), + MC("mc", "CR_Mc"), + SPACINGMARK("spacingmark", "CR_Mc"), + ME("me", "CR_Me"), + ENCLOSINGMARK("enclosingmark", "CR_Me"), + MN("mn", "CR_Mn"), + NONSPACINGMARK("nonspacingmark", "CR_Mn"), + N("n", "CR_N"), + NUMBER("number", "CR_N"), + ND("nd", "CR_Digit"), + DECIMALNUMBER("decimalnumber", "CR_Digit"), + NL("nl", "CR_Nl"), + LETTERNUMBER("letternumber", "CR_Nl"), + NO("no", "CR_No"), + OTHERNUMBER("othernumber", "CR_No"), + P("p", "CR_Punct"), + PUNCTUATION("punctuation", "CR_Punct"), + PC("pc", "CR_Pc"), + CONNECTORPUNCTUATION("connectorpunctuation", "CR_Pc"), + PD("pd", "CR_Pd"), + DASHPUNCTUATION("dashpunctuation", "CR_Pd"), + PE("pe", "CR_Pe"), + CLOSEPUNCTUATION("closepunctuation", "CR_Pe"), + PF("pf", "CR_Pf"), + FINALPUNCTUATION("finalpunctuation", "CR_Pf"), + PI("pi", "CR_Pi"), + INITIALPUNCTUATION("initialpunctuation", "CR_Pi"), + PO("po", "CR_Po"), + OTHERPUNCTUATION("otherpunctuation", "CR_Po"), + PS("ps", "CR_Ps"), + OPENPUNCTUATION("openpunctuation", "CR_Ps"), + S("s", "CR_S"), + SYMBOL("symbol", "CR_S"), + SC("sc", "CR_Sc"), + CURRENCYSYMBOL("currencysymbol", "CR_Sc"), + SK("sk", "CR_Sk"), + MODIFIERSYMBOL("modifiersymbol", "CR_Sk"), + SM("sm", "CR_Sm"), + MATHSYMBOL("mathsymbol", "CR_Sm"), + SO("so", "CR_So"), + OTHERSYMBOL("othersymbol", "CR_So"), + Z("z", "CR_Z"), + SEPARATOR("separator", "CR_Z"), + ZL("zl", "CR_Zl"), + LINESEPARATOR("lineseparator", "CR_Zl"), + ZP("zp", "CR_Zp"), + PARAGRAPHSEPARATOR("paragraphseparator", "CR_Zp"), + ZS("zs", "CR_Zs"), + SPACESEPARATOR("spaceseparator", "CR_Zs"), + MATH("math", "CR_Math"), + ALPHABETIC("alphabetic", "CR_Alpha"), + LOWERCASE("lowercase", "CR_Lower"), + UPPERCASE("uppercase", "CR_Upper"), + CASED("cased", "CR_Cased"), + CASEIGNORABLE("caseignorable", "CR_Case_Ignorable"), + CI("ci", "CR_Case_Ignorable"), + CHANGESWHENLOWERCASED("changeswhenlowercased", "CR_Changes_When_Lowercased"), + CWL("cwl", "CR_Changes_When_Lowercased"), + CHANGESWHENUPPERCASED("changeswhenuppercased", "CR_Changes_When_Uppercased"), + CWU("cwu", "CR_Changes_When_Uppercased"), + CHANGESWHENTITLECASED("changeswhentitlecased", "CR_Changes_When_Titlecased"), + CWT("cwt", "CR_Changes_When_Titlecased"), + CHANGESWHENCASEFOLDED("changeswhencasefolded", "CR_Changes_When_Casefolded"), + CWCF("cwcf", "CR_Changes_When_Casefolded"), + CHANGESWHENCASEMAPPED("changeswhencasemapped", "CR_Changes_When_Casemapped"), + CWCM("cwcm", "CR_Changes_When_Casemapped"), + IDSTART("idstart", "CR_ID_Start"), + IDS("ids", "CR_ID_Start"), + IDCONTINUE("idcontinue", "CR_ID_Continue"), + IDC("idc", "CR_ID_Continue"), + XIDSTART("xidstart", "CR_XID_Start"), + XIDS("xids", "CR_XID_Start"), + XIDCONTINUE("xidcontinue", "CR_XID_Continue"), + XIDC("xidc", "CR_XID_Continue"), + DEFAULTIGNORABLECODEPOINT("defaultignorablecodepoint", "CR_Default_Ignorable_Code_Point"), + DI("di", "CR_Default_Ignorable_Code_Point"), + GRAPHEMEEXTEND("graphemeextend", "CR_Grapheme_Extend"), + GREXT("grext", "CR_Grapheme_Extend"), + GRAPHEMEBASE("graphemebase", "CR_Grapheme_Base"), + GRBASE("grbase", "CR_Grapheme_Base"), + GRAPHEMELINK("graphemelink", "CR_Grapheme_Link"), + GRLINK("grlink", "CR_Grapheme_Link"), + COMMON("common", "CR_Common"), + ZYYY("zyyy", "CR_Common"), + LATIN("latin", "CR_Latin"), + LATN("latn", "CR_Latin"), + GREEK("greek", "CR_Greek"), + GREK("grek", "CR_Greek"), + CYRILLIC("cyrillic", "CR_Cyrillic"), + CYRL("cyrl", "CR_Cyrillic"), + ARMENIAN("armenian", "CR_Armenian"), + ARMN("armn", "CR_Armenian"), + HEBREW("hebrew", "CR_Hebrew"), + HEBR("hebr", "CR_Hebrew"), + ARABIC("arabic", "CR_Arabic"), + ARAB("arab", "CR_Arabic"), + SYRIAC("syriac", "CR_Syriac"), + SYRC("syrc", "CR_Syriac"), + THAANA("thaana", "CR_Thaana"), + THAA("thaa", "CR_Thaana"), + DEVANAGARI("devanagari", "CR_Devanagari"), + DEVA("deva", "CR_Devanagari"), + BENGALI("bengali", "CR_Bengali"), + BENG("beng", "CR_Bengali"), + GURMUKHI("gurmukhi", "CR_Gurmukhi"), + GURU("guru", "CR_Gurmukhi"), + GUJARATI("gujarati", "CR_Gujarati"), + GUJR("gujr", "CR_Gujarati"), + ORIYA("oriya", "CR_Oriya"), + ORYA("orya", "CR_Oriya"), + TAMIL("tamil", "CR_Tamil"), + TAML("taml", "CR_Tamil"), + TELUGU("telugu", "CR_Telugu"), + TELU("telu", "CR_Telugu"), + KANNADA("kannada", "CR_Kannada"), + KNDA("knda", "CR_Kannada"), + MALAYALAM("malayalam", "CR_Malayalam"), + MLYM("mlym", "CR_Malayalam"), + SINHALA("sinhala", "CR_Sinhala"), + SINH("sinh", "CR_Sinhala"), + THAI("thai", "CR_Thai"), + LAO("lao", "CR_Lao"), + LAOO("laoo", "CR_Lao"), + TIBETAN("tibetan", "CR_Tibetan"), + TIBT("tibt", "CR_Tibetan"), + MYANMAR("myanmar", "CR_Myanmar"), + MYMR("mymr", "CR_Myanmar"), + GEORGIAN("georgian", "CR_Georgian"), + GEOR("geor", "CR_Georgian"), + HANGUL("hangul", "CR_Hangul"), + HANG("hang", "CR_Hangul"), + ETHIOPIC("ethiopic", "CR_Ethiopic"), + ETHI("ethi", "CR_Ethiopic"), + CHEROKEE("cherokee", "CR_Cherokee"), + CHER("cher", "CR_Cherokee"), + CANADIANABORIGINAL("canadianaboriginal", "CR_Canadian_Aboriginal"), + CANS("cans", "CR_Canadian_Aboriginal"), + OGHAM("ogham", "CR_Ogham"), + OGAM("ogam", "CR_Ogham"), + RUNIC("runic", "CR_Runic"), + RUNR("runr", "CR_Runic"), + KHMER("khmer", "CR_Khmer"), + KHMR("khmr", "CR_Khmer"), + MONGOLIAN("mongolian", "CR_Mongolian"), + MONG("mong", "CR_Mongolian"), + HIRAGANA("hiragana", "CR_Hiragana"), + HIRA("hira", "CR_Hiragana"), + KATAKANA("katakana", "CR_Katakana"), + KANA("kana", "CR_Katakana"), + BOPOMOFO("bopomofo", "CR_Bopomofo"), + BOPO("bopo", "CR_Bopomofo"), + HAN("han", "CR_Han"), + HANI("hani", "CR_Han"), + YI("yi", "CR_Yi"), + YIII("yiii", "CR_Yi"), + OLDITALIC("olditalic", "CR_Old_Italic"), + ITAL("ital", "CR_Old_Italic"), + GOTHIC("gothic", "CR_Gothic"), + GOTH("goth", "CR_Gothic"), + INDESERET("indeseret", "CR_Deseret"), + INHERITED("inherited", "CR_Inherited"), + QAAI("qaai", "CR_Inherited"), + ZINH("zinh", "CR_Inherited"), + TAGALOG("tagalog", "CR_Tagalog"), + TGLG("tglg", "CR_Tagalog"), + HANUNOO("hanunoo", "CR_Hanunoo"), + HANO("hano", "CR_Hanunoo"), + BUHID("buhid", "CR_Buhid"), + BUHD("buhd", "CR_Buhid"), + TAGBANWA("tagbanwa", "CR_Tagbanwa"), + TAGB("tagb", "CR_Tagbanwa"), + LIMBU("limbu", "CR_Limbu"), + LIMB("limb", "CR_Limbu"), + TAILE("taile", "CR_Tai_Le"), + TALE("tale", "CR_Tai_Le"), + LINEARB("linearb", "CR_Linear_B"), + LINB("linb", "CR_Linear_B"), + UGARITIC("ugaritic", "CR_Ugaritic"), + UGAR("ugar", "CR_Ugaritic"), + INSHAVIAN("inshavian", "CR_Shavian"), + OSMANYA("osmanya", "CR_Osmanya"), + OSMA("osma", "CR_Osmanya"), + CYPRIOT("cypriot", "CR_Cypriot"), + CPRT("cprt", "CR_Cypriot"), + INBRAILLEPATTERNS("inbraillepatterns", "CR_Braille"), + BUGINESE("buginese", "CR_Buginese"), + BUGI("bugi", "CR_Buginese"), + COPTIC("coptic", "CR_Coptic"), + QAAC("qaac", "CR_Coptic"), + COPT("copt", "CR_Coptic"), + NEWTAILUE("newtailue", "CR_New_Tai_Lue"), + TALU("talu", "CR_New_Tai_Lue"), + GLAGOLITIC("glagolitic", "CR_Glagolitic"), + GLAG("glag", "CR_Glagolitic"), + TIFINAGH("tifinagh", "CR_Tifinagh"), + TFNG("tfng", "CR_Tifinagh"), + SYLOTINAGRI("sylotinagri", "CR_Syloti_Nagri"), + SYLO("sylo", "CR_Syloti_Nagri"), + OLDPERSIAN("oldpersian", "CR_Old_Persian"), + XPEO("xpeo", "CR_Old_Persian"), + KHAROSHTHI("kharoshthi", "CR_Kharoshthi"), + KHAR("khar", "CR_Kharoshthi"), + BALINESE("balinese", "CR_Balinese"), + BALI("bali", "CR_Balinese"), + CUNEIFORM("cuneiform", "CR_Cuneiform"), + XSUX("xsux", "CR_Cuneiform"), + PHOENICIAN("phoenician", "CR_Phoenician"), + PHNX("phnx", "CR_Phoenician"), + PHAGSPA("phagspa", "CR_Phags_Pa"), + PHAG("phag", "CR_Phags_Pa"), + NKO("nko", "CR_Nko"), + NKOO("nkoo", "CR_Nko"), + SUNDANESE("sundanese", "CR_Sundanese"), + SUND("sund", "CR_Sundanese"), + LEPCHA("lepcha", "CR_Lepcha"), + LEPC("lepc", "CR_Lepcha"), + INOLCHIKI("inolchiki", "CR_Ol_Chiki"), + VAI("vai", "CR_Vai"), + VAII("vaii", "CR_Vai"), + SAURASHTRA("saurashtra", "CR_Saurashtra"), + SAUR("saur", "CR_Saurashtra"), + KAYAHLI("kayahli", "CR_Kayah_Li"), + KALI("kali", "CR_Kayah_Li"), + REJANG("rejang", "CR_Rejang"), + RJNG("rjng", "CR_Rejang"), + LYCIAN("lycian", "CR_Lycian"), + LYCI("lyci", "CR_Lycian"), + CARIAN("carian", "CR_Carian"), + CARI("cari", "CR_Carian"), + LYDIAN("lydian", "CR_Lydian"), + LYDI("lydi", "CR_Lydian"), + CHAM("cham", "CR_Cham"), + TAITHAM("taitham", "CR_Tai_Tham"), + LANA("lana", "CR_Tai_Tham"), + TAIVIET("taiviet", "CR_Tai_Viet"), + TAVT("tavt", "CR_Tai_Viet"), + AVESTAN("avestan", "CR_Avestan"), + AVST("avst", "CR_Avestan"), + EGYPTIANHIEROGLYPHS("egyptianhieroglyphs", "CR_Egyptian_Hieroglyphs"), + EGYP("egyp", "CR_Egyptian_Hieroglyphs"), + SAMARITAN("samaritan", "CR_Samaritan"), + SAMR("samr", "CR_Samaritan"), + INLISU("inlisu", "CR_Lisu"), + BAMUM("bamum", "CR_Bamum"), + BAMU("bamu", "CR_Bamum"), + JAVANESE("javanese", "CR_Javanese"), + JAVA("java", "CR_Javanese"), + MEETEIMAYEK("meeteimayek", "CR_Meetei_Mayek"), + MTEI("mtei", "CR_Meetei_Mayek"), + IMPERIALARAMAIC("imperialaramaic", "CR_Imperial_Aramaic"), + ARMI("armi", "CR_Imperial_Aramaic"), + INOLDSOUTHARABIAN("inoldsoutharabian", "CR_Old_South_Arabian"), + INSCRIPTIONALPARTHIAN("inscriptionalparthian", "CR_Inscriptional_Parthian"), + PRTI("prti", "CR_Inscriptional_Parthian"), + INSCRIPTIONALPAHLAVI("inscriptionalpahlavi", "CR_Inscriptional_Pahlavi"), + PHLI("phli", "CR_Inscriptional_Pahlavi"), + OLDTURKIC("oldturkic", "CR_Old_Turkic"), + ORKH("orkh", "CR_Old_Turkic"), + KAITHI("kaithi", "CR_Kaithi"), + KTHI("kthi", "CR_Kaithi"), + BATAK("batak", "CR_Batak"), + BATK("batk", "CR_Batak"), + BRAHMI("brahmi", "CR_Brahmi"), + BRAH("brah", "CR_Brahmi"), + MANDAIC("mandaic", "CR_Mandaic"), + MAND("mand", "CR_Mandaic"), + CHAKMA("chakma", "CR_Chakma"), + CAKM("cakm", "CR_Chakma"), + MEROITICCURSIVE("meroiticcursive", "CR_Meroitic_Cursive"), + MERC("merc", "CR_Meroitic_Cursive"), + INMEROITICHIEROGLYPHS("inmeroitichieroglyphs", "CR_Meroitic_Hieroglyphs"), + MIAO("miao", "CR_Miao"), + PLRD("plrd", "CR_Miao"), + SHARADA("sharada", "CR_Sharada"), + SHRD("shrd", "CR_Sharada"), + SORASOMPENG("sorasompeng", "CR_Sora_Sompeng"), + SORA("sora", "CR_Sora_Sompeng"), + TAKRI("takri", "CR_Takri"), + TAKR("takr", "CR_Takri"), + CAUCASIANALBANIAN("caucasianalbanian", "CR_Caucasian_Albanian"), + AGHB("aghb", "CR_Caucasian_Albanian"), + BASSAVAH("bassavah", "CR_Bassa_Vah"), + BASS("bass", "CR_Bassa_Vah"), + DUPLOYAN("duployan", "CR_Duployan"), + DUPL("dupl", "CR_Duployan"), + ELBASAN("elbasan", "CR_Elbasan"), + ELBA("elba", "CR_Elbasan"), + GRANTHA("grantha", "CR_Grantha"), + GRAN("gran", "CR_Grantha"), + PAHAWHHMONG("pahawhhmong", "CR_Pahawh_Hmong"), + HMNG("hmng", "CR_Pahawh_Hmong"), + KHOJKI("khojki", "CR_Khojki"), + KHOJ("khoj", "CR_Khojki"), + LINEARA("lineara", "CR_Linear_A"), + LINA("lina", "CR_Linear_A"), + MAHAJANI("mahajani", "CR_Mahajani"), + MAHJ("mahj", "CR_Mahajani"), + MANICHAEAN("manichaean", "CR_Manichaean"), + MANI("mani", "CR_Manichaean"), + MENDEKIKAKUI("mendekikakui", "CR_Mende_Kikakui"), + MEND("mend", "CR_Mende_Kikakui"), + MODI("modi", "CR_Modi"), + MRO("mro", "CR_Mro"), + MROO("mroo", "CR_Mro"), + INOLDNORTHARABIAN("inoldnortharabian", "CR_Old_North_Arabian"), + NABATAEAN("nabataean", "CR_Nabataean"), + NBAT("nbat", "CR_Nabataean"), + INPALMYRENE("inpalmyrene", "CR_Palmyrene"), + PAUCINHAU("paucinhau", "CR_Pau_Cin_Hau"), + PAUC("pauc", "CR_Pau_Cin_Hau"), + OLDPERMIC("oldpermic", "CR_Old_Permic"), + PERM("perm", "CR_Old_Permic"), + PSALTERPAHLAVI("psalterpahlavi", "CR_Psalter_Pahlavi"), + PHLP("phlp", "CR_Psalter_Pahlavi"), + SIDDHAM("siddham", "CR_Siddham"), + SIDD("sidd", "CR_Siddham"), + KHUDAWADI("khudawadi", "CR_Khudawadi"), + SIND("sind", "CR_Khudawadi"), + TIRHUTA("tirhuta", "CR_Tirhuta"), + TIRH("tirh", "CR_Tirhuta"), + WARANGCITI("warangciti", "CR_Warang_Citi"), + WARA("wara", "CR_Warang_Citi"), + AHOM("ahom", "CR_Ahom"), + ANATOLIANHIEROGLYPHS("anatolianhieroglyphs", "CR_Anatolian_Hieroglyphs"), + HLUW("hluw", "CR_Anatolian_Hieroglyphs"), + HATRAN("hatran", "CR_Hatran"), + HATR("hatr", "CR_Hatran"), + MULTANI("multani", "CR_Multani"), + MULT("mult", "CR_Multani"), + OLDHUNGARIAN("oldhungarian", "CR_Old_Hungarian"), + HUNG("hung", "CR_Old_Hungarian"), + SIGNWRITING("signwriting", "CR_SignWriting"), + SGNW("sgnw", "CR_SignWriting"), + ADLAM("adlam", "CR_Adlam"), + ADLM("adlm", "CR_Adlam"), + BHAIKSUKI("bhaiksuki", "CR_Bhaiksuki"), + BHKS("bhks", "CR_Bhaiksuki"), + MARCHEN("marchen", "CR_Marchen"), + MARC("marc", "CR_Marchen"), + NEWA("newa", "CR_Newa"), + OSAGE("osage", "CR_Osage"), + OSGE("osge", "CR_Osage"), + TANGUT("tangut", "CR_Tangut"), + TANG("tang", "CR_Tangut"), + MASARAMGONDI("masaramgondi", "CR_Masaram_Gondi"), + GONM("gonm", "CR_Masaram_Gondi"), + NUSHU("nushu", "CR_Nushu"), + NSHU("nshu", "CR_Nushu"), + SOYOMBO("soyombo", "CR_Soyombo"), + SOYO("soyo", "CR_Soyombo"), + ZANABAZARSQUARE("zanabazarsquare", "CR_Zanabazar_Square"), + ZANB("zanb", "CR_Zanabazar_Square"), + DOGRA("dogra", "CR_Dogra"), + DOGR("dogr", "CR_Dogra"), + GUNJALAGONDI("gunjalagondi", "CR_Gunjala_Gondi"), + GONG("gong", "CR_Gunjala_Gondi"), + MAKASAR("makasar", "CR_Makasar"), + MAKA("maka", "CR_Makasar"), + MEDEFAIDRIN("medefaidrin", "CR_Medefaidrin"), + MEDF("medf", "CR_Medefaidrin"), + HANIFIROHINGYA("hanifirohingya", "CR_Hanifi_Rohingya"), + ROHG("rohg", "CR_Hanifi_Rohingya"), + SOGDIAN("sogdian", "CR_Sogdian"), + SOGD("sogd", "CR_Sogdian"), + OLDSOGDIAN("oldsogdian", "CR_Old_Sogdian"), + SOGO("sogo", "CR_Old_Sogdian"), + ELYMAIC("elymaic", "CR_Elymaic"), + ELYM("elym", "CR_Elymaic"), + NANDINAGARI("nandinagari", "CR_Nandinagari"), + NAND("nand", "CR_Nandinagari"), + NYIAKENGPUACHUEHMONG("nyiakengpuachuehmong", "CR_Nyiakeng_Puachue_Hmong"), + HMNP("hmnp", "CR_Nyiakeng_Puachue_Hmong"), + WANCHO("wancho", "CR_Wancho"), + WCHO("wcho", "CR_Wancho"), + WHITESPACE("whitespace", "CR_Space"), + WSPACE("wspace", "CR_Space"), + BIDICONTROL("bidicontrol", "CR_Bidi_Control"), + BIDIC("bidic", "CR_Bidi_Control"), + JOINCONTROL("joincontrol", "CR_Join_Control"), + JOINC("joinc", "CR_Join_Control"), + DASH("dash", "CR_Dash"), + HYPHEN("hyphen", "CR_Hyphen"), + QUOTATIONMARK("quotationmark", "CR_Quotation_Mark"), + QMARK("qmark", "CR_Quotation_Mark"), + TERMINALPUNCTUATION("terminalpunctuation", "CR_Terminal_Punctuation"), + TERM("term", "CR_Terminal_Punctuation"), + OTHERMATH("othermath", "CR_Other_Math"), + OMATH("omath", "CR_Other_Math"), + HEXDIGIT("hexdigit", "CR_Hex_Digit"), + HEX("hex", "CR_Hex_Digit"), + ASCIIHEXDIGIT("asciihexdigit", "CR_XDigit"), + AHEX("ahex", "CR_XDigit"), + OTHERALPHABETIC("otheralphabetic", "CR_Other_Alphabetic"), + OALPHA("oalpha", "CR_Other_Alphabetic"), + IDEOGRAPHIC("ideographic", "CR_Ideographic"), + IDEO("ideo", "CR_Ideographic"), + DIACRITIC("diacritic", "CR_Diacritic"), + DIA("dia", "CR_Diacritic"), + EXTENDER("extender", "CR_Extender"), + EXT("ext", "CR_Extender"), + OTHERLOWERCASE("otherlowercase", "CR_Other_Lowercase"), + OLOWER("olower", "CR_Other_Lowercase"), + OTHERUPPERCASE("otheruppercase", "CR_Other_Uppercase"), + OUPPER("oupper", "CR_Other_Uppercase"), + NONCHARACTERCODEPOINT("noncharactercodepoint", "CR_Noncharacter_Code_Point"), + NCHAR("nchar", "CR_Noncharacter_Code_Point"), + OTHERGRAPHEMEEXTEND("othergraphemeextend", "CR_Other_Grapheme_Extend"), + OGREXT("ogrext", "CR_Other_Grapheme_Extend"), + IDSBINARYOPERATOR("idsbinaryoperator", "CR_IDS_Binary_Operator"), + IDSB("idsb", "CR_IDS_Binary_Operator"), + IDSTRINARYOPERATOR("idstrinaryoperator", "CR_IDS_Trinary_Operator"), + IDST("idst", "CR_IDS_Trinary_Operator"), + RADICAL("radical", "CR_Radical"), + UNIFIEDIDEOGRAPH("unifiedideograph", "CR_Unified_Ideograph"), + UIDEO("uideo", "CR_Unified_Ideograph"), + OTHERDEFAULTIGNORABLECODEPOINT("otherdefaultignorablecodepoint", "CR_Other_Default_Ignorable_Code_Point"), + ODI("odi", "CR_Other_Default_Ignorable_Code_Point"), + DEPRECATED("deprecated", "CR_Deprecated"), + DEP("dep", "CR_Deprecated"), + SOFTDOTTED("softdotted", "CR_Soft_Dotted"), + SD("sd", "CR_Soft_Dotted"), + LOGICALORDEREXCEPTION("logicalorderexception", "CR_Logical_Order_Exception"), + LOE("loe", "CR_Logical_Order_Exception"), + OTHERIDSTART("otheridstart", "CR_Other_ID_Start"), + OIDS("oids", "CR_Other_ID_Start"), + OTHERIDCONTINUE("otheridcontinue", "CR_Other_ID_Continue"), + OIDC("oidc", "CR_Other_ID_Continue"), + SENTENCETERMINAL("sentenceterminal", "CR_Sentence_Terminal"), + STERM("sterm", "CR_Sentence_Terminal"), + VARIATIONSELECTOR("variationselector", "CR_Variation_Selector"), + VS("vs", "CR_Variation_Selector"), + PATTERNWHITESPACE("patternwhitespace", "CR_Pattern_White_Space"), + PATWS("patws", "CR_Pattern_White_Space"), + PATTERNSYNTAX("patternsyntax", "CR_Pattern_Syntax"), + PATSYN("patsyn", "CR_Pattern_Syntax"), + PREPENDEDCONCATENATIONMARK("prependedconcatenationmark", "CR_Prepended_Concatenation_Mark"), + PCM("pcm", "CR_Prepended_Concatenation_Mark"), + GRAPHEMECLUSTERBREAK_REGIONALINDICATOR("graphemeclusterbreak=regionalindicator", "CR_Regional_Indicator"), + EMOJI("emoji", "CR_Emoji"), + EMOJIPRESENTATION("emojipresentation", "CR_Emoji_Presentation"), + EMOJIMODIFIER("emojimodifier", "CR_Emoji_Modifier"), + EMOJIMODIFIERBASE("emojimodifierbase", "CR_Emoji_Modifier_Base"), + EMOJICOMPONENT("emojicomponent", "CR_Emoji_Component"), + EXTENDEDPICTOGRAPHIC("extendedpictographic", "CR_Extended_Pictographic"), + UNKNOWN("unknown", "CR_Unknown"), + ZZZZ("zzzz", "CR_Unknown"), + AGE_1_1("age=1.1", "CR_Age_1_1"), + AGE_2_0("age=2.0", "CR_Age_2_0"), + AGE_2_1("age=2.1", "CR_Age_2_1"), + AGE_3_0("age=3.0", "CR_Age_3_0"), + AGE_3_1("age=3.1", "CR_Age_3_1"), + AGE_3_2("age=3.2", "CR_Age_3_2"), + AGE_4_0("age=4.0", "CR_Age_4_0"), + AGE_4_1("age=4.1", "CR_Age_4_1"), + AGE_5_0("age=5.0", "CR_Age_5_0"), + AGE_5_1("age=5.1", "CR_Age_5_1"), + AGE_5_2("age=5.2", "CR_Age_5_2"), + AGE_6_0("age=6.0", "CR_Age_6_0"), + AGE_6_1("age=6.1", "CR_Age_6_1"), + AGE_6_2("age=6.2", "CR_Age_6_2"), + AGE_6_3("age=6.3", "CR_Age_6_3"), + AGE_7_0("age=7.0", "CR_Age_7_0"), + AGE_8_0("age=8.0", "CR_Age_8_0"), + AGE_9_0("age=9.0", "CR_Age_9_0"), + AGE_10_0("age=10.0", "CR_Age_10_0"), + AGE_11_0("age=11.0", "CR_Age_11_0"), + AGE_12_0("age=12.0", "CR_Age_12_0"), + AGE_12_1("age=12.1", "CR_Age_12_1"), + GRAPHEMECLUSTERBREAK_PREPEND("graphemeclusterbreak=prepend", "CR_Grapheme_Cluster_Break_Prepend"), + GRAPHEMECLUSTERBREAK_CR("graphemeclusterbreak=cr", "CR_Grapheme_Cluster_Break_CR"), + GRAPHEMECLUSTERBREAK_LF("graphemeclusterbreak=lf", "CR_NEWLINE"), + GRAPHEMECLUSTERBREAK_CONTROL("graphemeclusterbreak=control", "CR_Grapheme_Cluster_Break_Control"), + GRAPHEMECLUSTERBREAK_EXTEND("graphemeclusterbreak=extend", "CR_Grapheme_Cluster_Break_Extend"), + REGIONALINDICATOR("regionalindicator", "CR_Regional_Indicator"), + RI("ri", "CR_Regional_Indicator"), + GRAPHEMECLUSTERBREAK_SPACINGMARK("graphemeclusterbreak=spacingmark", "CR_Grapheme_Cluster_Break_SpacingMark"), + GRAPHEMECLUSTERBREAK_L("graphemeclusterbreak=l", "CR_Grapheme_Cluster_Break_L"), + GRAPHEMECLUSTERBREAK_V("graphemeclusterbreak=v", "CR_Grapheme_Cluster_Break_V"), + GRAPHEMECLUSTERBREAK_T("graphemeclusterbreak=t", "CR_Grapheme_Cluster_Break_T"), + GRAPHEMECLUSTERBREAK_LV("graphemeclusterbreak=lv", "CR_Grapheme_Cluster_Break_LV"), + GRAPHEMECLUSTERBREAK_LVT("graphemeclusterbreak=lvt", "CR_Grapheme_Cluster_Break_LVT"), + GRAPHEMECLUSTERBREAK_ZWJ("graphemeclusterbreak=zwj", "CR_Grapheme_Cluster_Break_ZWJ"), + INBASICLATIN("inbasiclatin", "CR_ASCII"), + INLATIN1SUPPLEMENT("inlatin1supplement", "CR_In_Latin_1_Supplement"), + INLATINEXTENDEDA("inlatinextendeda", "CR_In_Latin_Extended_A"), + INLATINEXTENDEDB("inlatinextendedb", "CR_In_Latin_Extended_B"), + INIPAEXTENSIONS("inipaextensions", "CR_In_IPA_Extensions"), + INSPACINGMODIFIERLETTERS("inspacingmodifierletters", "CR_In_Spacing_Modifier_Letters"), + INCOMBININGDIACRITICALMARKS("incombiningdiacriticalmarks", "CR_In_Combining_Diacritical_Marks"), + INGREEKANDCOPTIC("ingreekandcoptic", "CR_In_Greek_and_Coptic"), + INCYRILLIC("incyrillic", "CR_In_Cyrillic"), + INCYRILLICSUPPLEMENT("incyrillicsupplement", "CR_In_Cyrillic_Supplement"), + INARMENIAN("inarmenian", "CR_In_Armenian"), + INHEBREW("inhebrew", "CR_In_Hebrew"), + INARABIC("inarabic", "CR_In_Arabic"), + INSYRIAC("insyriac", "CR_In_Syriac"), + INARABICSUPPLEMENT("inarabicsupplement", "CR_In_Arabic_Supplement"), + INTHAANA("inthaana", "CR_In_Thaana"), + INNKO("innko", "CR_In_NKo"), + INSAMARITAN("insamaritan", "CR_In_Samaritan"), + INMANDAIC("inmandaic", "CR_In_Mandaic"), + INSYRIACSUPPLEMENT("insyriacsupplement", "CR_In_Syriac_Supplement"), + INARABICEXTENDEDA("inarabicextendeda", "CR_In_Arabic_Extended_A"), + INDEVANAGARI("indevanagari", "CR_In_Devanagari"), + INBENGALI("inbengali", "CR_In_Bengali"), + INGURMUKHI("ingurmukhi", "CR_In_Gurmukhi"), + INGUJARATI("ingujarati", "CR_In_Gujarati"), + INORIYA("inoriya", "CR_In_Oriya"), + INTAMIL("intamil", "CR_In_Tamil"), + INTELUGU("intelugu", "CR_In_Telugu"), + INKANNADA("inkannada", "CR_In_Kannada"), + INMALAYALAM("inmalayalam", "CR_In_Malayalam"), + INSINHALA("insinhala", "CR_In_Sinhala"), + INTHAI("inthai", "CR_In_Thai"), + INLAO("inlao", "CR_In_Lao"), + INTIBETAN("intibetan", "CR_In_Tibetan"), + INMYANMAR("inmyanmar", "CR_In_Myanmar"), + INGEORGIAN("ingeorgian", "CR_In_Georgian"), + INHANGULJAMO("inhanguljamo", "CR_In_Hangul_Jamo"), + INETHIOPIC("inethiopic", "CR_In_Ethiopic"), + INETHIOPICSUPPLEMENT("inethiopicsupplement", "CR_In_Ethiopic_Supplement"), + INCHEROKEE("incherokee", "CR_In_Cherokee"), + INUNIFIEDCANADIANABORIGINALSYLLABICS("inunifiedcanadianaboriginalsyllabics", "CR_In_Unified_Canadian_Aboriginal_Syllabics"), + INOGHAM("inogham", "CR_In_Ogham"), + INRUNIC("inrunic", "CR_In_Runic"), + INTAGALOG("intagalog", "CR_In_Tagalog"), + INHANUNOO("inhanunoo", "CR_In_Hanunoo"), + INBUHID("inbuhid", "CR_In_Buhid"), + INTAGBANWA("intagbanwa", "CR_In_Tagbanwa"), + INKHMER("inkhmer", "CR_In_Khmer"), + INMONGOLIAN("inmongolian", "CR_In_Mongolian"), + INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED("inunifiedcanadianaboriginalsyllabicsextended", "CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended"), + INLIMBU("inlimbu", "CR_In_Limbu"), + INTAILE("intaile", "CR_In_Tai_Le"), + INNEWTAILUE("innewtailue", "CR_In_New_Tai_Lue"), + INKHMERSYMBOLS("inkhmersymbols", "CR_In_Khmer_Symbols"), + INBUGINESE("inbuginese", "CR_In_Buginese"), + INTAITHAM("intaitham", "CR_In_Tai_Tham"), + INCOMBININGDIACRITICALMARKSEXTENDED("incombiningdiacriticalmarksextended", "CR_In_Combining_Diacritical_Marks_Extended"), + INBALINESE("inbalinese", "CR_In_Balinese"), + INSUNDANESE("insundanese", "CR_In_Sundanese"), + INBATAK("inbatak", "CR_In_Batak"), + INLEPCHA("inlepcha", "CR_In_Lepcha"), + OLCHIKI("olchiki", "CR_Ol_Chiki"), + OLCK("olck", "CR_Ol_Chiki"), + INCYRILLICEXTENDEDC("incyrillicextendedc", "CR_In_Cyrillic_Extended_C"), + INGEORGIANEXTENDED("ingeorgianextended", "CR_In_Georgian_Extended"), + INSUNDANESESUPPLEMENT("insundanesesupplement", "CR_In_Sundanese_Supplement"), + INVEDICEXTENSIONS("invedicextensions", "CR_In_Vedic_Extensions"), + INPHONETICEXTENSIONS("inphoneticextensions", "CR_In_Phonetic_Extensions"), + INPHONETICEXTENSIONSSUPPLEMENT("inphoneticextensionssupplement", "CR_In_Phonetic_Extensions_Supplement"), + INCOMBININGDIACRITICALMARKSSUPPLEMENT("incombiningdiacriticalmarkssupplement", "CR_In_Combining_Diacritical_Marks_Supplement"), + INLATINEXTENDEDADDITIONAL("inlatinextendedadditional", "CR_In_Latin_Extended_Additional"), + INGREEKEXTENDED("ingreekextended", "CR_In_Greek_Extended"), + INGENERALPUNCTUATION("ingeneralpunctuation", "CR_In_General_Punctuation"), + INSUPERSCRIPTSANDSUBSCRIPTS("insuperscriptsandsubscripts", "CR_In_Superscripts_and_Subscripts"), + INCURRENCYSYMBOLS("incurrencysymbols", "CR_In_Currency_Symbols"), + INCOMBININGDIACRITICALMARKSFORSYMBOLS("incombiningdiacriticalmarksforsymbols", "CR_In_Combining_Diacritical_Marks_for_Symbols"), + INLETTERLIKESYMBOLS("inletterlikesymbols", "CR_In_Letterlike_Symbols"), + INNUMBERFORMS("innumberforms", "CR_In_Number_Forms"), + INARROWS("inarrows", "CR_In_Arrows"), + INMATHEMATICALOPERATORS("inmathematicaloperators", "CR_In_Mathematical_Operators"), + INMISCELLANEOUSTECHNICAL("inmiscellaneoustechnical", "CR_In_Miscellaneous_Technical"), + INCONTROLPICTURES("incontrolpictures", "CR_In_Control_Pictures"), + INOPTICALCHARACTERRECOGNITION("inopticalcharacterrecognition", "CR_In_Optical_Character_Recognition"), + INENCLOSEDALPHANUMERICS("inenclosedalphanumerics", "CR_In_Enclosed_Alphanumerics"), + INBOXDRAWING("inboxdrawing", "CR_In_Box_Drawing"), + INBLOCKELEMENTS("inblockelements", "CR_In_Block_Elements"), + INGEOMETRICSHAPES("ingeometricshapes", "CR_In_Geometric_Shapes"), + INMISCELLANEOUSSYMBOLS("inmiscellaneoussymbols", "CR_In_Miscellaneous_Symbols"), + INDINGBATS("indingbats", "CR_In_Dingbats"), + INMISCELLANEOUSMATHEMATICALSYMBOLSA("inmiscellaneousmathematicalsymbolsa", "CR_In_Miscellaneous_Mathematical_Symbols_A"), + INSUPPLEMENTALARROWSA("insupplementalarrowsa", "CR_In_Supplemental_Arrows_A"), + BRAILLE("braille", "CR_Braille"), + BRAI("brai", "CR_Braille"), + INSUPPLEMENTALARROWSB("insupplementalarrowsb", "CR_In_Supplemental_Arrows_B"), + INMISCELLANEOUSMATHEMATICALSYMBOLSB("inmiscellaneousmathematicalsymbolsb", "CR_In_Miscellaneous_Mathematical_Symbols_B"), + INSUPPLEMENTALMATHEMATICALOPERATORS("insupplementalmathematicaloperators", "CR_In_Supplemental_Mathematical_Operators"), + INMISCELLANEOUSSYMBOLSANDARROWS("inmiscellaneoussymbolsandarrows", "CR_In_Miscellaneous_Symbols_and_Arrows"), + INGLAGOLITIC("inglagolitic", "CR_In_Glagolitic"), + INLATINEXTENDEDC("inlatinextendedc", "CR_In_Latin_Extended_C"), + INCOPTIC("incoptic", "CR_In_Coptic"), + INGEORGIANSUPPLEMENT("ingeorgiansupplement", "CR_In_Georgian_Supplement"), + INTIFINAGH("intifinagh", "CR_In_Tifinagh"), + INETHIOPICEXTENDED("inethiopicextended", "CR_In_Ethiopic_Extended"), + INCYRILLICEXTENDEDA("incyrillicextendeda", "CR_In_Cyrillic_Extended_A"), + INSUPPLEMENTALPUNCTUATION("insupplementalpunctuation", "CR_In_Supplemental_Punctuation"), + INCJKRADICALSSUPPLEMENT("incjkradicalssupplement", "CR_In_CJK_Radicals_Supplement"), + INKANGXIRADICALS("inkangxiradicals", "CR_In_Kangxi_Radicals"), + INIDEOGRAPHICDESCRIPTIONCHARACTERS("inideographicdescriptioncharacters", "CR_In_Ideographic_Description_Characters"), + INCJKSYMBOLSANDPUNCTUATION("incjksymbolsandpunctuation", "CR_In_CJK_Symbols_and_Punctuation"), + INHIRAGANA("inhiragana", "CR_In_Hiragana"), + INKATAKANA("inkatakana", "CR_In_Katakana"), + INBOPOMOFO("inbopomofo", "CR_In_Bopomofo"), + INHANGULCOMPATIBILITYJAMO("inhangulcompatibilityjamo", "CR_In_Hangul_Compatibility_Jamo"), + INKANBUN("inkanbun", "CR_In_Kanbun"), + INBOPOMOFOEXTENDED("inbopomofoextended", "CR_In_Bopomofo_Extended"), + INCJKSTROKES("incjkstrokes", "CR_In_CJK_Strokes"), + INKATAKANAPHONETICEXTENSIONS("inkatakanaphoneticextensions", "CR_In_Katakana_Phonetic_Extensions"), + INENCLOSEDCJKLETTERSANDMONTHS("inenclosedcjklettersandmonths", "CR_In_Enclosed_CJK_Letters_and_Months"), + INCJKCOMPATIBILITY("incjkcompatibility", "CR_In_CJK_Compatibility"), + INCJKUNIFIEDIDEOGRAPHSEXTENSIONA("incjkunifiedideographsextensiona", "CR_In_CJK_Unified_Ideographs_Extension_A"), + INYIJINGHEXAGRAMSYMBOLS("inyijinghexagramsymbols", "CR_In_Yijing_Hexagram_Symbols"), + INCJKUNIFIEDIDEOGRAPHS("incjkunifiedideographs", "CR_In_CJK_Unified_Ideographs"), + INYISYLLABLES("inyisyllables", "CR_In_Yi_Syllables"), + INYIRADICALS("inyiradicals", "CR_In_Yi_Radicals"), + LISU("lisu", "CR_Lisu"), + INVAI("invai", "CR_In_Vai"), + INCYRILLICEXTENDEDB("incyrillicextendedb", "CR_In_Cyrillic_Extended_B"), + INBAMUM("inbamum", "CR_In_Bamum"), + INMODIFIERTONELETTERS("inmodifiertoneletters", "CR_In_Modifier_Tone_Letters"), + INLATINEXTENDEDD("inlatinextendedd", "CR_In_Latin_Extended_D"), + INSYLOTINAGRI("insylotinagri", "CR_In_Syloti_Nagri"), + INCOMMONINDICNUMBERFORMS("incommonindicnumberforms", "CR_In_Common_Indic_Number_Forms"), + INPHAGSPA("inphagspa", "CR_In_Phags_pa"), + INSAURASHTRA("insaurashtra", "CR_In_Saurashtra"), + INDEVANAGARIEXTENDED("indevanagariextended", "CR_In_Devanagari_Extended"), + INKAYAHLI("inkayahli", "CR_In_Kayah_Li"), + INREJANG("inrejang", "CR_In_Rejang"), + INHANGULJAMOEXTENDEDA("inhanguljamoextendeda", "CR_In_Hangul_Jamo_Extended_A"), + INJAVANESE("injavanese", "CR_In_Javanese"), + INMYANMAREXTENDEDB("inmyanmarextendedb", "CR_In_Myanmar_Extended_B"), + INCHAM("incham", "CR_In_Cham"), + INMYANMAREXTENDEDA("inmyanmarextendeda", "CR_In_Myanmar_Extended_A"), + INTAIVIET("intaiviet", "CR_In_Tai_Viet"), + INMEETEIMAYEKEXTENSIONS("inmeeteimayekextensions", "CR_In_Meetei_Mayek_Extensions"), + INETHIOPICEXTENDEDA("inethiopicextendeda", "CR_In_Ethiopic_Extended_A"), + INLATINEXTENDEDE("inlatinextendede", "CR_In_Latin_Extended_E"), + INCHEROKEESUPPLEMENT("incherokeesupplement", "CR_In_Cherokee_Supplement"), + INMEETEIMAYEK("inmeeteimayek", "CR_In_Meetei_Mayek"), + INHANGULSYLLABLES("inhangulsyllables", "CR_In_Hangul_Syllables"), + INHANGULJAMOEXTENDEDB("inhanguljamoextendedb", "CR_In_Hangul_Jamo_Extended_B"), + INHIGHSURROGATES("inhighsurrogates", "CR_In_High_Surrogates"), + INHIGHPRIVATEUSESURROGATES("inhighprivateusesurrogates", "CR_In_High_Private_Use_Surrogates"), + INLOWSURROGATES("inlowsurrogates", "CR_In_Low_Surrogates"), + INPRIVATEUSEAREA("inprivateusearea", "CR_In_Private_Use_Area"), + INCJKCOMPATIBILITYIDEOGRAPHS("incjkcompatibilityideographs", "CR_In_CJK_Compatibility_Ideographs"), + INALPHABETICPRESENTATIONFORMS("inalphabeticpresentationforms", "CR_In_Alphabetic_Presentation_Forms"), + INARABICPRESENTATIONFORMSA("inarabicpresentationformsa", "CR_In_Arabic_Presentation_Forms_A"), + INVARIATIONSELECTORS("invariationselectors", "CR_In_Variation_Selectors"), + INVERTICALFORMS("inverticalforms", "CR_In_Vertical_Forms"), + INCOMBININGHALFMARKS("incombininghalfmarks", "CR_In_Combining_Half_Marks"), + INCJKCOMPATIBILITYFORMS("incjkcompatibilityforms", "CR_In_CJK_Compatibility_Forms"), + INSMALLFORMVARIANTS("insmallformvariants", "CR_In_Small_Form_Variants"), + INARABICPRESENTATIONFORMSB("inarabicpresentationformsb", "CR_In_Arabic_Presentation_Forms_B"), + INHALFWIDTHANDFULLWIDTHFORMS("inhalfwidthandfullwidthforms", "CR_In_Halfwidth_and_Fullwidth_Forms"), + INSPECIALS("inspecials", "CR_In_Specials"), + INLINEARBSYLLABARY("inlinearbsyllabary", "CR_In_Linear_B_Syllabary"), + INLINEARBIDEOGRAMS("inlinearbideograms", "CR_In_Linear_B_Ideograms"), + INAEGEANNUMBERS("inaegeannumbers", "CR_In_Aegean_Numbers"), + INANCIENTGREEKNUMBERS("inancientgreeknumbers", "CR_In_Ancient_Greek_Numbers"), + INANCIENTSYMBOLS("inancientsymbols", "CR_In_Ancient_Symbols"), + INPHAISTOSDISC("inphaistosdisc", "CR_In_Phaistos_Disc"), + INLYCIAN("inlycian", "CR_In_Lycian"), + INCARIAN("incarian", "CR_In_Carian"), + INCOPTICEPACTNUMBERS("incopticepactnumbers", "CR_In_Coptic_Epact_Numbers"), + INOLDITALIC("inolditalic", "CR_In_Old_Italic"), + INGOTHIC("ingothic", "CR_In_Gothic"), + INOLDPERMIC("inoldpermic", "CR_In_Old_Permic"), + INUGARITIC("inugaritic", "CR_In_Ugaritic"), + INOLDPERSIAN("inoldpersian", "CR_In_Old_Persian"), + DESERET("deseret", "CR_Deseret"), + DSRT("dsrt", "CR_Deseret"), + SHAVIAN("shavian", "CR_Shavian"), + SHAW("shaw", "CR_Shavian"), + INOSMANYA("inosmanya", "CR_In_Osmanya"), + INOSAGE("inosage", "CR_In_Osage"), + INELBASAN("inelbasan", "CR_In_Elbasan"), + INCAUCASIANALBANIAN("incaucasianalbanian", "CR_In_Caucasian_Albanian"), + INLINEARA("inlineara", "CR_In_Linear_A"), + INCYPRIOTSYLLABARY("incypriotsyllabary", "CR_In_Cypriot_Syllabary"), + INIMPERIALARAMAIC("inimperialaramaic", "CR_In_Imperial_Aramaic"), + PALMYRENE("palmyrene", "CR_Palmyrene"), + PALM("palm", "CR_Palmyrene"), + INNABATAEAN("innabataean", "CR_In_Nabataean"), + INHATRAN("inhatran", "CR_In_Hatran"), + INPHOENICIAN("inphoenician", "CR_In_Phoenician"), + INLYDIAN("inlydian", "CR_In_Lydian"), + MEROITICHIEROGLYPHS("meroitichieroglyphs", "CR_Meroitic_Hieroglyphs"), + MERO("mero", "CR_Meroitic_Hieroglyphs"), + INMEROITICCURSIVE("inmeroiticcursive", "CR_In_Meroitic_Cursive"), + INKHAROSHTHI("inkharoshthi", "CR_In_Kharoshthi"), + OLDSOUTHARABIAN("oldsoutharabian", "CR_Old_South_Arabian"), + SARB("sarb", "CR_Old_South_Arabian"), + OLDNORTHARABIAN("oldnortharabian", "CR_Old_North_Arabian"), + NARB("narb", "CR_Old_North_Arabian"), + INMANICHAEAN("inmanichaean", "CR_In_Manichaean"), + INAVESTAN("inavestan", "CR_In_Avestan"), + ININSCRIPTIONALPARTHIAN("ininscriptionalparthian", "CR_In_Inscriptional_Parthian"), + ININSCRIPTIONALPAHLAVI("ininscriptionalpahlavi", "CR_In_Inscriptional_Pahlavi"), + INPSALTERPAHLAVI("inpsalterpahlavi", "CR_In_Psalter_Pahlavi"), + INOLDTURKIC("inoldturkic", "CR_In_Old_Turkic"), + INOLDHUNGARIAN("inoldhungarian", "CR_In_Old_Hungarian"), + INHANIFIROHINGYA("inhanifirohingya", "CR_In_Hanifi_Rohingya"), + INRUMINUMERALSYMBOLS("inruminumeralsymbols", "CR_In_Rumi_Numeral_Symbols"), + INOLDSOGDIAN("inoldsogdian", "CR_In_Old_Sogdian"), + INSOGDIAN("insogdian", "CR_In_Sogdian"), + INELYMAIC("inelymaic", "CR_In_Elymaic"), + INBRAHMI("inbrahmi", "CR_In_Brahmi"), + INKAITHI("inkaithi", "CR_In_Kaithi"), + INSORASOMPENG("insorasompeng", "CR_In_Sora_Sompeng"), + INCHAKMA("inchakma", "CR_In_Chakma"), + INMAHAJANI("inmahajani", "CR_In_Mahajani"), + INSHARADA("insharada", "CR_In_Sharada"), + INSINHALAARCHAICNUMBERS("insinhalaarchaicnumbers", "CR_In_Sinhala_Archaic_Numbers"), + INKHOJKI("inkhojki", "CR_In_Khojki"), + INMULTANI("inmultani", "CR_In_Multani"), + INKHUDAWADI("inkhudawadi", "CR_In_Khudawadi"), + INGRANTHA("ingrantha", "CR_In_Grantha"), + INNEWA("innewa", "CR_In_Newa"), + INTIRHUTA("intirhuta", "CR_In_Tirhuta"), + INSIDDHAM("insiddham", "CR_In_Siddham"), + INMODI("inmodi", "CR_In_Modi"), + INMONGOLIANSUPPLEMENT("inmongoliansupplement", "CR_In_Mongolian_Supplement"), + INTAKRI("intakri", "CR_In_Takri"), + INAHOM("inahom", "CR_In_Ahom"), + INDOGRA("indogra", "CR_In_Dogra"), + INWARANGCITI("inwarangciti", "CR_In_Warang_Citi"), + INNANDINAGARI("innandinagari", "CR_In_Nandinagari"), + INZANABAZARSQUARE("inzanabazarsquare", "CR_In_Zanabazar_Square"), + INSOYOMBO("insoyombo", "CR_In_Soyombo"), + INPAUCINHAU("inpaucinhau", "CR_In_Pau_Cin_Hau"), + INBHAIKSUKI("inbhaiksuki", "CR_In_Bhaiksuki"), + INMARCHEN("inmarchen", "CR_In_Marchen"), + INMASARAMGONDI("inmasaramgondi", "CR_In_Masaram_Gondi"), + INGUNJALAGONDI("ingunjalagondi", "CR_In_Gunjala_Gondi"), + INMAKASAR("inmakasar", "CR_In_Makasar"), + INTAMILSUPPLEMENT("intamilsupplement", "CR_In_Tamil_Supplement"), + INCUNEIFORM("incuneiform", "CR_In_Cuneiform"), + INCUNEIFORMNUMBERSANDPUNCTUATION("incuneiformnumbersandpunctuation", "CR_In_Cuneiform_Numbers_and_Punctuation"), + INEARLYDYNASTICCUNEIFORM("inearlydynasticcuneiform", "CR_In_Early_Dynastic_Cuneiform"), + INEGYPTIANHIEROGLYPHS("inegyptianhieroglyphs", "CR_In_Egyptian_Hieroglyphs"), + INEGYPTIANHIEROGLYPHFORMATCONTROLS("inegyptianhieroglyphformatcontrols", "CR_In_Egyptian_Hieroglyph_Format_Controls"), + INANATOLIANHIEROGLYPHS("inanatolianhieroglyphs", "CR_In_Anatolian_Hieroglyphs"), + INBAMUMSUPPLEMENT("inbamumsupplement", "CR_In_Bamum_Supplement"), + INMRO("inmro", "CR_In_Mro"), + INBASSAVAH("inbassavah", "CR_In_Bassa_Vah"), + INPAHAWHHMONG("inpahawhhmong", "CR_In_Pahawh_Hmong"), + INMEDEFAIDRIN("inmedefaidrin", "CR_In_Medefaidrin"), + INMIAO("inmiao", "CR_In_Miao"), + INIDEOGRAPHICSYMBOLSANDPUNCTUATION("inideographicsymbolsandpunctuation", "CR_In_Ideographic_Symbols_and_Punctuation"), + INTANGUT("intangut", "CR_In_Tangut"), + INTANGUTCOMPONENTS("intangutcomponents", "CR_In_Tangut_Components"), + INKANASUPPLEMENT("inkanasupplement", "CR_In_Kana_Supplement"), + INKANAEXTENDEDA("inkanaextendeda", "CR_In_Kana_Extended_A"), + INSMALLKANAEXTENSION("insmallkanaextension", "CR_In_Small_Kana_Extension"), + INNUSHU("innushu", "CR_In_Nushu"), + INDUPLOYAN("induployan", "CR_In_Duployan"), + INSHORTHANDFORMATCONTROLS("inshorthandformatcontrols", "CR_In_Shorthand_Format_Controls"), + INBYZANTINEMUSICALSYMBOLS("inbyzantinemusicalsymbols", "CR_In_Byzantine_Musical_Symbols"), + INMUSICALSYMBOLS("inmusicalsymbols", "CR_In_Musical_Symbols"), + INANCIENTGREEKMUSICALNOTATION("inancientgreekmusicalnotation", "CR_In_Ancient_Greek_Musical_Notation"), + INMAYANNUMERALS("inmayannumerals", "CR_In_Mayan_Numerals"), + INTAIXUANJINGSYMBOLS("intaixuanjingsymbols", "CR_In_Tai_Xuan_Jing_Symbols"), + INCOUNTINGRODNUMERALS("incountingrodnumerals", "CR_In_Counting_Rod_Numerals"), + INMATHEMATICALALPHANUMERICSYMBOLS("inmathematicalalphanumericsymbols", "CR_In_Mathematical_Alphanumeric_Symbols"), + INSUTTONSIGNWRITING("insuttonsignwriting", "CR_In_Sutton_SignWriting"), + INGLAGOLITICSUPPLEMENT("inglagoliticsupplement", "CR_In_Glagolitic_Supplement"), + INNYIAKENGPUACHUEHMONG("innyiakengpuachuehmong", "CR_In_Nyiakeng_Puachue_Hmong"), + INWANCHO("inwancho", "CR_In_Wancho"), + INMENDEKIKAKUI("inmendekikakui", "CR_In_Mende_Kikakui"), + INADLAM("inadlam", "CR_In_Adlam"), + ININDICSIYAQNUMBERS("inindicsiyaqnumbers", "CR_In_Indic_Siyaq_Numbers"), + INOTTOMANSIYAQNUMBERS("inottomansiyaqnumbers", "CR_In_Ottoman_Siyaq_Numbers"), + INARABICMATHEMATICALALPHABETICSYMBOLS("inarabicmathematicalalphabeticsymbols", "CR_In_Arabic_Mathematical_Alphabetic_Symbols"), + INMAHJONGTILES("inmahjongtiles", "CR_In_Mahjong_Tiles"), + INDOMINOTILES("indominotiles", "CR_In_Domino_Tiles"), + INPLAYINGCARDS("inplayingcards", "CR_In_Playing_Cards"), + INENCLOSEDALPHANUMERICSUPPLEMENT("inenclosedalphanumericsupplement", "CR_In_Enclosed_Alphanumeric_Supplement"), + INENCLOSEDIDEOGRAPHICSUPPLEMENT("inenclosedideographicsupplement", "CR_In_Enclosed_Ideographic_Supplement"), + INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS("inmiscellaneoussymbolsandpictographs", "CR_In_Miscellaneous_Symbols_and_Pictographs"), + INEMOTICONS("inemoticons", "CR_In_Emoticons"), + INORNAMENTALDINGBATS("inornamentaldingbats", "CR_In_Ornamental_Dingbats"), + INTRANSPORTANDMAPSYMBOLS("intransportandmapsymbols", "CR_In_Transport_and_Map_Symbols"), + INALCHEMICALSYMBOLS("inalchemicalsymbols", "CR_In_Alchemical_Symbols"), + INGEOMETRICSHAPESEXTENDED("ingeometricshapesextended", "CR_In_Geometric_Shapes_Extended"), + INSUPPLEMENTALARROWSC("insupplementalarrowsc", "CR_In_Supplemental_Arrows_C"), + INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS("insupplementalsymbolsandpictographs", "CR_In_Supplemental_Symbols_and_Pictographs"), + INCHESSSYMBOLS("inchesssymbols", "CR_In_Chess_Symbols"), + INSYMBOLSANDPICTOGRAPHSEXTENDEDA("insymbolsandpictographsextendeda", "CR_In_Symbols_and_Pictographs_Extended_A"), + INCJKUNIFIEDIDEOGRAPHSEXTENSIONB("incjkunifiedideographsextensionb", "CR_In_CJK_Unified_Ideographs_Extension_B"), + INCJKUNIFIEDIDEOGRAPHSEXTENSIONC("incjkunifiedideographsextensionc", "CR_In_CJK_Unified_Ideographs_Extension_C"), + INCJKUNIFIEDIDEOGRAPHSEXTENSIOND("incjkunifiedideographsextensiond", "CR_In_CJK_Unified_Ideographs_Extension_D"), + INCJKUNIFIEDIDEOGRAPHSEXTENSIONE("incjkunifiedideographsextensione", "CR_In_CJK_Unified_Ideographs_Extension_E"), + INCJKUNIFIEDIDEOGRAPHSEXTENSIONF("incjkunifiedideographsextensionf", "CR_In_CJK_Unified_Ideographs_Extension_F"), + INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT("incjkcompatibilityideographssupplement", "CR_In_CJK_Compatibility_Ideographs_Supplement"), + INTAGS("intags", "CR_In_Tags"), + INVARIATIONSELECTORSSUPPLEMENT("invariationselectorssupplement", "CR_In_Variation_Selectors_Supplement"), + INSUPPLEMENTARYPRIVATEUSEAREAA("insupplementaryprivateuseareaa", "CR_In_Supplementary_Private_Use_Area_A"), + INSUPPLEMENTARYPRIVATEUSEAREAB("insupplementaryprivateuseareab", "CR_In_Supplementary_Private_Use_Area_B"), + INNOBLOCK("innoblock", "CR_In_No_Block"); + + private final String table; + final byte[]name; + private int[]range; + + private UnicodeCodeRange(String name, String table) { + this.table = table; + this.name = name.getBytes(); + } + + int[]getRange() { + if (range == null) range = ArrayReader.readIntArray(table); + return range; + } + + public boolean contains(int code) { + return CodeRange.isInCodeRange(range, code); + } + + static final UnicodeCodeRange[]CodeRangeTable = UnicodeCodeRange.values(); + static final int MAX_WORD_LENGTH = 44; +} diff --git a/src/org/jcodings/unicode/UnicodeEncoding.java b/src/org/jcodings/unicode/UnicodeEncoding.java index 6b570442..cd75ad80 100644 --- a/src/org/jcodings/unicode/UnicodeEncoding.java +++ b/src/org/jcodings/unicode/UnicodeEncoding.java @@ -38,7 +38,7 @@ import org.jcodings.util.IntHash; public abstract class UnicodeEncoding extends MultiByteEncoding { - private static final int PROPERTY_NAME_MAX_SIZE = UnicodeProperties.MAX_WORD_LENGTH + 1; + private static final int PROPERTY_NAME_MAX_SIZE = UnicodeCodeRange.MAX_WORD_LENGTH + 1; static final int I_WITH_DOT_ABOVE = 0x0130; static final int DOTLESS_i = 0x0131; static final int DOT_ABOVE = 0x0307; @@ -68,17 +68,21 @@ public boolean isCodeCType(int code, int ctype) { if (code < 256) return isCodeCTypeInternal(code, ctype); } - if (ctype > UnicodeProperties.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG); + if (ctype > UnicodeCodeRange.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG); - return CodeRange.isInCodeRange(UnicodeProperties.CodeRangeTable[ctype].getRange(), code); + return CodeRange.isInCodeRange(UnicodeCodeRange.CodeRangeTable[ctype].getRange(), code); } + public static boolean isInCodeRange(UnicodeCodeRange range, int code) { + return CodeRange.isInCodeRange(range.getRange(), code); + } + // onigenc_unicode_ctype_code_range protected final int[]ctypeCodeRange(int ctype) { - if (ctype >= UnicodeProperties.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG); + if (ctype >= UnicodeCodeRange.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG); - return UnicodeProperties.CodeRangeTable[ctype].getRange(); + return UnicodeCodeRange.CodeRangeTable[ctype].getRange(); } // onigenc_unicode_property_name_to_ctype @@ -560,29 +564,13 @@ public final int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, b 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; - static final class CodeRangeEntry { - final String table; - final byte[]name; - int[]range; - - CodeRangeEntry(String name, String table) { - this.table = table; - this.name = name.getBytes(); - } - - public int[]getRange() { - if (range == null) range = ArrayReader.readIntArray(table); - return range; - } - } - static class CTypeName { private static final CaseInsensitiveBytesHash Values = initializeCTypeNameTable(); private static CaseInsensitiveBytesHash initializeCTypeNameTable() { CaseInsensitiveBytesHash table = new CaseInsensitiveBytesHash(); - for (int i = 0; i < UnicodeProperties.CodeRangeTable.length; i++) { - table.putDirect(UnicodeProperties.CodeRangeTable[i].name, i); + for (int i = 0; i < UnicodeCodeRange.CodeRangeTable.length; i++) { + table.putDirect(UnicodeCodeRange.CodeRangeTable[i].name, i); } return table; } diff --git a/src/org/jcodings/unicode/UnicodeProperties.java b/src/org/jcodings/unicode/UnicodeProperties.java deleted file mode 100644 index 93bf907b..00000000 --- a/src/org/jcodings/unicode/UnicodeProperties.java +++ /dev/null @@ -1,866 +0,0 @@ -/* - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is furnished to do - * so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package org.jcodings.unicode; - -import org.jcodings.unicode.UnicodeEncoding.CodeRangeEntry; - -public class UnicodeProperties { - static final CodeRangeEntry[]CodeRangeTable = new CodeRangeEntry[] { - new CodeRangeEntry("newline", "CR_NEWLINE"), - new CodeRangeEntry("alpha", "CR_Alpha"), - new CodeRangeEntry("blank", "CR_Blank"), - new CodeRangeEntry("cntrl", "CR_Cntrl"), - new CodeRangeEntry("digit", "CR_Digit"), - new CodeRangeEntry("graph", "CR_Graph"), - new CodeRangeEntry("lower", "CR_Lower"), - new CodeRangeEntry("print", "CR_Print"), - new CodeRangeEntry("xposixpunct", "CR_XPosixPunct"), - new CodeRangeEntry("space", "CR_Space"), - new CodeRangeEntry("upper", "CR_Upper"), - new CodeRangeEntry("xdigit", "CR_XDigit"), - new CodeRangeEntry("word", "CR_Word"), - new CodeRangeEntry("alnum", "CR_Alnum"), - new CodeRangeEntry("ascii", "CR_ASCII"), - new CodeRangeEntry("punct", "CR_Punct"), - new CodeRangeEntry("any", "CR_Any"), - new CodeRangeEntry("assigned", "CR_Assigned"), - new CodeRangeEntry("c", "CR_C"), - new CodeRangeEntry("other", "CR_C"), - new CodeRangeEntry("cc", "CR_Cntrl"), - new CodeRangeEntry("control", "CR_Cntrl"), - new CodeRangeEntry("cf", "CR_Cf"), - new CodeRangeEntry("format", "CR_Cf"), - new CodeRangeEntry("cn", "CR_Cn"), - new CodeRangeEntry("unassigned", "CR_Cn"), - new CodeRangeEntry("co", "CR_Co"), - new CodeRangeEntry("privateuse", "CR_Co"), - new CodeRangeEntry("cs", "CR_Cs"), - new CodeRangeEntry("surrogate", "CR_Cs"), - new CodeRangeEntry("l", "CR_L"), - new CodeRangeEntry("letter", "CR_L"), - new CodeRangeEntry("lc", "CR_LC"), - new CodeRangeEntry("casedletter", "CR_LC"), - new CodeRangeEntry("ll", "CR_Ll"), - new CodeRangeEntry("lowercaseletter", "CR_Ll"), - new CodeRangeEntry("lm", "CR_Lm"), - new CodeRangeEntry("modifierletter", "CR_Lm"), - new CodeRangeEntry("lo", "CR_Lo"), - new CodeRangeEntry("otherletter", "CR_Lo"), - new CodeRangeEntry("lt", "CR_Lt"), - new CodeRangeEntry("titlecaseletter", "CR_Lt"), - new CodeRangeEntry("lu", "CR_Lu"), - new CodeRangeEntry("uppercaseletter", "CR_Lu"), - new CodeRangeEntry("m", "CR_M"), - new CodeRangeEntry("mark", "CR_M"), - new CodeRangeEntry("combiningmark", "CR_M"), - new CodeRangeEntry("mc", "CR_Mc"), - new CodeRangeEntry("spacingmark", "CR_Mc"), - new CodeRangeEntry("me", "CR_Me"), - new CodeRangeEntry("enclosingmark", "CR_Me"), - new CodeRangeEntry("mn", "CR_Mn"), - new CodeRangeEntry("nonspacingmark", "CR_Mn"), - new CodeRangeEntry("n", "CR_N"), - new CodeRangeEntry("number", "CR_N"), - new CodeRangeEntry("nd", "CR_Digit"), - new CodeRangeEntry("decimalnumber", "CR_Digit"), - new CodeRangeEntry("nl", "CR_Nl"), - new CodeRangeEntry("letternumber", "CR_Nl"), - new CodeRangeEntry("no", "CR_No"), - new CodeRangeEntry("othernumber", "CR_No"), - new CodeRangeEntry("p", "CR_Punct"), - new CodeRangeEntry("punctuation", "CR_Punct"), - new CodeRangeEntry("pc", "CR_Pc"), - new CodeRangeEntry("connectorpunctuation", "CR_Pc"), - new CodeRangeEntry("pd", "CR_Pd"), - new CodeRangeEntry("dashpunctuation", "CR_Pd"), - new CodeRangeEntry("pe", "CR_Pe"), - new CodeRangeEntry("closepunctuation", "CR_Pe"), - new CodeRangeEntry("pf", "CR_Pf"), - new CodeRangeEntry("finalpunctuation", "CR_Pf"), - new CodeRangeEntry("pi", "CR_Pi"), - new CodeRangeEntry("initialpunctuation", "CR_Pi"), - new CodeRangeEntry("po", "CR_Po"), - new CodeRangeEntry("otherpunctuation", "CR_Po"), - new CodeRangeEntry("ps", "CR_Ps"), - new CodeRangeEntry("openpunctuation", "CR_Ps"), - new CodeRangeEntry("s", "CR_S"), - new CodeRangeEntry("symbol", "CR_S"), - new CodeRangeEntry("sc", "CR_Sc"), - new CodeRangeEntry("currencysymbol", "CR_Sc"), - new CodeRangeEntry("sk", "CR_Sk"), - new CodeRangeEntry("modifiersymbol", "CR_Sk"), - new CodeRangeEntry("sm", "CR_Sm"), - new CodeRangeEntry("mathsymbol", "CR_Sm"), - new CodeRangeEntry("so", "CR_So"), - new CodeRangeEntry("othersymbol", "CR_So"), - new CodeRangeEntry("z", "CR_Z"), - new CodeRangeEntry("separator", "CR_Z"), - new CodeRangeEntry("zl", "CR_Zl"), - new CodeRangeEntry("lineseparator", "CR_Zl"), - new CodeRangeEntry("zp", "CR_Zp"), - new CodeRangeEntry("paragraphseparator", "CR_Zp"), - new CodeRangeEntry("zs", "CR_Zs"), - new CodeRangeEntry("spaceseparator", "CR_Zs"), - new CodeRangeEntry("math", "CR_Math"), - new CodeRangeEntry("alphabetic", "CR_Alpha"), - new CodeRangeEntry("lowercase", "CR_Lower"), - new CodeRangeEntry("uppercase", "CR_Upper"), - new CodeRangeEntry("cased", "CR_Cased"), - new CodeRangeEntry("caseignorable", "CR_Case_Ignorable"), - new CodeRangeEntry("ci", "CR_Case_Ignorable"), - new CodeRangeEntry("changeswhenlowercased", "CR_Changes_When_Lowercased"), - new CodeRangeEntry("cwl", "CR_Changes_When_Lowercased"), - new CodeRangeEntry("changeswhenuppercased", "CR_Changes_When_Uppercased"), - new CodeRangeEntry("cwu", "CR_Changes_When_Uppercased"), - new CodeRangeEntry("changeswhentitlecased", "CR_Changes_When_Titlecased"), - new CodeRangeEntry("cwt", "CR_Changes_When_Titlecased"), - new CodeRangeEntry("changeswhencasefolded", "CR_Changes_When_Casefolded"), - new CodeRangeEntry("cwcf", "CR_Changes_When_Casefolded"), - new CodeRangeEntry("changeswhencasemapped", "CR_Changes_When_Casemapped"), - new CodeRangeEntry("cwcm", "CR_Changes_When_Casemapped"), - new CodeRangeEntry("idstart", "CR_ID_Start"), - new CodeRangeEntry("ids", "CR_ID_Start"), - new CodeRangeEntry("idcontinue", "CR_ID_Continue"), - new CodeRangeEntry("idc", "CR_ID_Continue"), - new CodeRangeEntry("xidstart", "CR_XID_Start"), - new CodeRangeEntry("xids", "CR_XID_Start"), - new CodeRangeEntry("xidcontinue", "CR_XID_Continue"), - new CodeRangeEntry("xidc", "CR_XID_Continue"), - new CodeRangeEntry("defaultignorablecodepoint", "CR_Default_Ignorable_Code_Point"), - new CodeRangeEntry("di", "CR_Default_Ignorable_Code_Point"), - new CodeRangeEntry("graphemeextend", "CR_Grapheme_Extend"), - new CodeRangeEntry("grext", "CR_Grapheme_Extend"), - new CodeRangeEntry("graphemebase", "CR_Grapheme_Base"), - new CodeRangeEntry("grbase", "CR_Grapheme_Base"), - new CodeRangeEntry("graphemelink", "CR_Grapheme_Link"), - new CodeRangeEntry("grlink", "CR_Grapheme_Link"), - new CodeRangeEntry("common", "CR_Common"), - new CodeRangeEntry("zyyy", "CR_Common"), - new CodeRangeEntry("latin", "CR_Latin"), - new CodeRangeEntry("latn", "CR_Latin"), - new CodeRangeEntry("greek", "CR_Greek"), - new CodeRangeEntry("grek", "CR_Greek"), - new CodeRangeEntry("cyrillic", "CR_Cyrillic"), - new CodeRangeEntry("cyrl", "CR_Cyrillic"), - new CodeRangeEntry("armenian", "CR_Armenian"), - new CodeRangeEntry("armn", "CR_Armenian"), - new CodeRangeEntry("hebrew", "CR_Hebrew"), - new CodeRangeEntry("hebr", "CR_Hebrew"), - new CodeRangeEntry("arabic", "CR_Arabic"), - new CodeRangeEntry("arab", "CR_Arabic"), - new CodeRangeEntry("syriac", "CR_Syriac"), - new CodeRangeEntry("syrc", "CR_Syriac"), - new CodeRangeEntry("thaana", "CR_Thaana"), - new CodeRangeEntry("thaa", "CR_Thaana"), - new CodeRangeEntry("devanagari", "CR_Devanagari"), - new CodeRangeEntry("deva", "CR_Devanagari"), - new CodeRangeEntry("bengali", "CR_Bengali"), - new CodeRangeEntry("beng", "CR_Bengali"), - new CodeRangeEntry("gurmukhi", "CR_Gurmukhi"), - new CodeRangeEntry("guru", "CR_Gurmukhi"), - new CodeRangeEntry("gujarati", "CR_Gujarati"), - new CodeRangeEntry("gujr", "CR_Gujarati"), - new CodeRangeEntry("oriya", "CR_Oriya"), - new CodeRangeEntry("orya", "CR_Oriya"), - new CodeRangeEntry("tamil", "CR_Tamil"), - new CodeRangeEntry("taml", "CR_Tamil"), - new CodeRangeEntry("telugu", "CR_Telugu"), - new CodeRangeEntry("telu", "CR_Telugu"), - new CodeRangeEntry("kannada", "CR_Kannada"), - new CodeRangeEntry("knda", "CR_Kannada"), - new CodeRangeEntry("malayalam", "CR_Malayalam"), - new CodeRangeEntry("mlym", "CR_Malayalam"), - new CodeRangeEntry("sinhala", "CR_Sinhala"), - new CodeRangeEntry("sinh", "CR_Sinhala"), - new CodeRangeEntry("thai", "CR_Thai"), - new CodeRangeEntry("lao", "CR_Lao"), - new CodeRangeEntry("laoo", "CR_Lao"), - new CodeRangeEntry("tibetan", "CR_Tibetan"), - new CodeRangeEntry("tibt", "CR_Tibetan"), - new CodeRangeEntry("myanmar", "CR_Myanmar"), - new CodeRangeEntry("mymr", "CR_Myanmar"), - new CodeRangeEntry("georgian", "CR_Georgian"), - new CodeRangeEntry("geor", "CR_Georgian"), - new CodeRangeEntry("hangul", "CR_Hangul"), - new CodeRangeEntry("hang", "CR_Hangul"), - new CodeRangeEntry("ethiopic", "CR_Ethiopic"), - new CodeRangeEntry("ethi", "CR_Ethiopic"), - new CodeRangeEntry("cherokee", "CR_Cherokee"), - new CodeRangeEntry("cher", "CR_Cherokee"), - new CodeRangeEntry("canadianaboriginal", "CR_Canadian_Aboriginal"), - new CodeRangeEntry("cans", "CR_Canadian_Aboriginal"), - new CodeRangeEntry("ogham", "CR_Ogham"), - new CodeRangeEntry("ogam", "CR_Ogham"), - new CodeRangeEntry("runic", "CR_Runic"), - new CodeRangeEntry("runr", "CR_Runic"), - new CodeRangeEntry("khmer", "CR_Khmer"), - new CodeRangeEntry("khmr", "CR_Khmer"), - new CodeRangeEntry("mongolian", "CR_Mongolian"), - new CodeRangeEntry("mong", "CR_Mongolian"), - new CodeRangeEntry("hiragana", "CR_Hiragana"), - new CodeRangeEntry("hira", "CR_Hiragana"), - new CodeRangeEntry("katakana", "CR_Katakana"), - new CodeRangeEntry("kana", "CR_Katakana"), - new CodeRangeEntry("bopomofo", "CR_Bopomofo"), - new CodeRangeEntry("bopo", "CR_Bopomofo"), - new CodeRangeEntry("han", "CR_Han"), - new CodeRangeEntry("hani", "CR_Han"), - new CodeRangeEntry("yi", "CR_Yi"), - new CodeRangeEntry("yiii", "CR_Yi"), - new CodeRangeEntry("olditalic", "CR_Old_Italic"), - new CodeRangeEntry("ital", "CR_Old_Italic"), - new CodeRangeEntry("gothic", "CR_Gothic"), - new CodeRangeEntry("goth", "CR_Gothic"), - new CodeRangeEntry("indeseret", "CR_Deseret"), - new CodeRangeEntry("inherited", "CR_Inherited"), - new CodeRangeEntry("qaai", "CR_Inherited"), - new CodeRangeEntry("zinh", "CR_Inherited"), - new CodeRangeEntry("tagalog", "CR_Tagalog"), - new CodeRangeEntry("tglg", "CR_Tagalog"), - new CodeRangeEntry("hanunoo", "CR_Hanunoo"), - new CodeRangeEntry("hano", "CR_Hanunoo"), - new CodeRangeEntry("buhid", "CR_Buhid"), - new CodeRangeEntry("buhd", "CR_Buhid"), - new CodeRangeEntry("tagbanwa", "CR_Tagbanwa"), - new CodeRangeEntry("tagb", "CR_Tagbanwa"), - new CodeRangeEntry("limbu", "CR_Limbu"), - new CodeRangeEntry("limb", "CR_Limbu"), - new CodeRangeEntry("taile", "CR_Tai_Le"), - new CodeRangeEntry("tale", "CR_Tai_Le"), - new CodeRangeEntry("linearb", "CR_Linear_B"), - new CodeRangeEntry("linb", "CR_Linear_B"), - new CodeRangeEntry("ugaritic", "CR_Ugaritic"), - new CodeRangeEntry("ugar", "CR_Ugaritic"), - new CodeRangeEntry("inshavian", "CR_Shavian"), - new CodeRangeEntry("osmanya", "CR_Osmanya"), - new CodeRangeEntry("osma", "CR_Osmanya"), - new CodeRangeEntry("cypriot", "CR_Cypriot"), - new CodeRangeEntry("cprt", "CR_Cypriot"), - new CodeRangeEntry("inbraillepatterns", "CR_Braille"), - new CodeRangeEntry("buginese", "CR_Buginese"), - new CodeRangeEntry("bugi", "CR_Buginese"), - new CodeRangeEntry("coptic", "CR_Coptic"), - new CodeRangeEntry("qaac", "CR_Coptic"), - new CodeRangeEntry("copt", "CR_Coptic"), - new CodeRangeEntry("newtailue", "CR_New_Tai_Lue"), - new CodeRangeEntry("talu", "CR_New_Tai_Lue"), - new CodeRangeEntry("glagolitic", "CR_Glagolitic"), - new CodeRangeEntry("glag", "CR_Glagolitic"), - new CodeRangeEntry("tifinagh", "CR_Tifinagh"), - new CodeRangeEntry("tfng", "CR_Tifinagh"), - new CodeRangeEntry("sylotinagri", "CR_Syloti_Nagri"), - new CodeRangeEntry("sylo", "CR_Syloti_Nagri"), - new CodeRangeEntry("oldpersian", "CR_Old_Persian"), - new CodeRangeEntry("xpeo", "CR_Old_Persian"), - new CodeRangeEntry("kharoshthi", "CR_Kharoshthi"), - new CodeRangeEntry("khar", "CR_Kharoshthi"), - new CodeRangeEntry("balinese", "CR_Balinese"), - new CodeRangeEntry("bali", "CR_Balinese"), - new CodeRangeEntry("cuneiform", "CR_Cuneiform"), - new CodeRangeEntry("xsux", "CR_Cuneiform"), - new CodeRangeEntry("phoenician", "CR_Phoenician"), - new CodeRangeEntry("phnx", "CR_Phoenician"), - new CodeRangeEntry("phagspa", "CR_Phags_Pa"), - new CodeRangeEntry("phag", "CR_Phags_Pa"), - new CodeRangeEntry("nko", "CR_Nko"), - new CodeRangeEntry("nkoo", "CR_Nko"), - new CodeRangeEntry("sundanese", "CR_Sundanese"), - new CodeRangeEntry("sund", "CR_Sundanese"), - new CodeRangeEntry("lepcha", "CR_Lepcha"), - new CodeRangeEntry("lepc", "CR_Lepcha"), - new CodeRangeEntry("inolchiki", "CR_Ol_Chiki"), - new CodeRangeEntry("vai", "CR_Vai"), - new CodeRangeEntry("vaii", "CR_Vai"), - new CodeRangeEntry("saurashtra", "CR_Saurashtra"), - new CodeRangeEntry("saur", "CR_Saurashtra"), - new CodeRangeEntry("kayahli", "CR_Kayah_Li"), - new CodeRangeEntry("kali", "CR_Kayah_Li"), - new CodeRangeEntry("rejang", "CR_Rejang"), - new CodeRangeEntry("rjng", "CR_Rejang"), - new CodeRangeEntry("lycian", "CR_Lycian"), - new CodeRangeEntry("lyci", "CR_Lycian"), - new CodeRangeEntry("carian", "CR_Carian"), - new CodeRangeEntry("cari", "CR_Carian"), - new CodeRangeEntry("lydian", "CR_Lydian"), - new CodeRangeEntry("lydi", "CR_Lydian"), - new CodeRangeEntry("cham", "CR_Cham"), - new CodeRangeEntry("taitham", "CR_Tai_Tham"), - new CodeRangeEntry("lana", "CR_Tai_Tham"), - new CodeRangeEntry("taiviet", "CR_Tai_Viet"), - new CodeRangeEntry("tavt", "CR_Tai_Viet"), - new CodeRangeEntry("avestan", "CR_Avestan"), - new CodeRangeEntry("avst", "CR_Avestan"), - new CodeRangeEntry("egyptianhieroglyphs", "CR_Egyptian_Hieroglyphs"), - new CodeRangeEntry("egyp", "CR_Egyptian_Hieroglyphs"), - new CodeRangeEntry("samaritan", "CR_Samaritan"), - new CodeRangeEntry("samr", "CR_Samaritan"), - new CodeRangeEntry("inlisu", "CR_Lisu"), - new CodeRangeEntry("bamum", "CR_Bamum"), - new CodeRangeEntry("bamu", "CR_Bamum"), - new CodeRangeEntry("javanese", "CR_Javanese"), - new CodeRangeEntry("java", "CR_Javanese"), - new CodeRangeEntry("meeteimayek", "CR_Meetei_Mayek"), - new CodeRangeEntry("mtei", "CR_Meetei_Mayek"), - new CodeRangeEntry("imperialaramaic", "CR_Imperial_Aramaic"), - new CodeRangeEntry("armi", "CR_Imperial_Aramaic"), - new CodeRangeEntry("inoldsoutharabian", "CR_Old_South_Arabian"), - new CodeRangeEntry("inscriptionalparthian", "CR_Inscriptional_Parthian"), - new CodeRangeEntry("prti", "CR_Inscriptional_Parthian"), - new CodeRangeEntry("inscriptionalpahlavi", "CR_Inscriptional_Pahlavi"), - new CodeRangeEntry("phli", "CR_Inscriptional_Pahlavi"), - new CodeRangeEntry("oldturkic", "CR_Old_Turkic"), - new CodeRangeEntry("orkh", "CR_Old_Turkic"), - new CodeRangeEntry("kaithi", "CR_Kaithi"), - new CodeRangeEntry("kthi", "CR_Kaithi"), - new CodeRangeEntry("batak", "CR_Batak"), - new CodeRangeEntry("batk", "CR_Batak"), - new CodeRangeEntry("brahmi", "CR_Brahmi"), - new CodeRangeEntry("brah", "CR_Brahmi"), - new CodeRangeEntry("mandaic", "CR_Mandaic"), - new CodeRangeEntry("mand", "CR_Mandaic"), - new CodeRangeEntry("chakma", "CR_Chakma"), - new CodeRangeEntry("cakm", "CR_Chakma"), - new CodeRangeEntry("meroiticcursive", "CR_Meroitic_Cursive"), - new CodeRangeEntry("merc", "CR_Meroitic_Cursive"), - new CodeRangeEntry("inmeroitichieroglyphs", "CR_Meroitic_Hieroglyphs"), - new CodeRangeEntry("miao", "CR_Miao"), - new CodeRangeEntry("plrd", "CR_Miao"), - new CodeRangeEntry("sharada", "CR_Sharada"), - new CodeRangeEntry("shrd", "CR_Sharada"), - new CodeRangeEntry("sorasompeng", "CR_Sora_Sompeng"), - new CodeRangeEntry("sora", "CR_Sora_Sompeng"), - new CodeRangeEntry("takri", "CR_Takri"), - new CodeRangeEntry("takr", "CR_Takri"), - new CodeRangeEntry("caucasianalbanian", "CR_Caucasian_Albanian"), - new CodeRangeEntry("aghb", "CR_Caucasian_Albanian"), - new CodeRangeEntry("bassavah", "CR_Bassa_Vah"), - new CodeRangeEntry("bass", "CR_Bassa_Vah"), - new CodeRangeEntry("duployan", "CR_Duployan"), - new CodeRangeEntry("dupl", "CR_Duployan"), - new CodeRangeEntry("elbasan", "CR_Elbasan"), - new CodeRangeEntry("elba", "CR_Elbasan"), - new CodeRangeEntry("grantha", "CR_Grantha"), - new CodeRangeEntry("gran", "CR_Grantha"), - new CodeRangeEntry("pahawhhmong", "CR_Pahawh_Hmong"), - new CodeRangeEntry("hmng", "CR_Pahawh_Hmong"), - new CodeRangeEntry("khojki", "CR_Khojki"), - new CodeRangeEntry("khoj", "CR_Khojki"), - new CodeRangeEntry("lineara", "CR_Linear_A"), - new CodeRangeEntry("lina", "CR_Linear_A"), - new CodeRangeEntry("mahajani", "CR_Mahajani"), - new CodeRangeEntry("mahj", "CR_Mahajani"), - new CodeRangeEntry("manichaean", "CR_Manichaean"), - new CodeRangeEntry("mani", "CR_Manichaean"), - new CodeRangeEntry("mendekikakui", "CR_Mende_Kikakui"), - new CodeRangeEntry("mend", "CR_Mende_Kikakui"), - new CodeRangeEntry("modi", "CR_Modi"), - new CodeRangeEntry("mro", "CR_Mro"), - new CodeRangeEntry("mroo", "CR_Mro"), - new CodeRangeEntry("inoldnortharabian", "CR_Old_North_Arabian"), - new CodeRangeEntry("nabataean", "CR_Nabataean"), - new CodeRangeEntry("nbat", "CR_Nabataean"), - new CodeRangeEntry("inpalmyrene", "CR_Palmyrene"), - new CodeRangeEntry("paucinhau", "CR_Pau_Cin_Hau"), - new CodeRangeEntry("pauc", "CR_Pau_Cin_Hau"), - new CodeRangeEntry("oldpermic", "CR_Old_Permic"), - new CodeRangeEntry("perm", "CR_Old_Permic"), - new CodeRangeEntry("psalterpahlavi", "CR_Psalter_Pahlavi"), - new CodeRangeEntry("phlp", "CR_Psalter_Pahlavi"), - new CodeRangeEntry("siddham", "CR_Siddham"), - new CodeRangeEntry("sidd", "CR_Siddham"), - new CodeRangeEntry("khudawadi", "CR_Khudawadi"), - new CodeRangeEntry("sind", "CR_Khudawadi"), - new CodeRangeEntry("tirhuta", "CR_Tirhuta"), - new CodeRangeEntry("tirh", "CR_Tirhuta"), - new CodeRangeEntry("warangciti", "CR_Warang_Citi"), - new CodeRangeEntry("wara", "CR_Warang_Citi"), - new CodeRangeEntry("ahom", "CR_Ahom"), - new CodeRangeEntry("anatolianhieroglyphs", "CR_Anatolian_Hieroglyphs"), - new CodeRangeEntry("hluw", "CR_Anatolian_Hieroglyphs"), - new CodeRangeEntry("hatran", "CR_Hatran"), - new CodeRangeEntry("hatr", "CR_Hatran"), - new CodeRangeEntry("multani", "CR_Multani"), - new CodeRangeEntry("mult", "CR_Multani"), - new CodeRangeEntry("oldhungarian", "CR_Old_Hungarian"), - new CodeRangeEntry("hung", "CR_Old_Hungarian"), - new CodeRangeEntry("signwriting", "CR_SignWriting"), - new CodeRangeEntry("sgnw", "CR_SignWriting"), - new CodeRangeEntry("adlam", "CR_Adlam"), - new CodeRangeEntry("adlm", "CR_Adlam"), - new CodeRangeEntry("bhaiksuki", "CR_Bhaiksuki"), - new CodeRangeEntry("bhks", "CR_Bhaiksuki"), - new CodeRangeEntry("marchen", "CR_Marchen"), - new CodeRangeEntry("marc", "CR_Marchen"), - new CodeRangeEntry("newa", "CR_Newa"), - new CodeRangeEntry("osage", "CR_Osage"), - new CodeRangeEntry("osge", "CR_Osage"), - new CodeRangeEntry("tangut", "CR_Tangut"), - new CodeRangeEntry("tang", "CR_Tangut"), - new CodeRangeEntry("masaramgondi", "CR_Masaram_Gondi"), - new CodeRangeEntry("gonm", "CR_Masaram_Gondi"), - new CodeRangeEntry("nushu", "CR_Nushu"), - new CodeRangeEntry("nshu", "CR_Nushu"), - new CodeRangeEntry("soyombo", "CR_Soyombo"), - new CodeRangeEntry("soyo", "CR_Soyombo"), - new CodeRangeEntry("zanabazarsquare", "CR_Zanabazar_Square"), - new CodeRangeEntry("zanb", "CR_Zanabazar_Square"), - new CodeRangeEntry("dogra", "CR_Dogra"), - new CodeRangeEntry("dogr", "CR_Dogra"), - new CodeRangeEntry("gunjalagondi", "CR_Gunjala_Gondi"), - new CodeRangeEntry("gong", "CR_Gunjala_Gondi"), - new CodeRangeEntry("makasar", "CR_Makasar"), - new CodeRangeEntry("maka", "CR_Makasar"), - new CodeRangeEntry("medefaidrin", "CR_Medefaidrin"), - new CodeRangeEntry("medf", "CR_Medefaidrin"), - new CodeRangeEntry("hanifirohingya", "CR_Hanifi_Rohingya"), - new CodeRangeEntry("rohg", "CR_Hanifi_Rohingya"), - new CodeRangeEntry("sogdian", "CR_Sogdian"), - new CodeRangeEntry("sogd", "CR_Sogdian"), - new CodeRangeEntry("oldsogdian", "CR_Old_Sogdian"), - new CodeRangeEntry("sogo", "CR_Old_Sogdian"), - new CodeRangeEntry("elymaic", "CR_Elymaic"), - new CodeRangeEntry("elym", "CR_Elymaic"), - new CodeRangeEntry("nandinagari", "CR_Nandinagari"), - new CodeRangeEntry("nand", "CR_Nandinagari"), - new CodeRangeEntry("nyiakengpuachuehmong", "CR_Nyiakeng_Puachue_Hmong"), - new CodeRangeEntry("hmnp", "CR_Nyiakeng_Puachue_Hmong"), - new CodeRangeEntry("wancho", "CR_Wancho"), - new CodeRangeEntry("wcho", "CR_Wancho"), - new CodeRangeEntry("whitespace", "CR_Space"), - new CodeRangeEntry("wspace", "CR_Space"), - new CodeRangeEntry("bidicontrol", "CR_Bidi_Control"), - new CodeRangeEntry("bidic", "CR_Bidi_Control"), - new CodeRangeEntry("joincontrol", "CR_Join_Control"), - new CodeRangeEntry("joinc", "CR_Join_Control"), - new CodeRangeEntry("dash", "CR_Dash"), - new CodeRangeEntry("hyphen", "CR_Hyphen"), - new CodeRangeEntry("quotationmark", "CR_Quotation_Mark"), - new CodeRangeEntry("qmark", "CR_Quotation_Mark"), - new CodeRangeEntry("terminalpunctuation", "CR_Terminal_Punctuation"), - new CodeRangeEntry("term", "CR_Terminal_Punctuation"), - new CodeRangeEntry("othermath", "CR_Other_Math"), - new CodeRangeEntry("omath", "CR_Other_Math"), - new CodeRangeEntry("hexdigit", "CR_Hex_Digit"), - new CodeRangeEntry("hex", "CR_Hex_Digit"), - new CodeRangeEntry("asciihexdigit", "CR_XDigit"), - new CodeRangeEntry("ahex", "CR_XDigit"), - new CodeRangeEntry("otheralphabetic", "CR_Other_Alphabetic"), - new CodeRangeEntry("oalpha", "CR_Other_Alphabetic"), - new CodeRangeEntry("ideographic", "CR_Ideographic"), - new CodeRangeEntry("ideo", "CR_Ideographic"), - new CodeRangeEntry("diacritic", "CR_Diacritic"), - new CodeRangeEntry("dia", "CR_Diacritic"), - new CodeRangeEntry("extender", "CR_Extender"), - new CodeRangeEntry("ext", "CR_Extender"), - new CodeRangeEntry("otherlowercase", "CR_Other_Lowercase"), - new CodeRangeEntry("olower", "CR_Other_Lowercase"), - new CodeRangeEntry("otheruppercase", "CR_Other_Uppercase"), - new CodeRangeEntry("oupper", "CR_Other_Uppercase"), - new CodeRangeEntry("noncharactercodepoint", "CR_Noncharacter_Code_Point"), - new CodeRangeEntry("nchar", "CR_Noncharacter_Code_Point"), - new CodeRangeEntry("othergraphemeextend", "CR_Other_Grapheme_Extend"), - new CodeRangeEntry("ogrext", "CR_Other_Grapheme_Extend"), - new CodeRangeEntry("idsbinaryoperator", "CR_IDS_Binary_Operator"), - new CodeRangeEntry("idsb", "CR_IDS_Binary_Operator"), - new CodeRangeEntry("idstrinaryoperator", "CR_IDS_Trinary_Operator"), - new CodeRangeEntry("idst", "CR_IDS_Trinary_Operator"), - new CodeRangeEntry("radical", "CR_Radical"), - new CodeRangeEntry("unifiedideograph", "CR_Unified_Ideograph"), - new CodeRangeEntry("uideo", "CR_Unified_Ideograph"), - new CodeRangeEntry("otherdefaultignorablecodepoint", "CR_Other_Default_Ignorable_Code_Point"), - new CodeRangeEntry("odi", "CR_Other_Default_Ignorable_Code_Point"), - new CodeRangeEntry("deprecated", "CR_Deprecated"), - new CodeRangeEntry("dep", "CR_Deprecated"), - new CodeRangeEntry("softdotted", "CR_Soft_Dotted"), - new CodeRangeEntry("sd", "CR_Soft_Dotted"), - new CodeRangeEntry("logicalorderexception", "CR_Logical_Order_Exception"), - new CodeRangeEntry("loe", "CR_Logical_Order_Exception"), - new CodeRangeEntry("otheridstart", "CR_Other_ID_Start"), - new CodeRangeEntry("oids", "CR_Other_ID_Start"), - new CodeRangeEntry("otheridcontinue", "CR_Other_ID_Continue"), - new CodeRangeEntry("oidc", "CR_Other_ID_Continue"), - new CodeRangeEntry("sentenceterminal", "CR_Sentence_Terminal"), - new CodeRangeEntry("sterm", "CR_Sentence_Terminal"), - new CodeRangeEntry("variationselector", "CR_Variation_Selector"), - new CodeRangeEntry("vs", "CR_Variation_Selector"), - new CodeRangeEntry("patternwhitespace", "CR_Pattern_White_Space"), - new CodeRangeEntry("patws", "CR_Pattern_White_Space"), - new CodeRangeEntry("patternsyntax", "CR_Pattern_Syntax"), - new CodeRangeEntry("patsyn", "CR_Pattern_Syntax"), - new CodeRangeEntry("prependedconcatenationmark", "CR_Prepended_Concatenation_Mark"), - new CodeRangeEntry("pcm", "CR_Prepended_Concatenation_Mark"), - new CodeRangeEntry("graphemeclusterbreak=regionalindicator", "CR_Regional_Indicator"), - new CodeRangeEntry("emoji", "CR_Emoji"), - new CodeRangeEntry("emojipresentation", "CR_Emoji_Presentation"), - new CodeRangeEntry("emojimodifier", "CR_Emoji_Modifier"), - new CodeRangeEntry("emojimodifierbase", "CR_Emoji_Modifier_Base"), - new CodeRangeEntry("emojicomponent", "CR_Emoji_Component"), - new CodeRangeEntry("extendedpictographic", "CR_Extended_Pictographic"), - new CodeRangeEntry("unknown", "CR_Unknown"), - new CodeRangeEntry("zzzz", "CR_Unknown"), - new CodeRangeEntry("age=1.1", "CR_Age_1_1"), - new CodeRangeEntry("age=2.0", "CR_Age_2_0"), - new CodeRangeEntry("age=2.1", "CR_Age_2_1"), - new CodeRangeEntry("age=3.0", "CR_Age_3_0"), - new CodeRangeEntry("age=3.1", "CR_Age_3_1"), - new CodeRangeEntry("age=3.2", "CR_Age_3_2"), - new CodeRangeEntry("age=4.0", "CR_Age_4_0"), - new CodeRangeEntry("age=4.1", "CR_Age_4_1"), - new CodeRangeEntry("age=5.0", "CR_Age_5_0"), - new CodeRangeEntry("age=5.1", "CR_Age_5_1"), - new CodeRangeEntry("age=5.2", "CR_Age_5_2"), - new CodeRangeEntry("age=6.0", "CR_Age_6_0"), - new CodeRangeEntry("age=6.1", "CR_Age_6_1"), - new CodeRangeEntry("age=6.2", "CR_Age_6_2"), - new CodeRangeEntry("age=6.3", "CR_Age_6_3"), - new CodeRangeEntry("age=7.0", "CR_Age_7_0"), - new CodeRangeEntry("age=8.0", "CR_Age_8_0"), - new CodeRangeEntry("age=9.0", "CR_Age_9_0"), - new CodeRangeEntry("age=10.0", "CR_Age_10_0"), - new CodeRangeEntry("age=11.0", "CR_Age_11_0"), - new CodeRangeEntry("age=12.0", "CR_Age_12_0"), - new CodeRangeEntry("age=12.1", "CR_Age_12_1"), - new CodeRangeEntry("graphemeclusterbreak=prepend", "CR_Grapheme_Cluster_Break_Prepend"), - new CodeRangeEntry("graphemeclusterbreak=cr", "CR_Grapheme_Cluster_Break_CR"), - new CodeRangeEntry("graphemeclusterbreak=lf", "CR_NEWLINE"), - new CodeRangeEntry("graphemeclusterbreak=control", "CR_Grapheme_Cluster_Break_Control"), - new CodeRangeEntry("graphemeclusterbreak=extend", "CR_Grapheme_Cluster_Break_Extend"), - new CodeRangeEntry("regionalindicator", "CR_Regional_Indicator"), - new CodeRangeEntry("ri", "CR_Regional_Indicator"), - new CodeRangeEntry("graphemeclusterbreak=spacingmark", "CR_Grapheme_Cluster_Break_SpacingMark"), - new CodeRangeEntry("graphemeclusterbreak=l", "CR_Grapheme_Cluster_Break_L"), - new CodeRangeEntry("graphemeclusterbreak=v", "CR_Grapheme_Cluster_Break_V"), - new CodeRangeEntry("graphemeclusterbreak=t", "CR_Grapheme_Cluster_Break_T"), - new CodeRangeEntry("graphemeclusterbreak=lv", "CR_Grapheme_Cluster_Break_LV"), - new CodeRangeEntry("graphemeclusterbreak=lvt", "CR_Grapheme_Cluster_Break_LVT"), - new CodeRangeEntry("graphemeclusterbreak=zwj", "CR_Grapheme_Cluster_Break_ZWJ"), - new CodeRangeEntry("inbasiclatin", "CR_ASCII"), - new CodeRangeEntry("inlatin1supplement", "CR_In_Latin_1_Supplement"), - new CodeRangeEntry("inlatinextendeda", "CR_In_Latin_Extended_A"), - new CodeRangeEntry("inlatinextendedb", "CR_In_Latin_Extended_B"), - new CodeRangeEntry("inipaextensions", "CR_In_IPA_Extensions"), - new CodeRangeEntry("inspacingmodifierletters", "CR_In_Spacing_Modifier_Letters"), - new CodeRangeEntry("incombiningdiacriticalmarks", "CR_In_Combining_Diacritical_Marks"), - new CodeRangeEntry("ingreekandcoptic", "CR_In_Greek_and_Coptic"), - new CodeRangeEntry("incyrillic", "CR_In_Cyrillic"), - new CodeRangeEntry("incyrillicsupplement", "CR_In_Cyrillic_Supplement"), - new CodeRangeEntry("inarmenian", "CR_In_Armenian"), - new CodeRangeEntry("inhebrew", "CR_In_Hebrew"), - new CodeRangeEntry("inarabic", "CR_In_Arabic"), - new CodeRangeEntry("insyriac", "CR_In_Syriac"), - new CodeRangeEntry("inarabicsupplement", "CR_In_Arabic_Supplement"), - new CodeRangeEntry("inthaana", "CR_In_Thaana"), - new CodeRangeEntry("innko", "CR_In_NKo"), - new CodeRangeEntry("insamaritan", "CR_In_Samaritan"), - new CodeRangeEntry("inmandaic", "CR_In_Mandaic"), - new CodeRangeEntry("insyriacsupplement", "CR_In_Syriac_Supplement"), - new CodeRangeEntry("inarabicextendeda", "CR_In_Arabic_Extended_A"), - new CodeRangeEntry("indevanagari", "CR_In_Devanagari"), - new CodeRangeEntry("inbengali", "CR_In_Bengali"), - new CodeRangeEntry("ingurmukhi", "CR_In_Gurmukhi"), - new CodeRangeEntry("ingujarati", "CR_In_Gujarati"), - new CodeRangeEntry("inoriya", "CR_In_Oriya"), - new CodeRangeEntry("intamil", "CR_In_Tamil"), - new CodeRangeEntry("intelugu", "CR_In_Telugu"), - new CodeRangeEntry("inkannada", "CR_In_Kannada"), - new CodeRangeEntry("inmalayalam", "CR_In_Malayalam"), - new CodeRangeEntry("insinhala", "CR_In_Sinhala"), - new CodeRangeEntry("inthai", "CR_In_Thai"), - new CodeRangeEntry("inlao", "CR_In_Lao"), - new CodeRangeEntry("intibetan", "CR_In_Tibetan"), - new CodeRangeEntry("inmyanmar", "CR_In_Myanmar"), - new CodeRangeEntry("ingeorgian", "CR_In_Georgian"), - new CodeRangeEntry("inhanguljamo", "CR_In_Hangul_Jamo"), - new CodeRangeEntry("inethiopic", "CR_In_Ethiopic"), - new CodeRangeEntry("inethiopicsupplement", "CR_In_Ethiopic_Supplement"), - new CodeRangeEntry("incherokee", "CR_In_Cherokee"), - new CodeRangeEntry("inunifiedcanadianaboriginalsyllabics", "CR_In_Unified_Canadian_Aboriginal_Syllabics"), - new CodeRangeEntry("inogham", "CR_In_Ogham"), - new CodeRangeEntry("inrunic", "CR_In_Runic"), - new CodeRangeEntry("intagalog", "CR_In_Tagalog"), - new CodeRangeEntry("inhanunoo", "CR_In_Hanunoo"), - new CodeRangeEntry("inbuhid", "CR_In_Buhid"), - new CodeRangeEntry("intagbanwa", "CR_In_Tagbanwa"), - new CodeRangeEntry("inkhmer", "CR_In_Khmer"), - new CodeRangeEntry("inmongolian", "CR_In_Mongolian"), - new CodeRangeEntry("inunifiedcanadianaboriginalsyllabicsextended", "CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended"), - new CodeRangeEntry("inlimbu", "CR_In_Limbu"), - new CodeRangeEntry("intaile", "CR_In_Tai_Le"), - new CodeRangeEntry("innewtailue", "CR_In_New_Tai_Lue"), - new CodeRangeEntry("inkhmersymbols", "CR_In_Khmer_Symbols"), - new CodeRangeEntry("inbuginese", "CR_In_Buginese"), - new CodeRangeEntry("intaitham", "CR_In_Tai_Tham"), - new CodeRangeEntry("incombiningdiacriticalmarksextended", "CR_In_Combining_Diacritical_Marks_Extended"), - new CodeRangeEntry("inbalinese", "CR_In_Balinese"), - new CodeRangeEntry("insundanese", "CR_In_Sundanese"), - new CodeRangeEntry("inbatak", "CR_In_Batak"), - new CodeRangeEntry("inlepcha", "CR_In_Lepcha"), - new CodeRangeEntry("olchiki", "CR_Ol_Chiki"), - new CodeRangeEntry("olck", "CR_Ol_Chiki"), - new CodeRangeEntry("incyrillicextendedc", "CR_In_Cyrillic_Extended_C"), - new CodeRangeEntry("ingeorgianextended", "CR_In_Georgian_Extended"), - new CodeRangeEntry("insundanesesupplement", "CR_In_Sundanese_Supplement"), - new CodeRangeEntry("invedicextensions", "CR_In_Vedic_Extensions"), - new CodeRangeEntry("inphoneticextensions", "CR_In_Phonetic_Extensions"), - new CodeRangeEntry("inphoneticextensionssupplement", "CR_In_Phonetic_Extensions_Supplement"), - new CodeRangeEntry("incombiningdiacriticalmarkssupplement", "CR_In_Combining_Diacritical_Marks_Supplement"), - new CodeRangeEntry("inlatinextendedadditional", "CR_In_Latin_Extended_Additional"), - new CodeRangeEntry("ingreekextended", "CR_In_Greek_Extended"), - new CodeRangeEntry("ingeneralpunctuation", "CR_In_General_Punctuation"), - new CodeRangeEntry("insuperscriptsandsubscripts", "CR_In_Superscripts_and_Subscripts"), - new CodeRangeEntry("incurrencysymbols", "CR_In_Currency_Symbols"), - new CodeRangeEntry("incombiningdiacriticalmarksforsymbols", "CR_In_Combining_Diacritical_Marks_for_Symbols"), - new CodeRangeEntry("inletterlikesymbols", "CR_In_Letterlike_Symbols"), - new CodeRangeEntry("innumberforms", "CR_In_Number_Forms"), - new CodeRangeEntry("inarrows", "CR_In_Arrows"), - new CodeRangeEntry("inmathematicaloperators", "CR_In_Mathematical_Operators"), - new CodeRangeEntry("inmiscellaneoustechnical", "CR_In_Miscellaneous_Technical"), - new CodeRangeEntry("incontrolpictures", "CR_In_Control_Pictures"), - new CodeRangeEntry("inopticalcharacterrecognition", "CR_In_Optical_Character_Recognition"), - new CodeRangeEntry("inenclosedalphanumerics", "CR_In_Enclosed_Alphanumerics"), - new CodeRangeEntry("inboxdrawing", "CR_In_Box_Drawing"), - new CodeRangeEntry("inblockelements", "CR_In_Block_Elements"), - new CodeRangeEntry("ingeometricshapes", "CR_In_Geometric_Shapes"), - new CodeRangeEntry("inmiscellaneoussymbols", "CR_In_Miscellaneous_Symbols"), - new CodeRangeEntry("indingbats", "CR_In_Dingbats"), - new CodeRangeEntry("inmiscellaneousmathematicalsymbolsa", "CR_In_Miscellaneous_Mathematical_Symbols_A"), - new CodeRangeEntry("insupplementalarrowsa", "CR_In_Supplemental_Arrows_A"), - new CodeRangeEntry("braille", "CR_Braille"), - new CodeRangeEntry("brai", "CR_Braille"), - new CodeRangeEntry("insupplementalarrowsb", "CR_In_Supplemental_Arrows_B"), - new CodeRangeEntry("inmiscellaneousmathematicalsymbolsb", "CR_In_Miscellaneous_Mathematical_Symbols_B"), - new CodeRangeEntry("insupplementalmathematicaloperators", "CR_In_Supplemental_Mathematical_Operators"), - new CodeRangeEntry("inmiscellaneoussymbolsandarrows", "CR_In_Miscellaneous_Symbols_and_Arrows"), - new CodeRangeEntry("inglagolitic", "CR_In_Glagolitic"), - new CodeRangeEntry("inlatinextendedc", "CR_In_Latin_Extended_C"), - new CodeRangeEntry("incoptic", "CR_In_Coptic"), - new CodeRangeEntry("ingeorgiansupplement", "CR_In_Georgian_Supplement"), - new CodeRangeEntry("intifinagh", "CR_In_Tifinagh"), - new CodeRangeEntry("inethiopicextended", "CR_In_Ethiopic_Extended"), - new CodeRangeEntry("incyrillicextendeda", "CR_In_Cyrillic_Extended_A"), - new CodeRangeEntry("insupplementalpunctuation", "CR_In_Supplemental_Punctuation"), - new CodeRangeEntry("incjkradicalssupplement", "CR_In_CJK_Radicals_Supplement"), - new CodeRangeEntry("inkangxiradicals", "CR_In_Kangxi_Radicals"), - new CodeRangeEntry("inideographicdescriptioncharacters", "CR_In_Ideographic_Description_Characters"), - new CodeRangeEntry("incjksymbolsandpunctuation", "CR_In_CJK_Symbols_and_Punctuation"), - new CodeRangeEntry("inhiragana", "CR_In_Hiragana"), - new CodeRangeEntry("inkatakana", "CR_In_Katakana"), - new CodeRangeEntry("inbopomofo", "CR_In_Bopomofo"), - new CodeRangeEntry("inhangulcompatibilityjamo", "CR_In_Hangul_Compatibility_Jamo"), - new CodeRangeEntry("inkanbun", "CR_In_Kanbun"), - new CodeRangeEntry("inbopomofoextended", "CR_In_Bopomofo_Extended"), - new CodeRangeEntry("incjkstrokes", "CR_In_CJK_Strokes"), - new CodeRangeEntry("inkatakanaphoneticextensions", "CR_In_Katakana_Phonetic_Extensions"), - new CodeRangeEntry("inenclosedcjklettersandmonths", "CR_In_Enclosed_CJK_Letters_and_Months"), - new CodeRangeEntry("incjkcompatibility", "CR_In_CJK_Compatibility"), - new CodeRangeEntry("incjkunifiedideographsextensiona", "CR_In_CJK_Unified_Ideographs_Extension_A"), - new CodeRangeEntry("inyijinghexagramsymbols", "CR_In_Yijing_Hexagram_Symbols"), - new CodeRangeEntry("incjkunifiedideographs", "CR_In_CJK_Unified_Ideographs"), - new CodeRangeEntry("inyisyllables", "CR_In_Yi_Syllables"), - new CodeRangeEntry("inyiradicals", "CR_In_Yi_Radicals"), - new CodeRangeEntry("lisu", "CR_Lisu"), - new CodeRangeEntry("invai", "CR_In_Vai"), - new CodeRangeEntry("incyrillicextendedb", "CR_In_Cyrillic_Extended_B"), - new CodeRangeEntry("inbamum", "CR_In_Bamum"), - new CodeRangeEntry("inmodifiertoneletters", "CR_In_Modifier_Tone_Letters"), - new CodeRangeEntry("inlatinextendedd", "CR_In_Latin_Extended_D"), - new CodeRangeEntry("insylotinagri", "CR_In_Syloti_Nagri"), - new CodeRangeEntry("incommonindicnumberforms", "CR_In_Common_Indic_Number_Forms"), - new CodeRangeEntry("inphagspa", "CR_In_Phags_pa"), - new CodeRangeEntry("insaurashtra", "CR_In_Saurashtra"), - new CodeRangeEntry("indevanagariextended", "CR_In_Devanagari_Extended"), - new CodeRangeEntry("inkayahli", "CR_In_Kayah_Li"), - new CodeRangeEntry("inrejang", "CR_In_Rejang"), - new CodeRangeEntry("inhanguljamoextendeda", "CR_In_Hangul_Jamo_Extended_A"), - new CodeRangeEntry("injavanese", "CR_In_Javanese"), - new CodeRangeEntry("inmyanmarextendedb", "CR_In_Myanmar_Extended_B"), - new CodeRangeEntry("incham", "CR_In_Cham"), - new CodeRangeEntry("inmyanmarextendeda", "CR_In_Myanmar_Extended_A"), - new CodeRangeEntry("intaiviet", "CR_In_Tai_Viet"), - new CodeRangeEntry("inmeeteimayekextensions", "CR_In_Meetei_Mayek_Extensions"), - new CodeRangeEntry("inethiopicextendeda", "CR_In_Ethiopic_Extended_A"), - new CodeRangeEntry("inlatinextendede", "CR_In_Latin_Extended_E"), - new CodeRangeEntry("incherokeesupplement", "CR_In_Cherokee_Supplement"), - new CodeRangeEntry("inmeeteimayek", "CR_In_Meetei_Mayek"), - new CodeRangeEntry("inhangulsyllables", "CR_In_Hangul_Syllables"), - new CodeRangeEntry("inhanguljamoextendedb", "CR_In_Hangul_Jamo_Extended_B"), - new CodeRangeEntry("inhighsurrogates", "CR_In_High_Surrogates"), - new CodeRangeEntry("inhighprivateusesurrogates", "CR_In_High_Private_Use_Surrogates"), - new CodeRangeEntry("inlowsurrogates", "CR_In_Low_Surrogates"), - new CodeRangeEntry("inprivateusearea", "CR_In_Private_Use_Area"), - new CodeRangeEntry("incjkcompatibilityideographs", "CR_In_CJK_Compatibility_Ideographs"), - new CodeRangeEntry("inalphabeticpresentationforms", "CR_In_Alphabetic_Presentation_Forms"), - new CodeRangeEntry("inarabicpresentationformsa", "CR_In_Arabic_Presentation_Forms_A"), - new CodeRangeEntry("invariationselectors", "CR_In_Variation_Selectors"), - new CodeRangeEntry("inverticalforms", "CR_In_Vertical_Forms"), - new CodeRangeEntry("incombininghalfmarks", "CR_In_Combining_Half_Marks"), - new CodeRangeEntry("incjkcompatibilityforms", "CR_In_CJK_Compatibility_Forms"), - new CodeRangeEntry("insmallformvariants", "CR_In_Small_Form_Variants"), - new CodeRangeEntry("inarabicpresentationformsb", "CR_In_Arabic_Presentation_Forms_B"), - new CodeRangeEntry("inhalfwidthandfullwidthforms", "CR_In_Halfwidth_and_Fullwidth_Forms"), - new CodeRangeEntry("inspecials", "CR_In_Specials"), - new CodeRangeEntry("inlinearbsyllabary", "CR_In_Linear_B_Syllabary"), - new CodeRangeEntry("inlinearbideograms", "CR_In_Linear_B_Ideograms"), - new CodeRangeEntry("inaegeannumbers", "CR_In_Aegean_Numbers"), - new CodeRangeEntry("inancientgreeknumbers", "CR_In_Ancient_Greek_Numbers"), - new CodeRangeEntry("inancientsymbols", "CR_In_Ancient_Symbols"), - new CodeRangeEntry("inphaistosdisc", "CR_In_Phaistos_Disc"), - new CodeRangeEntry("inlycian", "CR_In_Lycian"), - new CodeRangeEntry("incarian", "CR_In_Carian"), - new CodeRangeEntry("incopticepactnumbers", "CR_In_Coptic_Epact_Numbers"), - new CodeRangeEntry("inolditalic", "CR_In_Old_Italic"), - new CodeRangeEntry("ingothic", "CR_In_Gothic"), - new CodeRangeEntry("inoldpermic", "CR_In_Old_Permic"), - new CodeRangeEntry("inugaritic", "CR_In_Ugaritic"), - new CodeRangeEntry("inoldpersian", "CR_In_Old_Persian"), - new CodeRangeEntry("deseret", "CR_Deseret"), - new CodeRangeEntry("dsrt", "CR_Deseret"), - new CodeRangeEntry("shavian", "CR_Shavian"), - new CodeRangeEntry("shaw", "CR_Shavian"), - new CodeRangeEntry("inosmanya", "CR_In_Osmanya"), - new CodeRangeEntry("inosage", "CR_In_Osage"), - new CodeRangeEntry("inelbasan", "CR_In_Elbasan"), - new CodeRangeEntry("incaucasianalbanian", "CR_In_Caucasian_Albanian"), - new CodeRangeEntry("inlineara", "CR_In_Linear_A"), - new CodeRangeEntry("incypriotsyllabary", "CR_In_Cypriot_Syllabary"), - new CodeRangeEntry("inimperialaramaic", "CR_In_Imperial_Aramaic"), - new CodeRangeEntry("palmyrene", "CR_Palmyrene"), - new CodeRangeEntry("palm", "CR_Palmyrene"), - new CodeRangeEntry("innabataean", "CR_In_Nabataean"), - new CodeRangeEntry("inhatran", "CR_In_Hatran"), - new CodeRangeEntry("inphoenician", "CR_In_Phoenician"), - new CodeRangeEntry("inlydian", "CR_In_Lydian"), - new CodeRangeEntry("meroitichieroglyphs", "CR_Meroitic_Hieroglyphs"), - new CodeRangeEntry("mero", "CR_Meroitic_Hieroglyphs"), - new CodeRangeEntry("inmeroiticcursive", "CR_In_Meroitic_Cursive"), - new CodeRangeEntry("inkharoshthi", "CR_In_Kharoshthi"), - new CodeRangeEntry("oldsoutharabian", "CR_Old_South_Arabian"), - new CodeRangeEntry("sarb", "CR_Old_South_Arabian"), - new CodeRangeEntry("oldnortharabian", "CR_Old_North_Arabian"), - new CodeRangeEntry("narb", "CR_Old_North_Arabian"), - new CodeRangeEntry("inmanichaean", "CR_In_Manichaean"), - new CodeRangeEntry("inavestan", "CR_In_Avestan"), - new CodeRangeEntry("ininscriptionalparthian", "CR_In_Inscriptional_Parthian"), - new CodeRangeEntry("ininscriptionalpahlavi", "CR_In_Inscriptional_Pahlavi"), - new CodeRangeEntry("inpsalterpahlavi", "CR_In_Psalter_Pahlavi"), - new CodeRangeEntry("inoldturkic", "CR_In_Old_Turkic"), - new CodeRangeEntry("inoldhungarian", "CR_In_Old_Hungarian"), - new CodeRangeEntry("inhanifirohingya", "CR_In_Hanifi_Rohingya"), - new CodeRangeEntry("inruminumeralsymbols", "CR_In_Rumi_Numeral_Symbols"), - new CodeRangeEntry("inoldsogdian", "CR_In_Old_Sogdian"), - new CodeRangeEntry("insogdian", "CR_In_Sogdian"), - new CodeRangeEntry("inelymaic", "CR_In_Elymaic"), - new CodeRangeEntry("inbrahmi", "CR_In_Brahmi"), - new CodeRangeEntry("inkaithi", "CR_In_Kaithi"), - new CodeRangeEntry("insorasompeng", "CR_In_Sora_Sompeng"), - new CodeRangeEntry("inchakma", "CR_In_Chakma"), - new CodeRangeEntry("inmahajani", "CR_In_Mahajani"), - new CodeRangeEntry("insharada", "CR_In_Sharada"), - new CodeRangeEntry("insinhalaarchaicnumbers", "CR_In_Sinhala_Archaic_Numbers"), - new CodeRangeEntry("inkhojki", "CR_In_Khojki"), - new CodeRangeEntry("inmultani", "CR_In_Multani"), - new CodeRangeEntry("inkhudawadi", "CR_In_Khudawadi"), - new CodeRangeEntry("ingrantha", "CR_In_Grantha"), - new CodeRangeEntry("innewa", "CR_In_Newa"), - new CodeRangeEntry("intirhuta", "CR_In_Tirhuta"), - new CodeRangeEntry("insiddham", "CR_In_Siddham"), - new CodeRangeEntry("inmodi", "CR_In_Modi"), - new CodeRangeEntry("inmongoliansupplement", "CR_In_Mongolian_Supplement"), - new CodeRangeEntry("intakri", "CR_In_Takri"), - new CodeRangeEntry("inahom", "CR_In_Ahom"), - new CodeRangeEntry("indogra", "CR_In_Dogra"), - new CodeRangeEntry("inwarangciti", "CR_In_Warang_Citi"), - new CodeRangeEntry("innandinagari", "CR_In_Nandinagari"), - new CodeRangeEntry("inzanabazarsquare", "CR_In_Zanabazar_Square"), - new CodeRangeEntry("insoyombo", "CR_In_Soyombo"), - new CodeRangeEntry("inpaucinhau", "CR_In_Pau_Cin_Hau"), - new CodeRangeEntry("inbhaiksuki", "CR_In_Bhaiksuki"), - new CodeRangeEntry("inmarchen", "CR_In_Marchen"), - new CodeRangeEntry("inmasaramgondi", "CR_In_Masaram_Gondi"), - new CodeRangeEntry("ingunjalagondi", "CR_In_Gunjala_Gondi"), - new CodeRangeEntry("inmakasar", "CR_In_Makasar"), - new CodeRangeEntry("intamilsupplement", "CR_In_Tamil_Supplement"), - new CodeRangeEntry("incuneiform", "CR_In_Cuneiform"), - new CodeRangeEntry("incuneiformnumbersandpunctuation", "CR_In_Cuneiform_Numbers_and_Punctuation"), - new CodeRangeEntry("inearlydynasticcuneiform", "CR_In_Early_Dynastic_Cuneiform"), - new CodeRangeEntry("inegyptianhieroglyphs", "CR_In_Egyptian_Hieroglyphs"), - new CodeRangeEntry("inegyptianhieroglyphformatcontrols", "CR_In_Egyptian_Hieroglyph_Format_Controls"), - new CodeRangeEntry("inanatolianhieroglyphs", "CR_In_Anatolian_Hieroglyphs"), - new CodeRangeEntry("inbamumsupplement", "CR_In_Bamum_Supplement"), - new CodeRangeEntry("inmro", "CR_In_Mro"), - new CodeRangeEntry("inbassavah", "CR_In_Bassa_Vah"), - new CodeRangeEntry("inpahawhhmong", "CR_In_Pahawh_Hmong"), - new CodeRangeEntry("inmedefaidrin", "CR_In_Medefaidrin"), - new CodeRangeEntry("inmiao", "CR_In_Miao"), - new CodeRangeEntry("inideographicsymbolsandpunctuation", "CR_In_Ideographic_Symbols_and_Punctuation"), - new CodeRangeEntry("intangut", "CR_In_Tangut"), - new CodeRangeEntry("intangutcomponents", "CR_In_Tangut_Components"), - new CodeRangeEntry("inkanasupplement", "CR_In_Kana_Supplement"), - new CodeRangeEntry("inkanaextendeda", "CR_In_Kana_Extended_A"), - new CodeRangeEntry("insmallkanaextension", "CR_In_Small_Kana_Extension"), - new CodeRangeEntry("innushu", "CR_In_Nushu"), - new CodeRangeEntry("induployan", "CR_In_Duployan"), - new CodeRangeEntry("inshorthandformatcontrols", "CR_In_Shorthand_Format_Controls"), - new CodeRangeEntry("inbyzantinemusicalsymbols", "CR_In_Byzantine_Musical_Symbols"), - new CodeRangeEntry("inmusicalsymbols", "CR_In_Musical_Symbols"), - new CodeRangeEntry("inancientgreekmusicalnotation", "CR_In_Ancient_Greek_Musical_Notation"), - new CodeRangeEntry("inmayannumerals", "CR_In_Mayan_Numerals"), - new CodeRangeEntry("intaixuanjingsymbols", "CR_In_Tai_Xuan_Jing_Symbols"), - new CodeRangeEntry("incountingrodnumerals", "CR_In_Counting_Rod_Numerals"), - new CodeRangeEntry("inmathematicalalphanumericsymbols", "CR_In_Mathematical_Alphanumeric_Symbols"), - new CodeRangeEntry("insuttonsignwriting", "CR_In_Sutton_SignWriting"), - new CodeRangeEntry("inglagoliticsupplement", "CR_In_Glagolitic_Supplement"), - new CodeRangeEntry("innyiakengpuachuehmong", "CR_In_Nyiakeng_Puachue_Hmong"), - new CodeRangeEntry("inwancho", "CR_In_Wancho"), - new CodeRangeEntry("inmendekikakui", "CR_In_Mende_Kikakui"), - new CodeRangeEntry("inadlam", "CR_In_Adlam"), - new CodeRangeEntry("inindicsiyaqnumbers", "CR_In_Indic_Siyaq_Numbers"), - new CodeRangeEntry("inottomansiyaqnumbers", "CR_In_Ottoman_Siyaq_Numbers"), - new CodeRangeEntry("inarabicmathematicalalphabeticsymbols", "CR_In_Arabic_Mathematical_Alphabetic_Symbols"), - new CodeRangeEntry("inmahjongtiles", "CR_In_Mahjong_Tiles"), - new CodeRangeEntry("indominotiles", "CR_In_Domino_Tiles"), - new CodeRangeEntry("inplayingcards", "CR_In_Playing_Cards"), - new CodeRangeEntry("inenclosedalphanumericsupplement", "CR_In_Enclosed_Alphanumeric_Supplement"), - new CodeRangeEntry("inenclosedideographicsupplement", "CR_In_Enclosed_Ideographic_Supplement"), - new CodeRangeEntry("inmiscellaneoussymbolsandpictographs", "CR_In_Miscellaneous_Symbols_and_Pictographs"), - new CodeRangeEntry("inemoticons", "CR_In_Emoticons"), - new CodeRangeEntry("inornamentaldingbats", "CR_In_Ornamental_Dingbats"), - new CodeRangeEntry("intransportandmapsymbols", "CR_In_Transport_and_Map_Symbols"), - new CodeRangeEntry("inalchemicalsymbols", "CR_In_Alchemical_Symbols"), - new CodeRangeEntry("ingeometricshapesextended", "CR_In_Geometric_Shapes_Extended"), - new CodeRangeEntry("insupplementalarrowsc", "CR_In_Supplemental_Arrows_C"), - new CodeRangeEntry("insupplementalsymbolsandpictographs", "CR_In_Supplemental_Symbols_and_Pictographs"), - new CodeRangeEntry("inchesssymbols", "CR_In_Chess_Symbols"), - new CodeRangeEntry("insymbolsandpictographsextendeda", "CR_In_Symbols_and_Pictographs_Extended_A"), - new CodeRangeEntry("incjkunifiedideographsextensionb", "CR_In_CJK_Unified_Ideographs_Extension_B"), - new CodeRangeEntry("incjkunifiedideographsextensionc", "CR_In_CJK_Unified_Ideographs_Extension_C"), - new CodeRangeEntry("incjkunifiedideographsextensiond", "CR_In_CJK_Unified_Ideographs_Extension_D"), - new CodeRangeEntry("incjkunifiedideographsextensione", "CR_In_CJK_Unified_Ideographs_Extension_E"), - new CodeRangeEntry("incjkunifiedideographsextensionf", "CR_In_CJK_Unified_Ideographs_Extension_F"), - new CodeRangeEntry("incjkcompatibilityideographssupplement", "CR_In_CJK_Compatibility_Ideographs_Supplement"), - new CodeRangeEntry("intags", "CR_In_Tags"), - new CodeRangeEntry("invariationselectorssupplement", "CR_In_Variation_Selectors_Supplement"), - new CodeRangeEntry("insupplementaryprivateuseareaa", "CR_In_Supplementary_Private_Use_Area_A"), - new CodeRangeEntry("insupplementaryprivateuseareab", "CR_In_Supplementary_Private_Use_Area_B"), - new CodeRangeEntry("innoblock", "CR_In_No_Block") - }; - - static final int MAX_WORD_LENGTH = 44; -} From c9b6947d22a772ce1eeb73926a4acd39c913da85 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Sat, 4 Apr 2020 21:55:28 +0200 Subject: [PATCH 064/158] add getCType to code range --- scripts/UnicodeCodeRangeTemplate.java | 4 ++++ src/org/jcodings/unicode/UnicodeCodeRange.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/scripts/UnicodeCodeRangeTemplate.java b/scripts/UnicodeCodeRangeTemplate.java index a80f7e60..4ec427a1 100644 --- a/scripts/UnicodeCodeRangeTemplate.java +++ b/scripts/UnicodeCodeRangeTemplate.java @@ -43,6 +43,10 @@ public boolean contains(int code) { return CodeRange.isInCodeRange(range, code); } + public int getCType() { + return ordinal(); + } + static final UnicodeCodeRange[]CodeRangeTable = UnicodeCodeRange.values(); static final int MAX_WORD_LENGTH = %{max_length}; } diff --git a/src/org/jcodings/unicode/UnicodeCodeRange.java b/src/org/jcodings/unicode/UnicodeCodeRange.java index c3e9728a..88358d95 100644 --- a/src/org/jcodings/unicode/UnicodeCodeRange.java +++ b/src/org/jcodings/unicode/UnicodeCodeRange.java @@ -879,6 +879,10 @@ public boolean contains(int code) { return CodeRange.isInCodeRange(range, code); } + public int getCType() { + return ordinal(); + } + static final UnicodeCodeRange[]CodeRangeTable = UnicodeCodeRange.values(); static final int MAX_WORD_LENGTH = 44; } From aeb17fea12618e1432dc97a674019587c64af572 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Sat, 4 Apr 2020 22:00:45 +0200 Subject: [PATCH 065/158] [maven-release-plugin] prepare release jcodings-1.0.47 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 66ab2b4e..4e8ed6e3 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.47-SNAPSHOT + 1.0.47 JCodings Byte based encoding support library for java From 6297ad32a1751ca0b003ea8ad4275713b4e91e8d Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Sat, 4 Apr 2020 22:00:53 +0200 Subject: [PATCH 066/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4e8ed6e3..cbe6065a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.47 + 1.0.48-SNAPSHOT JCodings Byte based encoding support library for java From 90a2d0c30038edb59e594f1b470bb23623e2e557 Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Mon, 6 Apr 2020 22:59:01 +0200 Subject: [PATCH 067/158] case fold for sjis --- .../jcodings/specific/BaseSJISEncoding.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/org/jcodings/specific/BaseSJISEncoding.java b/src/org/jcodings/specific/BaseSJISEncoding.java index 7a35ddd1..ca6a8e91 100644 --- a/src/org/jcodings/specific/BaseSJISEncoding.java +++ b/src/org/jcodings/specific/BaseSJISEncoding.java @@ -72,9 +72,33 @@ public int codeToMbc(int code, byte[]bytes, int p) { return p_ - p; } + private boolean isInRange(int code, int from, int to) { + return code - from <= to - from; + } + + private int getLowerCase(int code) { + if (isInRange(code, 0x8260, 0x8279)) { + return code + 0x0021; + } else if (isInRange(code, 0x839f, 0x83b6)) { + return code + 0x0020; + } else if (isInRange(code, 0x8440, 0x8460)) { + int d = code >= 0x844f ? 1 : 0; + return code + (0x0030 + d); + } + return code; + } + @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { - return mbnMbcCaseFold(flag, bytes, pp, end, lower); + if (isAscii(bytes[pp.value])) { + return asciiMbcCaseFold(flag, bytes, pp, end, lower); + } else { + int lowerP = 0; + int code = getLowerCase(mbcToCode(bytes, pp.value, end)); + int len = codeToMbc(code, lower, lowerP); + pp.value += len; + return len; + } } private static final int CR_Hiragana[] = { From 3502e9d6e252b69c0fdd4806a1ca22338efeb68e Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Tue, 7 Apr 2020 22:33:54 +0200 Subject: [PATCH 068/158] euc-jp case fold --- src/org/jcodings/MultiByteEncoding.java | 4 ++++ .../jcodings/specific/BaseEUCJPEncoding.java | 19 +++++++++++++++---- .../jcodings/specific/BaseSJISEncoding.java | 6 +----- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/org/jcodings/MultiByteEncoding.java b/src/org/jcodings/MultiByteEncoding.java index daab9de9..74304e25 100644 --- a/src/org/jcodings/MultiByteEncoding.java +++ b/src/org/jcodings/MultiByteEncoding.java @@ -219,4 +219,8 @@ public int strCodeAt(byte[]bytes, int p, int end, int index) { } return -1; } + + public static boolean isInRange(int code, int from, int to) { + return code - from <= to - from; + } } diff --git a/src/org/jcodings/specific/BaseEUCJPEncoding.java b/src/org/jcodings/specific/BaseEUCJPEncoding.java index 41e6857a..2b007b30 100644 --- a/src/org/jcodings/specific/BaseEUCJPEncoding.java +++ b/src/org/jcodings/specific/BaseEUCJPEncoding.java @@ -62,6 +62,17 @@ public int codeToMbc(int code, byte[]bytes, int p) { return p_ - p; } + private static int getLowerCase(int code) { + if (isInRange(code, 0xa3c1, 0xa3da)) { + return code + 0x0020; + } else if (isInRange(code, 0xa6a1, 0xa6b8)) { + return code + 0x0020; + } else if (isInRange(code, 0xa7a1, 0xa7c1)) { + return code + 0x0030; + } + return code; + } + @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; @@ -72,10 +83,10 @@ public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower pp.value++; return 1; } else { - int len = length(bytes, p, end); - for (int i=0; i Date: Tue, 7 Apr 2020 15:44:53 -0500 Subject: [PATCH 069/158] [maven-release-plugin] prepare release jcodings-1.0.48 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cbe6065a..66993748 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.48-SNAPSHOT + 1.0.48 JCodings Byte based encoding support library for java From b95214c8df01577d335dc39f58cfb3f5dd1112ad Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 7 Apr 2020 15:45:03 -0500 Subject: [PATCH 070/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 66993748..23d2908a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.48 + 1.0.49-SNAPSHOT JCodings Byte based encoding support library for java From 06bef3abe36d1a259582938098ce5f14d37ec643 Mon Sep 17 00:00:00 2001 From: kiichi Date: Sun, 19 Apr 2020 15:34:15 +0900 Subject: [PATCH 071/158] fix treeStart --- .../jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java b/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java index 92d33556..c6518fd0 100644 --- a/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java +++ b/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java @@ -25,7 +25,7 @@ public class From_UTF8_MAC_Transcoder extends Transcoder { protected From_UTF8_MAC_Transcoder () { - super("UTF8-MAC", "UTF-8", 4928, "Utf8Mac", 1, 4, 10, AsciiCompatibility.ENCODER, 24); + super("UTF8-MAC", "UTF-8", 52544, "Utf8Mac", 1, 4, 10, AsciiCompatibility.ENCODER, 24); } public static final Transcoder INSTANCE = new From_UTF8_MAC_Transcoder(); From ea5cb72e981563dd1e20d3ea5d4e780a3b7524d6 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Mon, 20 Apr 2020 14:36:46 -0500 Subject: [PATCH 072/158] [maven-release-plugin] prepare release jcodings-1.0.49 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 23d2908a..9337b71f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.49-SNAPSHOT + 1.0.49 JCodings Byte based encoding support library for java From 3000f8c84f5857c12ad5d3991ee104a7176df72f Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Mon, 20 Apr 2020 14:36:56 -0500 Subject: [PATCH 073/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9337b71f..8295cc53 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.49 + 1.0.50-SNAPSHOT JCodings Byte based encoding support library for java From af4cd4066c4cb792ec6387884826c7659c4e9c9a Mon Sep 17 00:00:00 2001 From: kiichi Date: Tue, 28 Apr 2020 22:36:15 +0900 Subject: [PATCH 074/158] avoid Java ArrayIndex error e.g. "a\0".force_encoding(utf-32le).chomp update isNewLine condition(port from MRI 2.6.6) see https://github.com/ruby/ruby/blob/v2_6_6/enc/utf_32le.c --- src/org/jcodings/specific/UTF32LEEncoding.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/org/jcodings/specific/UTF32LEEncoding.java b/src/org/jcodings/specific/UTF32LEEncoding.java index 826d5234..e7df658e 100644 --- a/src/org/jcodings/specific/UTF32LEEncoding.java +++ b/src/org/jcodings/specific/UTF32LEEncoding.java @@ -33,15 +33,14 @@ protected UTF32LEEncoding() { @Override public boolean isNewLine(byte[]bytes, int p, int end) { if (p + 3 < end) { - if (bytes[p] == (byte)0x0a && bytes[p + 1] == 0 && bytes[p + 2] == 0 && bytes[p + 3] == 0) return true; + if (bytes[p + 3] == 0 && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == (byte)0x0a) return true; if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) { - if ((Config.USE_CRNL_AS_LINE_TERMINATOR && bytes[p] == (byte)0x0d) || - bytes[p] == (byte)0x85 && bytes[p + 1] == 0 && bytes[p + 2] == 0 && bytes[3] == 0) return true; + if (bytes[p + 3] == 0 && bytes[p + 2] == 0 && bytes[p + 1] == 0 && + (bytes[p] == (byte)0x0b || bytes[p] == (byte)0x0c || bytes[p] == (byte)0x0d || bytes[p] == (byte)0x85)) return true; - if (bytes[p + 1] == (byte)0x20 && - (bytes[p] == (byte)0x29 || bytes[p] == (byte)0x28) && - bytes[p + 2] == 0 && bytes[p + 3] == 0) return true; + if (bytes[p + 3] == 0 && bytes[p + 2] == 0 && bytes[p + 1] == (byte)0x20 && + (bytes[p] == (byte)0x29 || bytes[p] == (byte)0x28)) return true; } // USE_UNICODE_ALL_LINE_TERMINATORS } return false; From 170f819b59af1d226457881bac23d8997b711ea7 Mon Sep 17 00:00:00 2001 From: kiichi Date: Tue, 28 Apr 2020 22:52:30 +0900 Subject: [PATCH 075/158] format code and add missing increment operator --- src/org/jcodings/specific/UTF32LEEncoding.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/org/jcodings/specific/UTF32LEEncoding.java b/src/org/jcodings/specific/UTF32LEEncoding.java index e7df658e..8ad28064 100644 --- a/src/org/jcodings/specific/UTF32LEEncoding.java +++ b/src/org/jcodings/specific/UTF32LEEncoding.java @@ -67,10 +67,12 @@ public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) int foldP = 0; if (isAscii(bytes[p] & 0xff) && bytes[p + 1] == 0 && bytes[p + 2] == 0 && bytes[p + 3] == 0) { - if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI && (flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { - if (bytes[p] == (byte)0x49) { - fold[foldP++] = (byte)0x31; - fold[foldP] = (byte)0x01; + if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) { + if ((flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { + if (bytes[p] == (byte)0x49) { + fold[foldP++] = (byte)0x31; + fold[foldP++] = (byte)0x01; + } } } else { fold[foldP++] = AsciiTables.ToLowerCaseTable[bytes[p] & 0xff]; From 231974d32a3084cec53612bd19a632719973e652 Mon Sep 17 00:00:00 2001 From: kiichi Date: Tue, 28 Apr 2020 23:06:25 +0900 Subject: [PATCH 076/158] update isNewLine condition(port from MRI 2.6.6). see https://github.com/ruby/ruby/blob/v2_6_6/enc/utf_32be.c --- src/org/jcodings/specific/UTF32BEEncoding.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/jcodings/specific/UTF32BEEncoding.java b/src/org/jcodings/specific/UTF32BEEncoding.java index af112732..cc5fe277 100644 --- a/src/org/jcodings/specific/UTF32BEEncoding.java +++ b/src/org/jcodings/specific/UTF32BEEncoding.java @@ -36,8 +36,8 @@ public boolean isNewLine(byte[]bytes, int p, int end) { if (bytes[p + 3] == (byte)0x0a && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == 0) return true; if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) { - if ((Config.USE_CRNL_AS_LINE_TERMINATOR && bytes[p + 3] == (byte)0x0d) || - bytes[p + 3] == (byte)0x85 && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == 0) return true; + if ((bytes[p + 3] == (byte)0x0b || bytes[p + 3] == (byte)0x0c || bytes[p + 3] == (byte)0x0d || bytes[p + 3] == (byte)0x85) + && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == 0) return true; if (bytes[p + 2] == (byte)0x20 && (bytes[p + 3] == (byte)0x29 || bytes[p + 3] == (byte)0x28) && From 6396381da1b86db666f4a6114d36eb37dddd438d Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 28 Apr 2020 20:16:45 -0500 Subject: [PATCH 077/158] [maven-release-plugin] prepare release jcodings-1.0.50 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8295cc53..e3aa8a93 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.50-SNAPSHOT + 1.0.50 JCodings Byte based encoding support library for java From 9bb060b15bcfa12e92146ec25b5539e6fd00f07b Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 28 Apr 2020 20:16:54 -0500 Subject: [PATCH 078/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e3aa8a93..e3fe1a2e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.50 + 1.0.51-SNAPSHOT JCodings Byte based encoding support library for java From 9dcb383c28266210f452a30ce8f35d3608b31d85 Mon Sep 17 00:00:00 2001 From: kiichi Date: Sun, 3 May 2020 00:32:53 +0900 Subject: [PATCH 079/158] update convertInternal. this change make all the following test cases pass. 1. TestTranscode#test_ill_formed_utf_8_replace 2. TestTranscode#test_unicode_public_review_issue_121 --- src/org/jcodings/transcode/EConv.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/jcodings/transcode/EConv.java b/src/org/jcodings/transcode/EConv.java index 86176c8f..5ca95b54 100644 --- a/src/org/jcodings/transcode/EConv.java +++ b/src/org/jcodings/transcode/EConv.java @@ -395,7 +395,7 @@ private EConvResult convertInternal(byte[] in, Ptr inPtr, int inStop, byte[] out Ptr inDataStartPtr = new Ptr(inBuf.dataStart); res = transConv(inBuf.bytes, inDataStartPtr, inBuf.dataEnd, out, outPtr, outStop, (flags & ~AFTER_OUTPUT) | PARTIAL_INPUT, resultPosition); inBuf.dataStart = inDataStartPtr.p; - if (!res.isSourceBufferEmpty()) return convertInternalResult(EConvResult.SourceBufferEmpty, resultPosition); + if (!res.isSourceBufferEmpty()) return convertInternalResult(res, resultPosition); } if (hasOutput && (flags & AFTER_OUTPUT) != 0 && inPtr.p != inStop) { From 408210ce852febb2959f2bcdc460f2c91c195117 Mon Sep 17 00:00:00 2001 From: kiichi Date: Wed, 6 May 2020 00:55:19 +0900 Subject: [PATCH 080/158] fix wrong right shift by 160 bits. --- src/org/jcodings/transcode/Transcoding.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/jcodings/transcode/Transcoding.java b/src/org/jcodings/transcode/Transcoding.java index c821ff60..d4e95ff5 100644 --- a/src/org/jcodings/transcode/Transcoding.java +++ b/src/org/jcodings/transcode/Transcoding.java @@ -666,7 +666,7 @@ public static byte getGB4bt1(int a) { } public static byte getGB4bt2(int a) { - return (byte)(a >>> 160); + return (byte)(a >>> 16); } public static byte getGB4bt3(int a) { From 5445899d0566acb74bd87d92f54c4b89371f6a1d Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 8 May 2020 17:51:47 -0500 Subject: [PATCH 081/158] [maven-release-plugin] prepare release jcodings-1.0.51 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e3fe1a2e..fe7fcbb1 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.51-SNAPSHOT + 1.0.51 JCodings Byte based encoding support library for java From 47605d00b37fb22be7c6bb2e02abd6baf6f4fffd Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 8 May 2020 17:51:55 -0500 Subject: [PATCH 082/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fe7fcbb1..0b5f69d8 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.51 + 1.0.52-SNAPSHOT JCodings Byte based encoding support library for java From 3f6b50c2e81d2718fca3bdb0558774b904e653bb Mon Sep 17 00:00:00 2001 From: kiichi Date: Tue, 12 May 2020 00:00:05 +0900 Subject: [PATCH 083/158] Fix failling TestTranscode#test_to_cp50221 see https://github.com/ruby/ruby/blob/v2_6_6/enc/trans/iso2022.trans#L466 --- src/org/jcodings/transcode/TranscodeFunctions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/jcodings/transcode/TranscodeFunctions.java b/src/org/jcodings/transcode/TranscodeFunctions.java index 4b5c0e73..4fef6d15 100644 --- a/src/org/jcodings/transcode/TranscodeFunctions.java +++ b/src/org/jcodings/transcode/TranscodeFunctions.java @@ -519,7 +519,7 @@ public static int funSoCp50220Encoder(byte[] statep, byte[] s, int sStart, int l int c = sp[2] & 0x7F; int p = (c - 0x21) * 2; byte[] pBytes = tbl0208; - if (sp[1] == G0_JISX0208_1983) { + if (sp[1] != G0_JISX0208_1983) { o[oStart++] = 0x1B; o[oStart++] = (byte)'$'; o[oStart++] = (byte)'B'; From 5b85646458213cd11452d5be2591aa9ef984a725 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Mon, 11 May 2020 17:54:59 -0500 Subject: [PATCH 084/158] [maven-release-plugin] prepare release jcodings-1.0.52 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0b5f69d8..16d90fa5 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.52-SNAPSHOT + 1.0.52 JCodings Byte based encoding support library for java From fcfa08f5aaeb35ae3e7b3a1b28f6a9951f47faa8 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Mon, 11 May 2020 17:55:07 -0500 Subject: [PATCH 085/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 16d90fa5..d0eee8fc 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.52 + 1.0.53-SNAPSHOT JCodings Byte based encoding support library for java From 1d33e6ae761c75f3d8dae1259fe723b1e0d2290c Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 15 May 2020 15:37:34 -0500 Subject: [PATCH 086/158] Hardcode unicode and emoji version bits for now Fixes #29 --- src/org/jcodings/Config.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/org/jcodings/Config.java b/src/org/jcodings/Config.java index 06cd208a..dcc23a31 100644 --- a/src/org/jcodings/Config.java +++ b/src/org/jcodings/Config.java @@ -62,4 +62,12 @@ public interface Config { final int ENC_CASE_FOLD_MIN = INTERNAL_ENC_CASE_FOLD_MULTI_CHAR; final int ENC_CASE_FOLD_DEFAULT = ENC_CASE_FOLD_MIN; + final String UNICODE_VERSION_STRING = "12.1.0"; + final int UNICODE_VERSION_MAJOR = 12; + final int UNICODE_VERSION_MINOR = 1; + final int UNICODE_VERSION_TEENY = 0; + final String UNICODE_EMOJI_VERSION_STRING = "12.1"; + final int UNICODE_EMOJI_VERSION_MAJOR = 12; + final int UNICODE_EMOJI_VERSION_MINOR = 1; + } From 20a1260c6b9b10395ef0a475544e5b0d9244da74 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 15 May 2020 15:52:06 -0500 Subject: [PATCH 087/158] [maven-release-plugin] prepare release jcodings-1.0.53 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d0eee8fc..cb78668a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.53-SNAPSHOT + 1.0.53 JCodings Byte based encoding support library for java From fd09132374a79d0eb7196bb7aa83446c90a8bc46 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 15 May 2020 15:52:46 -0500 Subject: [PATCH 088/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cb78668a..ef871b95 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.53 + 1.0.54-SNAPSHOT JCodings Byte based encoding support library for java From 7f0bcab71fe2985a6dcdbd5e2b945bc590f33901 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 19 May 2020 05:43:05 -0500 Subject: [PATCH 089/158] There is no emojii version 12.0 The Unicode 12.1 update did not add any emoji. --- src/org/jcodings/Config.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/jcodings/Config.java b/src/org/jcodings/Config.java index dcc23a31..87fb38ba 100644 --- a/src/org/jcodings/Config.java +++ b/src/org/jcodings/Config.java @@ -66,8 +66,8 @@ public interface Config { final int UNICODE_VERSION_MAJOR = 12; final int UNICODE_VERSION_MINOR = 1; final int UNICODE_VERSION_TEENY = 0; - final String UNICODE_EMOJI_VERSION_STRING = "12.1"; + final String UNICODE_EMOJI_VERSION_STRING = "12.0"; final int UNICODE_EMOJI_VERSION_MAJOR = 12; - final int UNICODE_EMOJI_VERSION_MINOR = 1; + final int UNICODE_EMOJI_VERSION_MINOR = 0; } From 57236cd3cf9ced11371a970b6082e38dc8564aee Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 19 May 2020 05:46:13 -0500 Subject: [PATCH 090/158] [maven-release-plugin] prepare release jcodings-1.0.54 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ef871b95..32fa70ee 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.54-SNAPSHOT + 1.0.54 JCodings Byte based encoding support library for java From 10a7f453230846e38530f32e9c742bff908e8299 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 19 May 2020 05:46:21 -0500 Subject: [PATCH 091/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 32fa70ee..8e60dc01 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.54 + 1.0.55-SNAPSHOT JCodings Byte based encoding support library for java From 6b2fb14c909aa3b85be030cf6619d815b725ee6c Mon Sep 17 00:00:00 2001 From: kiichi Date: Thu, 21 May 2020 00:29:10 +0900 Subject: [PATCH 092/158] Fix range check for euc-jp and sjis case fold. --- src/org/jcodings/MultiByteEncoding.java | 2 +- test/org/jcodings/specific/TestEUCJP.java | 20 ++++++++++++++++- test/org/jcodings/specific/TestSJIS.java | 26 +++++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 test/org/jcodings/specific/TestSJIS.java diff --git a/src/org/jcodings/MultiByteEncoding.java b/src/org/jcodings/MultiByteEncoding.java index 74304e25..77b36450 100644 --- a/src/org/jcodings/MultiByteEncoding.java +++ b/src/org/jcodings/MultiByteEncoding.java @@ -221,6 +221,6 @@ public int strCodeAt(byte[]bytes, int p, int end, int index) { } public static boolean isInRange(int code, int from, int to) { - return code - from <= to - from; + return code - from >= 0 && to - code >= 0; } } diff --git a/test/org/jcodings/specific/TestEUCJP.java b/test/org/jcodings/specific/TestEUCJP.java index 5624122b..915f3d21 100755 --- a/test/org/jcodings/specific/TestEUCJP.java +++ b/test/org/jcodings/specific/TestEUCJP.java @@ -1,11 +1,12 @@ package org.jcodings.specific; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assume.assumeTrue; import java.nio.charset.Charset; -import org.jcodings.specific.EUCJPEncoding; +import org.jcodings.IntHolder; import org.junit.Test; public class TestEUCJP { @@ -24,4 +25,21 @@ public void testGetCharsetName() { "EUC-JP", EUCJPEncoding.INSTANCE.getCharsetName()); } + + @Test + public void testCaseFold() { + EUCJPEncoding enc = EUCJPEncoding.INSTANCE; + byte [] lowerSrc = new byte[]{(byte)0xA3, (byte)0xE1}; + byte [] upperSrc = new byte[]{(byte)0xA3, (byte)0xC1}; + byte [] lower = new byte[2]; + IntHolder pp = new IntHolder(); + + pp.value = 0; + enc.mbcCaseFold(0, lowerSrc, pp, 2, lower); + assertArrayEquals(lowerSrc, lower); + + pp.value = 0; + enc.mbcCaseFold(0, upperSrc, pp, 2, lower); + assertArrayEquals(lowerSrc, lower); + } } diff --git a/test/org/jcodings/specific/TestSJIS.java b/test/org/jcodings/specific/TestSJIS.java new file mode 100644 index 00000000..06c635e1 --- /dev/null +++ b/test/org/jcodings/specific/TestSJIS.java @@ -0,0 +1,26 @@ +package org.jcodings.specific; + +import static org.junit.Assert.assertArrayEquals; + +import org.jcodings.IntHolder; +import org.junit.Test; + +public class TestSJIS { + + @Test + public void testCaseFold() { + SJISEncoding enc = SJISEncoding.INSTANCE; + byte [] lowerSrc = new byte[]{(byte)0x82, (byte)0x81}; + byte [] upperSrc = new byte[]{(byte)0x82, (byte)0x60}; + byte [] lower = new byte[2]; + IntHolder pp = new IntHolder(); + + pp.value = 0; + enc.mbcCaseFold(0, lowerSrc, pp, 2, lower); + assertArrayEquals(lowerSrc, lower); + + pp.value = 0; + enc.mbcCaseFold(0, upperSrc, pp, 2, lower); + assertArrayEquals(lowerSrc, lower); + } +} \ No newline at end of file From 11a1fdc0a1267e962b0f0359a7fd640aa9e07d81 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 3 Jun 2020 20:35:25 -0500 Subject: [PATCH 093/158] [maven-release-plugin] prepare release jcodings-1.0.55 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8e60dc01..aca23d89 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.55-SNAPSHOT + 1.0.55 JCodings Byte based encoding support library for java From e69a7ac4c2b4b0f10b81eb8a72f899b9518c77f8 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 3 Jun 2020 20:35:34 -0500 Subject: [PATCH 094/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aca23d89..4fac3ce1 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.55 + 1.0.56-SNAPSHOT JCodings Byte based encoding support library for java From f7d9b20be46be205b82aeb3f1058dfb8e3444790 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 05:58:51 +0000 Subject: [PATCH 095/158] Bump junit from 4.10 to 4.13.1 Bumps [junit](https://github.com/junit-team/junit4) from 4.10 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.10.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.10...r4.13.1) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4fac3ce1..e6850b22 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ junit junit - 4.10 + 4.13.1 test From f6f148ec696f1ff7e49d7ab635f55e9483037e3a Mon Sep 17 00:00:00 2001 From: Marcin Mielzynski Date: Thu, 17 Jun 2021 22:05:58 +0200 Subject: [PATCH 096/158] guard against 0 too --- scripts/generate.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index b6ff6826..6050b6a2 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -105,7 +105,7 @@ def generate_transcoder_list src, dst, tree_start, table_info, iul, max_in, max_out, conv, state_size, state_init, state_fini, *funcs = body tree_start = trans_src[/#define\s+#{tree_start}\s+WORDINDEX2INFO\((\d+)\)/, 1].to_i << 2 state_size = "0" if state_size == "sizeof(struct from_utf8_mac_status)" - generic = funcs.all?{|f|f == "NULL"} + generic = funcs.all?{|f|f == "NULL" || f == "0"} generic_list << [src, dst, tree_start, "\"#{name}\"", iul, max_in, max_out, "AsciiCompatibility.#{conv.split('_').last.upcase}", state_size] if generic transcoder_list << [src, dst, t_name, !generic] From 4f0a1c90828a9095140b690e7d81fc1afbcc08ce Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 1 Feb 2022 08:27:40 -0600 Subject: [PATCH 097/158] Disable Travis in prep for GHA move --- .travis.yml | 8 -------- .../jcodings/transcode/TestCP51932ToCP50220.java | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) delete mode 100644 .travis.yml create mode 100644 test/org/jcodings/transcode/TestCP51932ToCP50220.java diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 362f2627..00000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: java - -jdk: -- openjdk8 -- openjdk9 - -script: mvn test - diff --git a/test/org/jcodings/transcode/TestCP51932ToCP50220.java b/test/org/jcodings/transcode/TestCP51932ToCP50220.java new file mode 100644 index 00000000..b1316136 --- /dev/null +++ b/test/org/jcodings/transcode/TestCP51932ToCP50220.java @@ -0,0 +1,16 @@ +package org.jcodings.transcode; + +import org.jcodings.Ptr; +import org.junit.Test; + +public class TestCP51932ToCP50220 { + @Test + public void test2() { + byte[] src = {0, 127, -114, -95, -114, -2, -95, -95, -95, -2}; + byte[] dst = new byte[100]; + Ptr srcPtr = new Ptr(0); + Ptr dstPtr = new Ptr(0); + EConv econv = TranscoderDB.open("CP51932", "CP50220", 0); + econv.convert(src, srcPtr, src.length, dst, dstPtr, dst.length, 0); + } +} From 46bb16ab4e6de9a9f76761f6803e6118297f9b4c Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 1 Feb 2022 08:28:47 -0600 Subject: [PATCH 098/158] Enable GHA --- .github/workflows/maven.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/maven.yml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 00000000..eec35969 --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,23 @@ +name: Java CI with Maven + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: mvn -B package --file pom.xml From 6b6e97ac12cc637388423f52810d9dd580d90c71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Sun, 30 Jan 2022 17:10:33 +0100 Subject: [PATCH 099/158] try actions --- .github/workflows/ci.yml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..0a244c10 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,37 @@ +# This workflow will build a Java project with Maven +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Java CI with Maven + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + jdk8: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1.4.3 + with: + java-version: 8 + - name: Run tests + run: mvn test --file pom.xml + + jdk11: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v1.4.3 + with: + java-version: 11 + - name: Run tests + run: mvn test --file pom.xml \ No newline at end of file From 1a34f2c7be1474e6b0879b22f03406fd6d1a1254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Sun, 30 Jan 2022 03:17:14 +0100 Subject: [PATCH 100/158] implement CESU-8 --- .../tables/Transcoder_Cesu8_ByteArray.bin | Bin 0 -> 766 bytes .../tables/Transcoder_Cesu8_WordArray.bin | Bin 0 -> 252 bytes .../tables/Transcoder_Escape_ByteArray.bin | Bin 1059 -> 1066 bytes .../tables/Transcoder_Escape_WordArray.bin | Bin 84 -> 88 bytes .../Transcoder_SingleByte_ByteArray.bin | Bin 25837 -> 26606 bytes .../Transcoder_SingleByte_WordArray.bin | Bin 50440 -> 51392 bytes scripts/generate.rb | 5 +- src/org/jcodings/EncodingList.java | 4 + src/org/jcodings/specific/CESU8Encoding.java | 430 ++++++++++++++++++ .../transcode/TranscodeFunctions.java | 21 + .../jcodings/transcode/TranscoderList.java | 118 ++--- .../specific/From_CESU_8_Transcoder.java | 37 ++ .../specific/To_CESU_8_Transcoder.java | 48 ++ test/org/jcodings/specific/TestCESU8.java | 49 ++ 14 files changed, 655 insertions(+), 57 deletions(-) create mode 100644 resources/tables/Transcoder_Cesu8_ByteArray.bin create mode 100644 resources/tables/Transcoder_Cesu8_WordArray.bin create mode 100644 src/org/jcodings/specific/CESU8Encoding.java create mode 100644 src/org/jcodings/transcode/specific/From_CESU_8_Transcoder.java create mode 100644 src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java create mode 100644 test/org/jcodings/specific/TestCESU8.java diff --git a/resources/tables/Transcoder_Cesu8_ByteArray.bin b/resources/tables/Transcoder_Cesu8_ByteArray.bin new file mode 100644 index 0000000000000000000000000000000000000000..fa55e8696907b8affc4c170f6e799e38b1887b8c GIT binary patch literal 766 zcmZQzVEWatpOHeafS?H*FjTyK%h<4XXgL_fjJN( literal 0 HcmV?d00001 diff --git a/resources/tables/Transcoder_Cesu8_WordArray.bin b/resources/tables/Transcoder_Cesu8_WordArray.bin new file mode 100644 index 0000000000000000000000000000000000000000..eb72d0e512e5fb6f054fd1129da78eeaced2c81b GIT binary patch literal 252 zcmZQzV6bCgU|4KO>F0LAwM#n%8a2moou Zj}RKGd2@hrTYz{E5FcS+U}6T+X8=@l58wa* literal 0 HcmV?d00001 diff --git a/resources/tables/Transcoder_Escape_ByteArray.bin b/resources/tables/Transcoder_Escape_ByteArray.bin index a425608ec27b0ed84a3ae496065bd4faa2a2c9d2..22cd44c7b557206aeaac7683560be3f32237915a 100644 GIT binary patch delta 48 zcmZ3?v5JF*fq_MBvLds_MjcTmM&^lvBFrodtP>3n@-nFvmgbjOGpQvOHq)$ delta 37 ocmazDVPRlk5ShqgCe<{NfuZ>#0|S!?P(%ZW`573PWr4H{0CH~x!T4`tYqfq!NgRg8VJVxKiiA3kgcuA4CM#E0m<8Y&hM1!^gS%UFjw<*4u^ y4lx-{A#PvVQ9>;t``rYdod(Q2$EmePnQQ3RHDvTFZk-XFs%Y<;jO=vxp85gpbT*;@ delta 80 zcmV-W0I&b<&jIbp0R{j7Wa$8Zld)HTv4-eDlPOyxlm0yivm8hS0h2!{43i~Bo|D^7 m5tDEz1(Wb136oz$Jd;d7ACvG|1hc+G4gr(PM@zFFNzfi5Ngsy* diff --git a/resources/tables/Transcoder_SingleByte_WordArray.bin b/resources/tables/Transcoder_SingleByte_WordArray.bin index 538b7f2913cf098cce12afa718b27737b36be2c5..61364d9d53b21e01b0963ff119adc02f92f8d26c 100644 GIT binary patch delta 4452 zcmaJ^e^6A{6+ZhgFT~JjJCv+j$}q$rRT2q99om^XhFF4xAS%&SDOr(haR(7l0g<=_ z(L&sil|x}wh(HkKM+JF6L4gt^$Wo(|Iqd2Wrpryn_pt(&5WqR1S24YZ&sP zLfGeE_X2g}hy~sT8bmw9A8(50XH%SpZan@G=mC0xv%qWU+BL+_>7V>bUFkm_qCmGG8oS6cuG5GLI6`!@wg%|CNZUfePR>FavxA+yL$ZZNPKsL}`QWK76Vq z_-72d3aAwB({SH*yNMj&jsQo2W4s|_3CDZ+bI{YiKYVVQXj_CD`FnV;^Th>=c=?lh z>tQ^V147cg07SKV#`_QWFM*ZeL>6xk{{^^d!S4besPTHDRLo*QYY8KIr5fqNXHG<1 zH@HZ|>D1V?o0umQww{*Kwgxz1QwV^L79&~_90Mc(cwRXJ-UM66?W?!&2ZtZ!$b?@g zKSraT%XKB9!ebLW=8|72mugK9mVP4~sj9BaTVGN`#g2?1E;NK#; zizs8h=F@w!$yoT^Y%+v;Et_;FhMvGP`fTsR7@|^IG8u8OBLPn`4^#9P2uf7O%yT6v zqk<>X%<}WMh%#$AZd;0!<-_gUGNi0b4z!?|WVxb^H1u&x&K9Xe0v^d^2u9pBC36Q9 z?_9_QS@J4Cy~xF_p%X?HrW%ubee&u~L_nUrJXh@C-F&J-JW23uEQq+B12Cd6YF zu`PtETqLk6AFY^4Q?)x4LrxRrAlaNrH9i+g-O6&mTTEJV6k}kEVT|&>cu~=)7ctuX zXb+=RzS{YzPRe!g^zI;e6&7btgQCxob<&;@4$M8cDSr%IwYq+Sy88T-Xm66nLGE4@ z>06S&2AAoY&edDJPugqe%pD83W=o*5ChuLH9J>OZ5%$k7 zlU^O=*8DrxeI~?f^EYDtlYltIZvc?XLd3d&hj`nS#%Cl692rTMZnwFG7AHis-coF4$Ke@Ioyp8EU z2VQs&{5YG;hV?~L-##7B;>;CIyGD0)D?&wzM)3?)saSy23E1F7mG%pzkw6TP02px! zaX9t|YIV~qf45%NN&8LQ^IDV~=S_4Vy}YQ=FD@2VCpu^)IM7OT(8#ssaOt2)nJ&UM zJ=nnaiWkdqHlmVt4n2?`Tr%nDuoWsw#_nBYA3TFyB3t=eK$u9!osqyje(OU+7BK9;)=& z=1M{KOm$}WdquoQ#QQ|NM^>-F1z*5ZWmn|Y46~Zs7ew=8cHi}@FA;Hpy6ID|X(ON@ zjN*uETx@)Epn8KOJPuyOXcaH7fGuKo0b{VWC9NQ_@hiL)yZwevPS}X|+e$7dkCoSK z#ycyFN6K$Wm4)2LvDT_tqRSxk5MTp-v;}XtJ`9QSR*kCD%szu_YQT?!*Q8YDsWDY) z;5%V!QmUq5M*=ZG0$?Os^ATcZVCzUZQ1Or?IU?9rX_nW1h_~hno;VS}epMs#Iz1j+ zd8#T{UbhMF(rWf~1R2($9><*MtgZVn#4ardH_ZtSgJIoOywK;UZgEG8#qfic>V;hF zhzd^(gel}`y{{m|=Vfq(9KmuUIU=Udop^O~CnW-t{@ncbj^|--~i@CLwKZG{%PCh=SL{#Gv zK0d|v*eKptvr?*^=A@GbzFMQVuE+gW2i5Lg6X+!h^VE;Qw|n?*aPI-Tby!(_n^hT79h4=C5RSEb`_jiJAhHi4${m;Z1h{^s9e9dHEP+y!tV z!OOze1YbMrPcAlW{um}oE5dr=avy`{d&qd1ob(h?%Y1g6RJV3ZoEq7(63N+MBT=zU zTQb#T-P^P!4?Zp7rV`A6ZQ6Va7*-cg^lQG2e%^=+0m5KA&_)6=KmuS?cWFy4Y#s4| ziUxk9;m_RKR4KLG#Nm(Tx(+6ZNhc8tvx*$^qYSXote@!;EEFe9s___;^a_VEF&Dz7Q8k& z1EvU@C94C)?wG{A(5lm$?c#_xO)wJ;Y^(TatBdY8V7a+ zNL^#Rq9Z_l8H?F<+g*LDX&F&BDkdu0oro6p{rkj}2Vas$a@Pp5LnXUzf}j8WlDpCG zLHne;&^4A_d{bUJQmmX%Ue!t6BfPL{d4TCG;YSdDZH4PmJ#it0{uR64p9{PEGEBHr zdLz`3+4oT|)=HdXaUb<2xTbIo)9d@d`-pl&5fcK0AwCUlB!Ds8TYAfK@c3IeSD`q% zb97Q~56|xjn49u*qH|cV=w~>x=c=5Ni^u8mfq1s``dCtWiTXw{h9+OUbi`Xl$nVEI zZeIK=Rs!M=uwTrn#aDrI|80u@rhb#hC+@FffcQx4FW|}EUrPNI?0+^{PWckdC>Nd$ z&lu1OBi6Cs2wz&2?Y|(W<`4}|q7rgy579fFoH$Tq8S+M7ksQXpU(XN@m|M>fG(Jer zJFP@RaJjV%;rV_osdo|6sjT>uStq~pDeT+aI=EOGHhuFIxau8z1rFQrhY-$w=aZ!O z9QaF!=CkLAt?!E@wd!9&b;WJ$bQclFSp30?k5Fff8s|(zi)8Nqa&pc(Anykv9>sR9 aP-DfHusZ=K7GzcekGgJ8Gp-hA!T$j1D-|gK delta 3928 zcmaJ^Z%|a%6+ipbmuhLsOp(wXN*H4ZqohTLT0U5-NG&2EDfnJWuCCVOS|H3z6dvu25_>Y<)FTS-9(h zM%tCZ*1Qny`XZv;c~GgzevV|;_d!putE$-}$j4f*0+)k>uNB`7wUDBtOo zi}F4LiE?B2L-#<{p@ys}?8iaKThyWtb=ML*NVI1@?9^Iz*CHhJqVD`k&@lLLdfrvc zo~76zD8+$vpi~5Ui~}OrS@CUUUGYCO(w;ny+Pg~r@gt(baxU0=Oe*Z-*}dsf(OOO` zJt-Bn@nq=|sW_7T%fj>yDSR?=BM?~cTYCaGI#Pjob7q7%lq{d3l>(_GnnFRUOJ48*jY(4Xdta}dZG`F1%lXY8&PEYXd zvr7_nXNipdILkFXL=JTJdqB=8VyH6l82<+(o?7v=>V6M>f?F@1VDak`i2RIsyxJ7A zax>mYW0lwa9!&gpKsM}^U4rZ;XmcjyV{A2r$(zrEo#ru<*032@y*bot{X1ADy#(1> zx6EjVDS9eEG-3psu{I;&W+auAgEbjC704#&PmjUwYasN^7_0hafiDM-#6>@wOR(Y$ z0Q=3akWI2cQHe=A!S5LZlowlbG*a_0*Pn~gzSco>R^*_9^jqX8ez8o!%H%n`sHRA+ zkB{M1?XglzG*4a8a#MRy$ZHcsEq1Th7`y})FE56ChHtlPbCbh}TGfuUOu-bzwIcae zBr1wb&IXT!Jq4Nq5L6TaJ5gKh6LK)}%vCb*ur!PZ} zGjRq#vKSPT`G`h3pXQqWH5YYq>QbT$*_i$i)?NwcdlwxmFO0%mtxG)isd{`7p(!5O zN05nn?+P8lcg?W#(lTx8Cq!ldEzAa>@{GJW762^cH5Na4O9V_(S!W3|h*35-x~gPn?nc^rH+C=Mj#shE3= zs`&wU4JnT-_%`g0QVVy=Tk~dUN!xaVjr`x}JpisJ9F+WY06oEd0}B9q(v&Gno`#)$P4c!L z?7J~bdO7VX(N!yt_J>Hl!93F+BBy;u)Vmspt}$%?KG+Q8091QTSb@ykMsF{JuG5=m zZvct}O1lKZcduzANeSRF+ZuWM08xJ^hYkc9`m%GrQztMHP%fCPE$p>hnw9;^0#Ywbupbaz#8iCp$g!-@J5n2GxP;`NM%jO5QuA8tFzbPuM?_Gxy?GGh6^B zXZ{lGEc?A%Z5YzQQ(*OkEQfHrJXsDQ^Cx9_bDC%<4mvf%A?)X7nE3^4W>x=%2W{gE zszHZ9hm~)v+pKx^jVYpc0EIgM+rJwkYZ8d;-AcU!17IJ)*ZxWA-Ek%2gGCy{tpZr8 z?Y)C`h*#KA>6M8;ZsPmWQSX*HOjuFg+%G1F&z-uJ4SO`jQR}u9AG)5B9E0G!pnu)< LV(!FC<8b^JDWs%P diff --git a/scripts/generate.rb b/scripts/generate.rb index 6050b6a2..e630df29 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -65,6 +65,7 @@ def generate_encoding_list "KOI8-R" => "KOI8R", "KOI8-U" => "KOI8U", "Shift_JIS" => "SJIS", + "CESU-8" => "CESU8", "UTF-16BE" => "UTF16BE", "UTF-16LE" => "UTF16LE", "UTF-32BE" => "UTF32BE", @@ -78,7 +79,7 @@ def generate_encoding_list "Windows-1257" => "Windows_1257" } - defines, other = open("#{REPO_PATH}/encdb.h").read.tr('()', '').scan(/ENC_([A-Z_]+)(.*?);/m).reject{|a, b| b =~ /CESU/}.partition { |a, b| a =~ /DEFINE/ } + defines, other = open("#{REPO_PATH}/encdb.h").read.tr('()', '').scan(/ENC_([A-Z_]+)(.*?);/m).partition { |a, b| a =~ /DEFINE/ } other << ["ALIAS", "\"MS932\", \"Windows-31J\""] other << ["ALIAS", "\"UTF8\", \"UTF-8\""] @@ -93,7 +94,7 @@ def generate_transcoder_list generic_list = [] transcoder_list = [] - Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/ || f =~ /cesu/}.sort.each do |trans_file| + Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.sort.each do |trans_file| name = trans_file[/(\w+)\.c/, 1].split('_').map{|e| e.capitalize}.join("") trans_src = open(trans_file){|f|f.read} diff --git a/src/org/jcodings/EncodingList.java b/src/org/jcodings/EncodingList.java index 70f63545..35e64f84 100644 --- a/src/org/jcodings/EncodingList.java +++ b/src/org/jcodings/EncodingList.java @@ -28,6 +28,7 @@ static final void load() { EncodingDB.declare("Big5", "BIG5"); EncodingDB.declare("Big5-HKSCS", "Big5HKSCS"); EncodingDB.declare("Big5-UAO", "Big5UAO"); + EncodingDB.declare("CESU-8", "CESU8"); EncodingDB.declare("CP949", "CP949"); EncodingDB.declare("Emacs-Mule", "EmacsMule"); EncodingDB.declare("EUC-JP", "EUCJP"); @@ -68,6 +69,8 @@ static final void load() { EncodingDB.alias("BINARY", "ASCII-8BIT"); EncodingDB.replicate("IBM437", "ASCII-8BIT"); EncodingDB.alias("CP437", "IBM437"); + EncodingDB.replicate("IBM720", "ASCII-8BIT"); + EncodingDB.alias("CP720", "IBM720"); EncodingDB.replicate("IBM737", "ASCII-8BIT"); EncodingDB.alias("CP737", "IBM737"); EncodingDB.replicate("IBM775", "ASCII-8BIT"); @@ -205,6 +208,7 @@ public static Encoding getInstance(String name) { case "BIG5": return BIG5Encoding.INSTANCE; case "Big5HKSCS": return Big5HKSCSEncoding.INSTANCE; case "Big5UAO": return Big5UAOEncoding.INSTANCE; + case "CESU8": return CESU8Encoding.INSTANCE; case "CP949": return CP949Encoding.INSTANCE; case "EmacsMule": return EmacsMuleEncoding.INSTANCE; case "EUCJP": return EUCJPEncoding.INSTANCE; diff --git a/src/org/jcodings/specific/CESU8Encoding.java b/src/org/jcodings/specific/CESU8Encoding.java new file mode 100644 index 00000000..7773219d --- /dev/null +++ b/src/org/jcodings/specific/CESU8Encoding.java @@ -0,0 +1,430 @@ +/* + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.jcodings.specific; + +import org.jcodings.Config; +import org.jcodings.IntHolder; +import org.jcodings.ascii.AsciiTables; +import org.jcodings.exception.ErrorCodes; +import org.jcodings.unicode.UnicodeEncoding; + +public final class CESU8Encoding extends UnicodeEncoding { + static final boolean USE_INVALID_CODE_SCHEME = true; + + protected CESU8Encoding() { + super("CESU-8", 1, 6, CESU8EncLen, CESU8Trans); + } + + @Override + public String getCharsetName() { + return "CESU-8"; + } + + @Override + public int length(byte[] bytes, int p, int end) { + int b = bytes[p] & 0xff; + if (b <= 127) { + return 1; + } + int s = TransZero[b]; + if (s < 0) + return CHAR_INVALID; + return lengthForOneUptoSix(bytes, p, end, b, s); + } + + private int lengthForOneUptoSix(byte[] bytes, int p, int end, int b, int s) { + if (++p == end) { + return missing(b, 1); + } + s = Trans[s][bytes[p] & 0xff]; + if (s < 0) { + return s == A ? 2 : CHAR_INVALID; + } + if (++p == end) { + return missing(b, s == 4 ? 4 : TransZero[b] - 2); + } + s = Trans[s][bytes[p] & 0xff]; + if (s < 0) { + return s == A ? 3 : CHAR_INVALID; + } + if (++p == end) + return missing(b, 3); + s = Trans[s][bytes[p] & 0xff]; + if (s < 0) { + return s == A ? 4 : CHAR_INVALID; + } + if (++p == end) + return missing(b, 2); + s = Trans[s][bytes[p] & 0xff]; + if (s < 0) { + return s == A ? 5 : CHAR_INVALID; + } + if (++p == end) + return missing(b, 1); + s = Trans[s][bytes[p] & 0xff]; + return s == A ? 6 : CHAR_INVALID; + } + + @Override + public boolean isNewLine(byte[] bytes, int p, int end) { + if (p < end) { + if (bytes[p] == (byte) 0x0a) + return true; + + if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) { + if (!Config.USE_CRNL_AS_LINE_TERMINATOR) { + if (bytes[p] == (byte) 0x0d) + return true; + } + + if (p + 1 < end) { + if (bytes[p + 1] == (byte) 0x85 && bytes[p] == (byte) 0xc2) + return true; + if (p + 2 < end) { + if ((bytes[p + 2] == (byte) 0xa8 || bytes[p + 2] == (byte) 0xa9) && + bytes[p + 1] == (byte) 0x80 && bytes[p] == (byte) 0xe2) + return true; + } + } + } + } + return false; + } + + private static final int INVALID_CODE_FE = 0xfffffffe; + private static final int INVALID_CODE_FF = 0xffffffff; + private static final int VALID_CODE_LIMIT = 0x0010ffff; + + @Override + public int codeToMbcLength(int code) { + if ((code & 0xffffff80) == 0) { + return 1; + } else if ((code & 0xfffff800) == 0) { + return 2; + } else if ((code & 0xffff0000) == 0) { + return 3; + } else if ((code & 0xFFFFFFFFL) <= VALID_CODE_LIMIT) { + return 6; + } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) { + return 1; + } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FF) { + return 1; + } else { + return ErrorCodes.ERR_TOO_BIG_WIDE_CHAR_VALUE; + } + } + + @Override + public int mbcToCode(byte[] bytes, int p, int end) { + int len = length(bytes, p, end); + int c = bytes[p] & 0xff; + + switch (len) { + case 1: + return c; + case 2: + return ((c & 0x1F) << 6) | (bytes[p + 1] & 0xff & 0x3f); + case 3: + return ((c & 0xF) << 12) | ((bytes[p + 1] & 0xff & 0x3f) << 6) | (bytes[p + 2] & 0xff & 0x3f); + case 6: + { + int high = ((c & 0xF) << 12) | ((bytes[p + 1] & 0xff & 0x3f) << 6) | (bytes[p + 2] & 0xff & 0x3f); + int low = ((bytes[p + 3] & 0xff & 0xF) << 12) | ((bytes[p + 4] & 0xff & 0x3f) << 6) | (bytes[p + 5] & 0xff & 0x3f); + return ((high & 0x03ff) << 10) + (low & 0x03ff) + 0x10000; + } + } + + if (USE_INVALID_CODE_SCHEME) { + if (c > 0xfd) { + return ((c == 0xfe) ? INVALID_CODE_FE : INVALID_CODE_FF); + } + } + return c; + } + + static byte trailS(int code, int shift) { + return (byte) (((code >>> shift) & 0x3f) | 0x80); + } + + static byte trail0(int code) { + return (byte) ((code & 0x3f) | 0x80); + } + + static byte trailS(long code, int shift) { + return (byte) (((code >>> shift) & 0x3f) | 0x80); + } + + static byte trail0(long code) { + return (byte) ((code & 0x3f) | 0x80); + } + + @Override + public int codeToMbc(int code, byte[] bytes, int p) { + int p_ = p; + if ((code & 0xffffff80) == 0) { + bytes[p_] = (byte) code; + return 1; + } else { + if ((code & 0xfffff800) == 0) { + bytes[p_++] = (byte) (((code >>> 6) & 0x1f) | 0xc0); + } else if ((code & 0xffff0000) == 0) { + bytes[p_++] = (byte) (((code >>> 12) & 0x0f) | 0xe0); + bytes[p_++] = trailS(code, 6); + } else if ((code & 0xFFFFFFFFL) <= VALID_CODE_LIMIT) { + long high = (code >> 10) + 0xD7C0; + code = (code & 0x3FF) + 0xDC00; + bytes[p_++] = (byte)(((high>>12) & 0x0f) | 0xe0); + bytes[p_++] = trailS(high, 6); + bytes[p_++] = trail0(high); + bytes[p_++] = (byte)(((code>>12) & 0x0f) | 0xe0); + bytes[p_++] = trailS(code, 6); + } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) { + bytes[p_] = (byte) 0xfe; + return 1; + } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FF) { + bytes[p_] = (byte) 0xff; + return 1; + } else { + return ErrorCodes.ERR_TOO_BIG_WIDE_CHAR_VALUE; + } + bytes[p_++] = trail0(code); + return p_ - p; + } + } + + @Override + public int mbcCaseFold(int flag, byte[] bytes, IntHolder pp, int end, byte[] fold) { + int p = pp.value; + int foldP = 0; + + if (isMbcAscii(bytes[p])) { + + if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) { + if ((flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { + if (bytes[p] == (byte) 0x49) { + fold[foldP++] = (byte) 0xc4; + fold[foldP] = (byte) 0xb1; + pp.value++; + return 2; + } + } + } + + fold[foldP] = AsciiTables.ToLowerCaseTable[bytes[p] & 0xff]; + pp.value++; + return 1; + } else { + return super.mbcCaseFold(flag, bytes, pp, end, fold); + } + } + + @Override + public int[] ctypeCodeRange(int ctype, IntHolder sbOut) { + sbOut.value = 0x80; + return super.ctypeCodeRange(ctype); + } + + private static boolean utf8IsLead(int c) { + return ((c & 0xc0) & 0xff) != 0x80; + } + + @Override + public int leftAdjustCharHead(byte[] bytes, int p, int s, int end) { + if (s <= p) + return s; + int p_ = s; + while (!utf8IsLead(bytes[p_] & 0xff) && p_ > p) + p_--; + return p_; + } + + @Override + public boolean isReverseMatchAllowed(byte[] bytes, int p, int end) { + return true; + } + + private static final int CESU8EncLen[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + }; + + static final int CESU8Trans[][] = new int[][] { + { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* c */ F, F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* e */ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, + /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F + }, + { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, + /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F + }, + { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F + }, + { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F + }, + { /* S4 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* a */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F + }, + { /* S5 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 8 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + /* 9 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + /* a */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + /* b */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F + }, + { /* S6 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, 7, F, F, + /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F + }, + { /* S7 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, + /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F + } + }; + + public static final CESU8Encoding INSTANCE = new CESU8Encoding(); +} diff --git a/src/org/jcodings/transcode/TranscodeFunctions.java b/src/org/jcodings/transcode/TranscodeFunctions.java index 4fef6d15..67e0f49a 100644 --- a/src/org/jcodings/transcode/TranscodeFunctions.java +++ b/src/org/jcodings/transcode/TranscodeFunctions.java @@ -11,6 +11,27 @@ public class TranscodeFunctions { public static final int BE = 1; public static final int LE = 2; + public static int funSoToCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { + long scalar = ((s[0]&0x07)<<18) | ((s[1]&0x3F)<<12) | ((s[2]&0x3F)<< 6) | (s[3]&0x3F); + scalar -= 0x10000; + o[0] = (byte)0xED; + o[1] = (byte)(0xA0 | (scalar >> 16)); + o[2] = (byte)(0x80 | ((scalar >> 10) & 0x3F)); + o[3] = (byte)0xED; + o[4] = (byte)(0xB0 | ((scalar >> 6) & 0x0F)); + o[5] = (byte)(0x80 | (scalar & 0x3F)); + return 6; + } + + public static int funSoFromCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { + long scalar = ( ((s[1]&0x0F)<<16) | ((s[2]&0x3F)<<10) | ((s[4]&0x0F)<< 6) | (s[5]&0x3F)) + 0x10000; + o[0] = (byte)(0xF0 | (scalar >> 18)); + o[1] = (byte)(0x80 | ((scalar >> 12) & 0x3F)); + o[2] = (byte)(0x80 | ((scalar >> 6) & 0x3F)); + o[3] = (byte)(0x80 | (scalar & 0x3F)); + return 4; + } + public static int funSoToUTF16(byte[] statep, byte[] sBytes, int sStart, int l, byte[] o, int oStart, int osize) { int sp = 0; if (statep[sp] == 0) { diff --git a/src/org/jcodings/transcode/TranscoderList.java b/src/org/jcodings/transcode/TranscoderList.java index 5f9f1aa7..a3e64982 100644 --- a/src/org/jcodings/transcode/TranscoderList.java +++ b/src/org/jcodings/transcode/TranscoderList.java @@ -34,6 +34,8 @@ static void load() { TranscoderDB.declare("UTF-8", "CP951", null /*To_CP951*/); TranscoderDB.declare("Big5-UAO", "UTF-8", null /*From_Big5_UAO*/); TranscoderDB.declare("UTF-8", "Big5-UAO", null /*To_Big5_UAO*/); + TranscoderDB.declare("CESU-8", "UTF-8", "From_CESU_8"); + TranscoderDB.declare("UTF-8", "CESU-8", "To_CESU_8"); TranscoderDB.declare("GB2312", "UTF-8", null /*From_GB2312*/); TranscoderDB.declare("GB12345", "UTF-8", null /*From_GB12345*/); TranscoderDB.declare("UTF-8", "GB2312", null /*To_GB2312*/); @@ -153,10 +155,12 @@ static void load() { TranscoderDB.declare("UTF-8", "WINDOWS-1257", null /*To_WINDOWS_1257*/); TranscoderDB.declare("IBM437", "UTF-8", null /*From_IBM437*/); TranscoderDB.declare("UTF-8", "IBM437", null /*To_IBM437*/); - TranscoderDB.declare("IBM775", "UTF-8", null /*From_IBM775*/); - TranscoderDB.declare("UTF-8", "IBM775", null /*To_IBM775*/); + TranscoderDB.declare("IBM720", "UTF-8", null /*From_IBM720*/); + TranscoderDB.declare("UTF-8", "IBM720", null /*To_IBM720*/); TranscoderDB.declare("IBM737", "UTF-8", null /*From_IBM737*/); TranscoderDB.declare("UTF-8", "IBM737", null /*To_IBM737*/); + TranscoderDB.declare("IBM775", "UTF-8", null /*From_IBM775*/); + TranscoderDB.declare("UTF-8", "IBM775", null /*To_IBM775*/); TranscoderDB.declare("IBM852", "UTF-8", null /*From_IBM852*/); TranscoderDB.declare("UTF-8", "IBM852", null /*To_IBM852*/); TranscoderDB.declare("IBM855", "UTF-8", null /*From_IBM855*/); @@ -260,7 +264,7 @@ static void load() { new GenericTranscoderEntry("UTF8-SoftBank", "SJIS-SoftBank", 84704, "EmojiSjisSoftbank", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("", "amp_escape", 8, "Escape", 1, 1, 5, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("", "xml_text_escape", 32, "Escape", 1, 1, 5, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("", "xml_attr_content_escape", 60, "Escape", 1, 1, 6, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("", "xml_attr_content_escape", 64, "Escape", 1, 1, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("GBK", "UTF-8", 89284, "Gbk", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "GBK", 182912, "Gbk", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("EUC-JP", "UTF-8", 54488, "JapaneseEuc", 1, 3, 1, AsciiCompatibility.CONVERTER, 0), @@ -335,63 +339,67 @@ static void load() { new GenericTranscoderEntry("UTF-8", "WINDOWS-1257", 24952, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM437", "UTF-8", 25476, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM437", 26312, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM775", "UTF-8", 26836, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM775", 27480, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM737", "UTF-8", 28004, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM737", 28516, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM852", "UTF-8", 29040, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM852", 29656, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM855", "UTF-8", 30180, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM855", 30732, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM857", "UTF-8", 31248, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM857", 31760, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM860", "UTF-8", 32284, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM860", 32672, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM861", "UTF-8", 33196, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM861", 33508, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM862", "UTF-8", 34032, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM862", 34276, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM863", "UTF-8", 34800, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM863", 35180, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM865", "UTF-8", 35704, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM865", 36016, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM866", "UTF-8", 36540, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM866", 36996, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM869", "UTF-8", 37488, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM869", 38004, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACCROATIAN", "UTF-8", 38528, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACCROATIAN", 39360, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACCYRILLIC", "UTF-8", 39884, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACCYRILLIC", 40588, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACGREEK", "UTF-8", 41112, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACGREEK", 41812, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACICELAND", "UTF-8", 42336, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACICELAND", 43052, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACROMAN", "UTF-8", 43576, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACROMAN", 44060, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACROMANIA", "UTF-8", 44584, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACROMANIA", 44960, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACTURKISH", "UTF-8", 45480, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACTURKISH", 45836, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACUKRAINE", "UTF-8", 46360, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACUKRAINE", 46584, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("KOI8-U", "UTF-8", 47108, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "KOI8-U", 47892, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("KOI8-R", "UTF-8", 48416, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "KOI8-R", 48948, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("TIS-620", "UTF-8", 49312, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "TIS-620", 49356, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("CP850", "UTF-8", 49880, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "CP850", 50428, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("CP852", "UTF-8", 29040, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "CP852", 29656, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("CP855", "UTF-8", 30180, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "CP855", 30732, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM720", "UTF-8", 26808, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM720", 27288, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM737", "UTF-8", 27812, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM737", 28300, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM775", "UTF-8", 28824, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM775", 29468, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM852", "UTF-8", 29992, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM852", 30608, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM855", "UTF-8", 31132, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM855", 31684, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM857", "UTF-8", 32200, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM857", 32712, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM860", "UTF-8", 33236, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM860", 33624, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM861", "UTF-8", 34148, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM861", 34460, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM862", "UTF-8", 34984, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM862", 35228, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM863", "UTF-8", 35752, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM863", 36132, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM865", "UTF-8", 36656, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM865", 36968, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM866", "UTF-8", 37492, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM866", 37948, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM869", "UTF-8", 38440, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM869", 38956, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACCROATIAN", "UTF-8", 39480, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACCROATIAN", 40312, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACCYRILLIC", "UTF-8", 40836, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACCYRILLIC", 41540, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACGREEK", "UTF-8", 42064, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACGREEK", 42764, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACICELAND", "UTF-8", 43288, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACICELAND", 44004, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACROMAN", "UTF-8", 44528, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACROMAN", 45012, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACROMANIA", "UTF-8", 45536, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACROMANIA", 45912, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACTURKISH", "UTF-8", 46432, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACTURKISH", 46788, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACUKRAINE", "UTF-8", 47312, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACUKRAINE", 47536, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("KOI8-U", "UTF-8", 48060, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "KOI8-U", 48844, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("KOI8-R", "UTF-8", 49368, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "KOI8-R", 49900, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("TIS-620", "UTF-8", 50264, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "TIS-620", 50308, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("CP850", "UTF-8", 50832, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "CP850", 51380, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("CP852", "UTF-8", 29992, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "CP852", 30608, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("CP855", "UTF-8", 31132, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "CP855", 31684, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "UTF8-MAC", 52420, "Utf8Mac", 1, 4, 9, AsciiCompatibility.CONVERTER, 0) }; public static Transcoder getInstance(String name) { switch (name) { + case "From_CESU_8": return From_CESU_8_Transcoder.INSTANCE; + case "To_CESU_8": return To_CESU_8_Transcoder.INSTANCE; case "Iso2022jp_kddi_decoder": return Iso2022jp_kddi_decoder_Transcoder.INSTANCE; case "Iso2022jp_kddi_encoder": return Iso2022jp_kddi_encoder_Transcoder.INSTANCE; case "Escape_xml_attr_quote": return Escape_xml_attr_quote_Transcoder.INSTANCE; diff --git a/src/org/jcodings/transcode/specific/From_CESU_8_Transcoder.java b/src/org/jcodings/transcode/specific/From_CESU_8_Transcoder.java new file mode 100644 index 00000000..016a3de7 --- /dev/null +++ b/src/org/jcodings/transcode/specific/From_CESU_8_Transcoder.java @@ -0,0 +1,37 @@ +/* + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.jcodings.transcode.specific; + +import org.jcodings.transcode.AsciiCompatibility; +import org.jcodings.transcode.TranscodeFunctions; +import org.jcodings.transcode.Transcoder; + +public class From_CESU_8_Transcoder extends Transcoder { + protected From_CESU_8_Transcoder () { + super("CESU-8", "UTF-8", 148, "CESU8UTF8", 1, 6, 4, AsciiCompatibility.DECODER, 0); + } + + public static final Transcoder INSTANCE = new From_CESU_8_Transcoder(); + + @Override + public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { + return TranscodeFunctions.funSoFromCESU8(statep, s, sStart, l, o, oStart, oSize); + } +} diff --git a/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java b/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java new file mode 100644 index 00000000..b0fb434e --- /dev/null +++ b/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java @@ -0,0 +1,48 @@ +/* + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.jcodings.transcode.specific; + +import org.jcodings.transcode.AsciiCompatibility; +import org.jcodings.transcode.TranscodeFunctions; +import org.jcodings.transcode.Transcoder; + +public class To_CESU_8_Transcoder extends Transcoder { + protected To_CESU_8_Transcoder () { + super("UTF-8", "CESU-8", 240, "UTF8CESU8", 1, 4, 6, AsciiCompatibility.ENCODER, 1); + } + + public static final Transcoder INSTANCE = new To_CESU_8_Transcoder(); + + @Override + public boolean hasStateInit() { + return true; + } + + @Override + public int stateInit(byte[] statep) { + statep[0] = 0; + return 0; + } + + @Override + public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { + return TranscodeFunctions.funSoToCESU8(statep, s, sStart, l, o, oStart, oSize); + } +} diff --git a/test/org/jcodings/specific/TestCESU8.java b/test/org/jcodings/specific/TestCESU8.java new file mode 100644 index 00000000..287ec92a --- /dev/null +++ b/test/org/jcodings/specific/TestCESU8.java @@ -0,0 +1,49 @@ +package org.jcodings.specific; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; + +import org.jcodings.Encoding; +import org.jcodings.constants.CharacterType; +import java.nio.charset.StandardCharsets; +import org.junit.Test; + +public class TestCESU8 { + final Encoding enc = CESU8Encoding.INSTANCE; + + @Test + public void testUnicodeLength6byteChar() throws Exception { + byte[]bytes = "\u00ed\u00a0\u0080\u00ed\u00b0\u0080".getBytes("ISO-8859-1"); + assertEquals(1, enc.strLength(bytes, 0, bytes.length)); + } + + @Test + public void testUnicodeLength() throws Exception { + byte[]bytes = "test\u00C5\u0099".getBytes(); + assertEquals(6, enc.strLength(bytes, 0, bytes.length)); + } + + @Test + public void testUnicodeLengthLong() throws Exception { + byte[]bytes = ("\u00C5\u0099\u00C5\u00A1\u00C4\u009B\u00C5\u0099\u00C5\u00A1\u00C4\u009B\u00C5\u0099\u00C3\u00A9\u00C4" + + "\u009B\u00C3\u00BD\u00C5\u0099\u00C5\u00A1\u00C4\u009B\u00C3\u00A9\u00C4\u009B\u00C3\u00A9\u00C5\u00BE\u00C4\u009B\u00C5\u00A1" + + "\u00C3\u00A9\u00C5\u00BE\u00C4\u009B\u00C5\u00BE\u00C3\u00A9\u00C4\u009B\u00C5\u00A1").getBytes("ISO-8859-1"); + assertEquals(26, enc.strLength(bytes, 0, bytes.length)); + } + + @Test + public void testCodeToMbcLength() throws Exception { + assertEquals(enc.codeToMbcLength(0x01), 1); + assertEquals(enc.codeToMbcLength(0x1F608), 6); + } + + @Test + public void testMbcToCode() throws Exception { + assertEquals('Ø', enc.mbcToCode("mØØse".getBytes("UTF-8"), 1, 3)); + } + + @Test + public void testEncodingLoad() throws Exception { + assertEquals(CESU8Encoding.INSTANCE, Encoding.load("CESU8")); + } +} From 966809640a23f4c3e7f74fb2325a649f5c34089d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Sat, 29 Jan 2022 20:04:25 +0100 Subject: [PATCH 101/158] fix target java version --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index e6850b22..756460e6 100644 --- a/pom.xml +++ b/pom.xml @@ -74,8 +74,6 @@ default-compile - 1.7 - 1.7 module-info.java @@ -84,6 +82,8 @@ UTF-8 + 1.7 + 1.7 From 22407c940d4d965b44eb404a5a5b85c48121e771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Sun, 30 Jan 2022 17:10:33 +0100 Subject: [PATCH 102/158] try actions From a7411b98be3db530268e8f2f5dae521aff934f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Tue, 1 Feb 2022 17:15:37 +0100 Subject: [PATCH 103/158] java 8 target --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 756460e6..64b4a817 100644 --- a/pom.xml +++ b/pom.xml @@ -82,8 +82,8 @@ UTF-8 - 1.7 - 1.7 + 1.8 + 1.8 From 2756ff32494527feab31760a6c959b7264d386d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Tue, 1 Feb 2022 17:20:01 +0100 Subject: [PATCH 104/158] update pom dependencies --- pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index e6850b22..f15aa1cf 100644 --- a/pom.xml +++ b/pom.xml @@ -69,7 +69,7 @@ maven-compiler-plugin - 3.8.0 + 3.8.1 default-compile @@ -88,7 +88,7 @@ maven-jar-plugin - 2.4 + 3.2.0 MANIFEST.MF @@ -97,11 +97,11 @@ maven-resources-plugin - 2.6 + 3.2.0 maven-surefire-plugin - 2.22.0 + 3.0.0-M5 -Dfile.encoding=UTF-8 @@ -135,7 +135,7 @@ maven-source-plugin - 2.2.1 + 3.2.1 attach-sources From 49fa411ba81c724dbfe3c1b570326baccee457fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Tue, 8 Feb 2022 20:52:39 +0100 Subject: [PATCH 105/158] replace deprecated ErrorMessage with EncodingError --- src/org/jcodings/Encoding.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/org/jcodings/Encoding.java b/src/org/jcodings/Encoding.java index 11bb9ba1..c537e144 100644 --- a/src/org/jcodings/Encoding.java +++ b/src/org/jcodings/Encoding.java @@ -24,6 +24,7 @@ import org.jcodings.ascii.AsciiTables; import org.jcodings.constants.CharacterType; import org.jcodings.exception.EncodingException; +import org.jcodings.exception.EncodingError; import org.jcodings.exception.ErrorMessages; import org.jcodings.exception.InternalException; import org.jcodings.util.BytesHash; @@ -147,7 +148,7 @@ Encoding replicate(byte[]name) { clone.index = count++; return clone; } catch (CloneNotSupportedException cnse){ - throw new EncodingException(ErrorMessages.ERR_COULD_NOT_REPLICATE, new String(name)); + throw new EncodingException(EncodingError.ERR_COULD_NOT_REPLICATE, new String(name)); } } From c2346afe043f87eb81889daf3ee2305bcb79eedf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Tue, 8 Feb 2022 20:55:12 +0100 Subject: [PATCH 106/158] show backtraces by default --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 70df4cf7..400d1374 100644 --- a/pom.xml +++ b/pom.xml @@ -104,6 +104,7 @@ 3.0.0-M5 -Dfile.encoding=UTF-8 + false From 0a6a702f5416718d72895452190450819c086f8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Tue, 8 Feb 2022 21:04:54 +0100 Subject: [PATCH 107/158] generate specific transcoders headers from sources --- scripts/generate.rb | 21 ++++++++++++++++++- .../Escape_xml_attr_quote_Transcoder.java | 2 +- .../specific/From_CESU_8_Transcoder.java | 2 +- .../specific/From_UTF8_MAC_Transcoder.java | 2 +- .../specific/To_CESU_8_Transcoder.java | 2 +- .../Universal_newline_Transcoder.java | 2 +- 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index e630df29..d2900f3f 100755 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -92,6 +92,7 @@ def generate_encoding_list def generate_transcoder_list generic_list = [] + specific_list = [] transcoder_list = [] Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.sort.each do |trans_file| @@ -108,7 +109,11 @@ def generate_transcoder_list state_size = "0" if state_size == "sizeof(struct from_utf8_mac_status)" generic = funcs.all?{|f|f == "NULL" || f == "0"} - generic_list << [src, dst, tree_start, "\"#{name}\"", iul, max_in, max_out, "AsciiCompatibility.#{conv.split('_').last.upcase}", state_size] if generic + if generic + generic_list << [src, dst, tree_start, "\"#{name}\"", iul, max_in, max_out, "AsciiCompatibility.#{conv.split('_').last.upcase}", state_size] + else + specific_list << [t_name, src, dst, tree_start, "\"#{name}\"", iul, max_in, max_out, "AsciiCompatibility.#{conv.split('_').last.upcase}", state_size] + end transcoder_list << [src, dst, t_name, !generic] end @@ -118,6 +123,20 @@ def generate_transcoder_list sub(/%\{generic\}/, generic_list.map{|g| "#{INDENT*2}new GenericTranscoderEntry(#{g.join(', ')})"}.join(",\n")). sub(/%\{switch\}/, transcoder_list.map{|src, dst, cls, specific| "#{INDENT*3}case \"#{cls}\": return #{cls}_Transcoder.INSTANCE;" if specific}.compact.join("\n")) + generate_specific_transcoder_data(specific_list) +end + +def generate_specific_transcoder_data(specific_list) + specific_list.each do |transcoder| + path = "#{SRC_DIR}/transcode/specific/#{transcoder[0]}_Transcoder.java" + next unless File.exist?(path) + + content = open(path, "rb"){ |f| f.read } + if content.match("super\\((.*)\\);") + content.sub!($1, transcoder[1..-1].join(", ")) + open(path, "wb") << content + end + end end def generate_transoder_data diff --git a/src/org/jcodings/transcode/specific/Escape_xml_attr_quote_Transcoder.java b/src/org/jcodings/transcode/specific/Escape_xml_attr_quote_Transcoder.java index c4d767f8..c6d5eb24 100644 --- a/src/org/jcodings/transcode/specific/Escape_xml_attr_quote_Transcoder.java +++ b/src/org/jcodings/transcode/specific/Escape_xml_attr_quote_Transcoder.java @@ -25,7 +25,7 @@ public class Escape_xml_attr_quote_Transcoder extends Transcoder { protected Escape_xml_attr_quote_Transcoder () { - super("", "xml_attr_quote", 72, "Escape", 1, 1, 7, AsciiCompatibility.ENCODER, 1); + super("", "xml_attr_quote", 76, "Escape", 1, 1, 7, AsciiCompatibility.ENCODER, 1); } public static final Transcoder INSTANCE = new Escape_xml_attr_quote_Transcoder(); diff --git a/src/org/jcodings/transcode/specific/From_CESU_8_Transcoder.java b/src/org/jcodings/transcode/specific/From_CESU_8_Transcoder.java index 016a3de7..c3cf5e0b 100644 --- a/src/org/jcodings/transcode/specific/From_CESU_8_Transcoder.java +++ b/src/org/jcodings/transcode/specific/From_CESU_8_Transcoder.java @@ -25,7 +25,7 @@ public class From_CESU_8_Transcoder extends Transcoder { protected From_CESU_8_Transcoder () { - super("CESU-8", "UTF-8", 148, "CESU8UTF8", 1, 6, 4, AsciiCompatibility.DECODER, 0); + super("CESU-8", "UTF-8", 148, "Cesu8", 1, 6, 4, AsciiCompatibility.DECODER, 0); } public static final Transcoder INSTANCE = new From_CESU_8_Transcoder(); diff --git a/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java b/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java index c6518fd0..73331563 100644 --- a/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java +++ b/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java @@ -25,7 +25,7 @@ public class From_UTF8_MAC_Transcoder extends Transcoder { protected From_UTF8_MAC_Transcoder () { - super("UTF8-MAC", "UTF-8", 52544, "Utf8Mac", 1, 4, 10, AsciiCompatibility.ENCODER, 24); + super("UTF8-MAC", "UTF-8", 52544, "Utf8Mac", 1, 4, 10, AsciiCompatibility.ENCODER, 0); } public static final Transcoder INSTANCE = new From_UTF8_MAC_Transcoder(); diff --git a/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java b/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java index b0fb434e..ce5824a5 100644 --- a/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java +++ b/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java @@ -25,7 +25,7 @@ public class To_CESU_8_Transcoder extends Transcoder { protected To_CESU_8_Transcoder () { - super("UTF-8", "CESU-8", 240, "UTF8CESU8", 1, 4, 6, AsciiCompatibility.ENCODER, 1); + super("UTF-8", "CESU-8", 240, "Cesu8", 1, 4, 6, AsciiCompatibility.ENCODER, 0); } public static final Transcoder INSTANCE = new To_CESU_8_Transcoder(); diff --git a/src/org/jcodings/transcode/specific/Universal_newline_Transcoder.java b/src/org/jcodings/transcode/specific/Universal_newline_Transcoder.java index 3bdd573f..c4a347dc 100644 --- a/src/org/jcodings/transcode/specific/Universal_newline_Transcoder.java +++ b/src/org/jcodings/transcode/specific/Universal_newline_Transcoder.java @@ -26,7 +26,7 @@ public class Universal_newline_Transcoder extends Transcoder { protected Universal_newline_Transcoder() { - super("", "universal_newline", universal_newline, "Newline", 1, 1, 2, AsciiCompatibility.CONVERTER, 2); + super("", "universal_newline", 4, "Newline", 1, 1, 2, AsciiCompatibility.CONVERTER, 2); } private static final int universal_newline = Transcoding.WORDINDEX2INFO(1); From 138ff348216e0e09f234ededcda8895bf377e6f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Tue, 8 Feb 2022 21:17:56 +0100 Subject: [PATCH 108/158] fix formatting --- src/org/jcodings/transcode/TranscodeFunctions.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/jcodings/transcode/TranscodeFunctions.java b/src/org/jcodings/transcode/TranscodeFunctions.java index 67e0f49a..c023d54e 100644 --- a/src/org/jcodings/transcode/TranscodeFunctions.java +++ b/src/org/jcodings/transcode/TranscodeFunctions.java @@ -12,7 +12,7 @@ public class TranscodeFunctions { public static final int LE = 2; public static int funSoToCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - long scalar = ((s[0]&0x07)<<18) | ((s[1]&0x3F)<<12) | ((s[2]&0x3F)<< 6) | (s[3]&0x3F); + long scalar = ((s[0] & 0x07) << 18) | ((s[1] & 0x3F) << 12) | ((s[2] & 0x3F) << 6) | (s[3] & 0x3F); scalar -= 0x10000; o[0] = (byte)0xED; o[1] = (byte)(0xA0 | (scalar >> 16)); @@ -24,7 +24,7 @@ public static int funSoToCESU8(byte[] statep, byte[] s, int sStart, int l, byte[ } public static int funSoFromCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - long scalar = ( ((s[1]&0x0F)<<16) | ((s[2]&0x3F)<<10) | ((s[4]&0x0F)<< 6) | (s[5]&0x3F)) + 0x10000; + long scalar = (((s[1] & 0x0F) << 16) | ((s[2] & 0x3F) << 10) | ((s[4] & 0x0F) << 6) | (s[5] & 0x3F)) + 0x10000; o[0] = (byte)(0xF0 | (scalar >> 18)); o[1] = (byte)(0x80 | ((scalar >> 12) & 0x3F)); o[2] = (byte)(0x80 | ((scalar >> 6) & 0x3F)); From f7f919ef2a50618c2a641f84f8f927fdfd62ffd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Wed, 9 Feb 2022 02:42:57 +0100 Subject: [PATCH 109/158] improve test for jp --- .../org/jcodings/transcode/TestCP51932ToCP50220.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/test/org/jcodings/transcode/TestCP51932ToCP50220.java b/test/org/jcodings/transcode/TestCP51932ToCP50220.java index b1316136..b57feb6b 100644 --- a/test/org/jcodings/transcode/TestCP51932ToCP50220.java +++ b/test/org/jcodings/transcode/TestCP51932ToCP50220.java @@ -2,15 +2,23 @@ import org.jcodings.Ptr; import org.junit.Test; +import org.junit.Assert; +import java.util.Arrays; public class TestCP51932ToCP50220 { @Test - public void test2() { - byte[] src = {0, 127, -114, -95, -114, -2, -95, -95, -95, -2}; + public void testCP51932ToCP50220() throws Exception { + byte[] src = "\u0000\u007F\u008E\u00A1\u008E\u00FE\u00A1\u00A1\u00A1\u00FE".getBytes("iso-8859-1"); byte[] dst = new byte[100]; Ptr srcPtr = new Ptr(0); Ptr dstPtr = new Ptr(0); EConv econv = TranscoderDB.open("CP51932", "CP50220", 0); econv.convert(src, srcPtr, src.length, dst, dstPtr, dst.length, 0); + + byte[] str = Arrays.copyOf(dst, dstPtr.p); + + byte[] expected = "\u0000\u007F\u001B\u0024\u0042\u0021\u0023\u0050\u0000\u0021\u0021\u0021\u007E\u001B\u0028\u0042".getBytes("iso-8859-1"); + byte[] actual = Arrays.copyOf(dst, dstPtr.p); + Assert.assertEquals(new String(expected), new String(actual)); } } From f0836b37838c23e8096c299ef519622e65b5a091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Thu, 10 Feb 2022 02:21:14 +0100 Subject: [PATCH 110/158] update to unicode 13 --- resources/tables/CR_Age_13_0.bin | Bin 0 -> 5496 bytes resources/tables/CR_Alnum.bin | Bin 5728 -> 5864 bytes resources/tables/CR_Alpha.bin | Bin 5440 -> 5568 bytes resources/tables/CR_Arabic.bin | Bin 464 -> 464 bytes resources/tables/CR_Armenian.bin | Bin 48 -> 40 bytes resources/tables/CR_Assigned.bin | Bin 5336 -> 5424 bytes resources/tables/CR_Bopomofo.bin | Bin 32 -> 32 bytes resources/tables/CR_C.bin | Bin 5352 -> 5440 bytes resources/tables/CR_Case_Ignorable.bin | Bin 3216 -> 3288 bytes resources/tables/CR_Cased.bin | Bin 1128 -> 1136 bytes resources/tables/CR_Chakma.bin | Bin 24 -> 24 bytes .../tables/CR_Changes_When_Casefolded.bin | Bin 4904 -> 4920 bytes .../tables/CR_Changes_When_Casemapped.bin | Bin 992 -> 1000 bytes .../tables/CR_Changes_When_Lowercased.bin | Bin 4800 -> 4816 bytes .../tables/CR_Changes_When_Titlecased.bin | Bin 4928 -> 4952 bytes .../tables/CR_Changes_When_Uppercased.bin | Bin 4936 -> 4960 bytes resources/tables/CR_Chorasmian.bin | Bin 0 -> 16 bytes resources/tables/CR_Cn.bin | Bin 5336 -> 5424 bytes resources/tables/CR_Common.bin | Bin 1384 -> 1392 bytes resources/tables/CR_Dash.bin | Bin 176 -> 184 bytes resources/tables/CR_Diacritic.bin | Bin 1376 -> 1416 bytes resources/tables/CR_Digit.bin | Bin 480 -> 496 bytes resources/tables/CR_Dives_Akuru.bin | Bin 0 -> 72 bytes resources/tables/CR_Emoji.bin | Bin 1216 -> 1224 bytes resources/tables/CR_Emoji_Modifier_Base.bin | Bin 296 -> 312 bytes resources/tables/CR_Emoji_Presentation.bin | Bin 656 -> 656 bytes resources/tables/CR_Extended_Pictographic.bin | Bin 624 -> 632 bytes resources/tables/CR_Extender.bin | Bin 256 -> 264 bytes resources/tables/CR_Graph.bin | Bin 5376 -> 5464 bytes resources/tables/CR_Grapheme_Base.bin | Bin 6560 -> 6680 bytes .../CR_Grapheme_Cluster_Break_Extend.bin | Bin 2696 -> 2768 bytes .../CR_Grapheme_Cluster_Break_Prepend.bin | Bin 96 -> 112 bytes .../CR_Grapheme_Cluster_Break_SpacingMark.bin | Bin 1224 -> 1280 bytes resources/tables/CR_Grapheme_Extend.bin | Bin 2688 -> 2760 bytes resources/tables/CR_Grapheme_Link.bin | Bin 424 -> 440 bytes resources/tables/CR_Han.bin | Bin 144 -> 160 bytes resources/tables/CR_ID_Continue.bin | Bin 5712 -> 5848 bytes resources/tables/CR_ID_Start.bin | Bin 4880 -> 4984 bytes resources/tables/CR_Ideographic.bin | Bin 136 -> 160 bytes ..._In_CJK_Unified_Ideographs_Extension_G.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Chorasmian.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Dives_Akuru.bin | Bin 0 -> 16 bytes .../tables/CR_In_Khitan_Small_Script.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Lisu.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Lisu_Supplement.bin | Bin 0 -> 16 bytes resources/tables/CR_In_No_Block.bin | Bin 432 -> 440 bytes .../CR_In_Symbols_for_Legacy_Computing.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Tangut_Supplement.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Yezidi.bin | Bin 0 -> 16 bytes resources/tables/CR_Inherited.bin | Bin 232 -> 232 bytes resources/tables/CR_Khitan_Small_Script.bin | Bin 0 -> 24 bytes resources/tables/CR_L.bin | Bin 4880 -> 4984 bytes resources/tables/CR_LC.bin | Bin 1056 -> 1064 bytes resources/tables/CR_Latin.bin | Bin 264 -> 264 bytes resources/tables/CR_Lisu.bin | Bin 16 -> 24 bytes resources/tables/CR_Ll.bin | Bin 5144 -> 5168 bytes resources/tables/CR_Lm.bin | Bin 488 -> 496 bytes resources/tables/CR_Lo.bin | Bin 3816 -> 3920 bytes resources/tables/CR_Lower.bin | Bin 5200 -> 5224 bytes resources/tables/CR_Lu.bin | Bin 5096 -> 5112 bytes resources/tables/CR_M.bin | Bin 2248 -> 2328 bytes resources/tables/CR_Malayalam.bin | Bin 72 -> 64 bytes resources/tables/CR_Mc.bin | Bin 1352 -> 1408 bytes resources/tables/CR_Mn.bin | Bin 2552 -> 2624 bytes resources/tables/CR_N.bin | Bin 1048 -> 1072 bytes resources/tables/CR_Newa.bin | Bin 32 -> 24 bytes resources/tables/CR_No.bin | Bin 568 -> 576 bytes resources/tables/CR_Oriya.bin | Bin 120 -> 120 bytes resources/tables/CR_Other_Alphabetic.bin | Bin 1776 -> 1848 bytes resources/tables/CR_Other_Grapheme_Extend.bin | Bin 200 -> 208 bytes resources/tables/CR_Pd.bin | Bin 144 -> 152 bytes resources/tables/CR_Po.bin | Bin 1440 -> 1456 bytes resources/tables/CR_Print.bin | Bin 5352 -> 5440 bytes resources/tables/CR_Punct.bin | Bin 1464 -> 1488 bytes resources/tables/CR_S.bin | Bin 1816 -> 1840 bytes resources/tables/CR_Sentence_Terminal.bin | Bin 600 -> 616 bytes resources/tables/CR_Sharada.bin | Bin 24 -> 16 bytes resources/tables/CR_Sinhala.bin | Bin 112 -> 112 bytes resources/tables/CR_Sk.bin | Bin 240 -> 248 bytes resources/tables/CR_So.bin | Bin 1448 -> 1464 bytes resources/tables/CR_Syloti_Nagri.bin | Bin 16 -> 16 bytes resources/tables/CR_Tangut.bin | Bin 32 -> 40 bytes resources/tables/CR_Terminal_Punctuation.bin | Bin 824 -> 840 bytes resources/tables/CR_Unified_Ideograph.bin | Bin 120 -> 128 bytes resources/tables/CR_Unknown.bin | Bin 5320 -> 5408 bytes resources/tables/CR_Upper.bin | Bin 5136 -> 5152 bytes resources/tables/CR_Word.bin | Bin 5736 -> 5864 bytes resources/tables/CR_XID_Continue.bin | Bin 5768 -> 5904 bytes resources/tables/CR_XID_Start.bin | Bin 4936 -> 5040 bytes resources/tables/CR_XPosixPunct.bin | Bin 1424 -> 1448 bytes resources/tables/CR_Yezidi.bin | Bin 0 -> 32 bytes resources/tables/CaseFold.bin | Bin 18328 -> 18364 bytes resources/tables/CaseUnfold_11.bin | Bin 16348 -> 16384 bytes scripts/generate.rb | 2 +- .../jcodings/unicode/UnicodeCodeRange.java | 32 +++++++++++++++--- 95 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 resources/tables/CR_Age_13_0.bin create mode 100644 resources/tables/CR_Chorasmian.bin create mode 100644 resources/tables/CR_Dives_Akuru.bin create mode 100644 resources/tables/CR_In_CJK_Unified_Ideographs_Extension_G.bin create mode 100644 resources/tables/CR_In_Chorasmian.bin create mode 100644 resources/tables/CR_In_Dives_Akuru.bin create mode 100644 resources/tables/CR_In_Khitan_Small_Script.bin create mode 100644 resources/tables/CR_In_Lisu.bin create mode 100644 resources/tables/CR_In_Lisu_Supplement.bin create mode 100644 resources/tables/CR_In_Symbols_for_Legacy_Computing.bin create mode 100644 resources/tables/CR_In_Tangut_Supplement.bin create mode 100644 resources/tables/CR_In_Yezidi.bin create mode 100644 resources/tables/CR_Khitan_Small_Script.bin create mode 100644 resources/tables/CR_Yezidi.bin mode change 100755 => 100644 scripts/generate.rb diff --git a/resources/tables/CR_Age_13_0.bin b/resources/tables/CR_Age_13_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..cd9054ba74dac7e0bc10c3ba03de0e4c32778e16 GIT binary patch literal 5496 zcmXZg3v^vonE>Fulcr7XIrk>q+a|eb(uAP`Lm#GqJmi&81T71#f?x*=aYSHRr4?Dg zxYTAw2M{Sl9Ca#4!+`W9m@-gtC>T@(VJLw%EihElaTcqHgixT(!zT0Pa#`!+U-z7S z_x}HX?{jljL#SF7LdE@|^k3z*Ayj^y)qIDWxVh{W@hs9Xvq2}BC zD{`)pOHDUFU;~@z<$*HatN9h%_#Nh`d5UM)&hD~T#67&qpLmUl5HgWUs>q<8OdSP| z<`~qFIhN!25GQaFCv$3<8Z#f^Y(CC8=t<_&W%`@>JnApGOuUAFM!gyJX4atIjNWI| zn^A8@y&3gp)SLNF9zwkt^=6(xy_r9t-psS~mko;Q%&0T-Hls|2kf=9NZ=&8LMZJl7 z6ZIzQP1KvHH&Jh*-bB5LIums!XQIADeTn)K^(CL>Le!QxgUKa)5%nd`Ve&7iFHv7| z6V6}K&29XUwfuxT%I*}`aX0s%2Z0XeSZ2S{KOyh*E$mskKZLCOv+~c%KP&&N{Il}S z$~P&Q)UqxP7 zd1a?^@;i`oj&dL73_RC4>*efq?mK1Ii#MT1xx4vU*?Q61IqT;1C1>pty~*iI&OYW| z;uWl0tNvPNuJ#jrnXmF=)}pty&O_~gvz?bi(4tWH1fGi$bJk5UZ(hIh`jtPICD`A* z{VlP_dFMCZ$&JW8zlLslc>sHwe;8}#`cGxR{SFoTu@6P( zx@k7%YPy(C)ZgT6Hhq_F*3!d$_HwA+(sMWt8y{TJ1xt2DG}^+Q!Fl7Fx~GYMs^#Sz30HIAvMcCE_=c zN9%)Z#kp;DZd-S-i~nH{o{v_~N9(&BU?K#|g|^Hd+i(bn z8-MusaDVQRbl}X+?F?a_{hfCWKjgwENtC27iZj z+l_6X3}I0f1}|EKzAWm-@8BZeJ9Z9jA*{3aJ-&a>&A5M$eD3KF;of<4a4>}R?yuL! z^`6J|Pvb0am`^(=W88*o>Ea30vf(8LL)ds8m*Bi@bbsTsJcs)m)wppYgiV1H=-^zI zu$0eZ%}vh0rUM~tj!dV99EVX)8%J_93z6666|CY-h8Ydv=hoTn_i}eH>fHSd`lsDt z>?;^QCNG!5xOK)0G~jHH%WwQ7PUZBn4pGm?KZ<8}{45@4M+k@P$Dt+M%56MJKZin4 za+oO6hW(v5pUb!cc~8h=!dafU2KzHH`Myc@PdME+sGUA6&PxVRYLy10A`(E{h+{t==!65s2m-moE&1_mZ8Q&}E z5`W1yp5uiOz5hnt4&iy*)sO~e^le*PB&a-9x;y#8M4bkHp4?7-vcG%f0 z;TpPlmA&YB-njf>=w1GF+|OUnjb%59Yq%BXCa-6C`FppB`9EX5y!AZJv0y(6_M>1g z3boW>-onuwLp#TE9C}>Pm%=HWi5v_1SU3lD7M7GbFNG<~a2^Yn@nu$Vb%-;qJM$vk zpZNvkKl4fYc`3wMKF@lHhuIUNpR`zSy?XQ4FQpUn)f-oDOno1J2+>bdY-pl|d9-sz zh>fl{%DJ%z``kDgV$u04)|9EesOI7<>S;u+#S=LR-z}bn^^4Xony0v)P3-1n{x8HP z>on;}lW|S|K_4R_HoM+jO$K}0Y|iG7VO+C1npa`3ns39r&GxE!YlwbkV~adne78le zEeXEg;@K$ioVJ{X8e6Q}V!jsnwRG|&F6RoC<9Dj18_z?_5BPU_u-2SG_0dH@7Rq4}3JlcGr(zNIPme)917F=?ZbV&&xZwm`?r?b1e59Ebr${ zhIubUKk;#eeymu6{8u;|E1ZiJ&d!Q!`6l{vrTMP>Nr)?rU%8l1aRctHT*n~xVWoLj z%72w{HyjM{M)Br>5Z8!n^s-mnG6(Bz@oa9n6usKAD#QoIL)_;6Ha*+s^R{o$#f@~M zAKUzvY`Z(ee&hP(|GfD8k^C+DLiFb+zM!5L26-n$fBxc*3+Uv!5O?~#^L$*}X|A1j zBLAJvOv%s0d$Bh=f6o2%S`HNMvVg}_JT&DC`~#PkT`oFbL!SMitGJqL`6ryWp>LISiQmOu4BgIM zICn$#YG@;yd4yq{_hJ1Qo`=2ZllV-T2DF z;!rsiCnv)+ahg~qR*BQa>EaA=hFC3Di#1}6m=QB#A|_%greapiiaBqY?`soRzyHr3 N@vV?^zix8!{{bUNRM`Lk literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Alnum.bin b/resources/tables/CR_Alnum.bin index 2ddcbc5c58d58672b8f7fd3b254a9a441fdc4087..0d05c34a811dfd6c56f173187f0cd945eb385313 100644 GIT binary patch delta 297 zcmXZX!7Bt|7zXg?{ic~lyX}X`WJcM8ivvlKElTZWOVJ(_j*d>Vf5Iwd4)*ljk;6)q z*~Wp>N=iA%#f{>&#}$%Bcn%J~p7*J@-rnc2&bSNM7l3+fxu+sG>A6IfnXs2-Gu^U( zloPgr@G`BtZ542w?9wkV1z?eViMjV}R&y)%EpYf@&T^S-q)Glt`Gq>9a74#+LJ74@ zO%K_e^tFj~MJncAkI0>Q*Ke|JI=#E)z<~rk|MEW=48B_#82o_r{P&Y1xWieGF)%FuK6wlGZ^rb^8+Z;eiSaWqF!IX) zu{snR0BP6BEBM_R-6ntFS7y90Sw!G7WBg_+%5dv-c|xET46Xz*W#%~OGjRH8YWrv+M~WvbDtOR`G* t3J+8go8+2faSsxIKn?&o`GTCXXRnY3+c0itq@(1`mI_q^kI#7d%|AgEK|TNg delta 174 zcmX@0eL#zYfq~VZfq`lHMvnE2jC(ilV6W=48B_#82o_r{P&X|aK*D8V_;bReXx5*y-%9D%vpD@Nxju5D0lK8(_K#+-XvXsySz5<}O_U{ag9YDJ4 R)8-RG$C((fO`agC0RUNfE&Kog diff --git a/resources/tables/CR_Arabic.bin b/resources/tables/CR_Arabic.bin index 353e1dec05a6c2cfabd9829b5d18af6fb15bc825..26666f5d0376adbba0617f59c2abcadaf01b648e 100644 GIT binary patch delta 12 Tcmcb>e1UmFKI8F?1qqA*B5wrn delta 12 Tcmcb>e1UmFKI7hv1qqA*B0U7= diff --git a/resources/tables/CR_Armenian.bin b/resources/tables/CR_Armenian.bin index 42b8d988306a47b4b4caab1e07b34045eb3f07a4..3e776cfb7054a4b2ab7377184b37ebe7e6818d10 100644 GIT binary patch literal 40 mcmZQzVBln6U|?ZjU^N8dFd&Wu;w~WW1>$}NhTp>SuO?f diff --git a/resources/tables/CR_Assigned.bin b/resources/tables/CR_Assigned.bin index 61f896c46ffbc3f56aa47d94e15460b77d5d5e1e..65c8c14084e1bc74280d419b0a64cc4fbc1d70b0 100644 GIT binary patch delta 457 zcmXZZPbkA-7zgm@+01^w*k*0UO3aBN811 zR=@Qt*DV*?E-PV?T2U?zb1?gN@I5$udfvXh&-1=-Z_cUoNJP3RBF*`sl;pd_y~;eN z1~tnpKD9%-)r21f1m#CG{#BdP_O!3M1`3?txyF_-`hwEIQQ_^QJ}9g0v)$<7brwE}z-uj4wq zzrTkQGFGLrq~*BoPe_E)7N?5f0)~*isxp)F1@? zAtH(&K}7$ikRS-6kZKSd3$lnrm--G3AHHzh9mgGYl_ENkyPrtgSkf`;qvk4DV2dh6J3! z?mFh`9x!1R<^ZSE7hnsvVIL0RR#HxT2px@iKu04BIaq-;(g?5Jd6JS75yKz;1CAnX A*8l(j diff --git a/resources/tables/CR_Bopomofo.bin b/resources/tables/CR_Bopomofo.bin index c2fd7a7e0333d419eee3f5775d680fa3fe0c018a..2b59dfb060e6f711d77d2fc427aef714512f2a2e 100644 GIT binary patch delta 6 NcmY#Tm>|!%9{>cz0k8l7 delta 6 NcmY#Tm>|!%3jhSa0jmH2 diff --git a/resources/tables/CR_C.bin b/resources/tables/CR_C.bin index 46d08db061ff405f5262d9f84c1919be17849ce9..ced4d6c7bd5ff14679e40b0cf8ba2a9b5257e59e 100644 GIT binary patch delta 482 zcmXZXJxD@P7zW_)yK3F5`GpO76PZFpQg&Ca@Li#L!5mf( zq-7Qs<2Y}s(?(U|8@1jw#k?m*}jrsm%+G0rYD zhsVHqQFi&A&%}*4_yk;Pv_+45CW*2phH2vX&$_ORgjN`$unKWl1B}$#fFz_~2aW+f tts-2(E!@Ksp!ZkkO2`_th&7F*qgRr|xx3FLVP$a5k&QI6@fSHX?GIMbkG22+ delta 417 zcmXZWF-QV&6bA73t~2hiQx8tuls1b%ilU;Sp}&sd$B2!#xsG|U zJA6V7e#Nvgl|rrA z)3JhV!z0Z#IE6E~gd9A=6LBjFaaacIw^jk2);gqM6ZYVc*s@4Ee*@&r2uzZ6>jfW4 Tr4y2b*X^`B$RY>V$z@r8(N2J~ diff --git a/resources/tables/CR_Case_Ignorable.bin b/resources/tables/CR_Case_Ignorable.bin index f56d4b21368fcd00439531dea540caa4edb42cdd..873143526bd18f3fb32b88f236b1b3e6da67b5f4 100644 GIT binary patch delta 126 zcmbOrc|($efq~hSfq`+>M2>FOcm@X6_>B`TGctxwPGQ>4+Q`7b+qhYR`8^}!fz2GO z&P=R23=AuDCVQ|yX3b<^Se-ptgX0q$-)aU%zBQ92IIGwM&oeLzp5HuyQ<_oKnt@T$ Y28ivT*cnJWZ(hMA&dB&=@&WD(0PkNPj{pDw delta 66 zcmV-I0KNa%8ITzW0009c0004zkqC>io6rFPR+DT3x3en)>;VD3vlsj4FCWD diff --git a/resources/tables/CR_Cased.bin b/resources/tables/CR_Cased.bin index 21714e4b28de35b13040d4acce2281584d46bc6e..7599c2cafb15bfadb9b3f3690b01ee819690b350 100644 GIT binary patch delta 38 tcmaFC@qvSbfq_w)fq|iSBgb_n&QlBw%fABgx5*Ef#2GU-|6nR$1OV7h3`+n2 delta 47 xcmeys@q&Ycfq_wyfq|iCBgb_n$zu!*%YOjzF9wFy20$DI#4$jezKOYj5db|yR4gdq(0U!VX delta 6 Ncmb1;m>|yR1^@%w0UrPW diff --git a/resources/tables/CR_Changes_When_Casefolded.bin b/resources/tables/CR_Changes_When_Casefolded.bin index 6d9c273e7250178549e7c0210a4cd8e225faac5a..44b80e22326686d56ae42213eb55b6037b9746ec 100644 GIT binary patch delta 39 ocmZ3XwnL4Bfq~^L0|QgqMvn7Bg2x#cmY;;;uR!|iWMF0Q* delta 23 fcmdm?wnB}Afq~^D0|QgaMvn7BjK?Ow5DEYQO)3W_ diff --git a/resources/tables/CR_Changes_When_Casemapped.bin b/resources/tables/CR_Changes_When_Casemapped.bin index a30c67c409327ac2e97dcddb6a2c15ff393cfd5f..9393bd6f284bdec99fe78a135d739e336522f8cb 100644 GIT binary patch delta 31 kcmaFB{(_x@fq~&C5Z7$vNN46e#lW!qD-eI1T)fq~&W5La*HNM~j|Ho1bi002*12DtzL diff --git a/resources/tables/CR_Changes_When_Lowercased.bin b/resources/tables/CR_Changes_When_Lowercased.bin index ea29701be2134ed0b003880a9496ed8588866934..a6eeb60dd25dbf4bbab710f5e9155826bc7d21aa 100644 GIT binary patch delta 39 ocmX@0dO?+gfq`W+0|Qg!Mvi(R!Q%`J%TGe_S0Md$a)*!w0O6htlmGw# delta 23 fcmcbhdO($ffq`W`0|Qg|Mvi(R#$%Ib2w4CCOM?b= diff --git a/resources/tables/CR_Changes_When_Titlecased.bin b/resources/tables/CR_Changes_When_Titlecased.bin index e0eab6568ec7bc4b17ebf6eacf2d4847f9c1ee10..ddabc63f6a6b7dfa2d8f51310f4b4e7cc3190e17 100644 GIT binary patch delta 44 qcmX@0c0-MWfq~^J0|QgmMvg~9V#`l3Fo5wXAPvIbKzQ;Cp$Gs!;1ARQ delta 21 ccmcbic0i4Tfq~^b0|Qg~Mvg~9lbM9W07BaZ)Bpeg diff --git a/resources/tables/CR_Changes_When_Uppercased.bin b/resources/tables/CR_Changes_When_Uppercased.bin index 6102e21fa2b57e4884cd0d10b56061ca3a369c05..f4a0cc2683cd8cfc8e7b459df166f2c39daab1dc 100644 GIT binary patch delta 44 qcmX@1_CSq;fq~^Z0|Qg`MvhlPV#`l3Fo5wXAPvIbKzQ;8p$Gs&_z(90 delta 21 ccmaE$c0!GVfq~^B0|QgWMvhlPlevV$07Qlb_W%F@ diff --git a/resources/tables/CR_Chorasmian.bin b/resources/tables/CR_Chorasmian.bin new file mode 100644 index 0000000000000000000000000000000000000000..08384fe4945334c6c4c56be44b2802c527f7faec GIT binary patch literal 16 VcmZQzU|?ooU|?im;O@&jx zh-G(ZXppEOP-rMhFlwmA5JJQZu~)jo!^=6G^Pck+2hIm&B4dC^I@pn~_%3^^F^9Cc zG|S@M;N?}VyG@h$S}U{4N;LjN}lMbLUimF!%B+h zwSqFoysvr9C3Yu>t*5#S@(eDZNo?x}4}<~xwu0!f_$`yf_8`O{A>x(?B|@yW%!r6J z<}(pHW#|AisJbp>%b3oG90xz3&lwhv){+tLxUwQ`%k_Q|N6YXH_)W3~$jv7}ZYkPI zr_I0_vFGsEi^SD8_ySz2HpGi#B7w3RhNX(p%8@PvOK<}^6<&kBm6E~YA9lnwz*3~|fgq6V&5NUPz4~U450{{R3 delta 410 zcmXZWK`4W97zXh7{q~J-@%i@U+f9~oz|^9aql3dvYYuZ+igMt>N@^3eiVNMQ|>zktD?QMUu}b4~|vy0)2_$;QvNL|ofc zs>M6x{h$|x^sx_0&5CxA$b-b}#zPv>nJ$o|L2c@hNdw|0;U*c=l;*T0c9J~>bfhcY WASt`)l2&x0kYebNzr2nT59`2|K_!2V3f22VrLMZ Tyn`i*E&l@pWB$j<0;~Z51ziwu delta 34 qcmeC+e!#`Sz`z*Jz`(G2BS$df=48eUrpcF?e@wp350EW@uBFZ8W2N7jATiyR6zQOQ%lAV74@h1-u zTLG~R5W51gI}ld@aTO4s2I8|o{GWmGR{;>005MSR7f|k30}!_X@dO}V0mK`CcpDHO N0OCVHd;y5B0RWsHGL--T delta 134 zcmX@Xd4Q9Hfq_w924wqQ}u{Kdfd{Q(faW?=lu3&d7HYy-ru zKk#AQHS1;mShcqtIC0^)T*dDJc6A(`T G;;8_|Ausv> diff --git a/resources/tables/CR_Emoji_Modifier_Base.bin b/resources/tables/CR_Emoji_Modifier_Base.bin index 1063fa48f74da2c37af2b69ac3bf82d6a4633f6b..fa63f987f76e6332f73f99729d443a10acd8056e 100644 GIT binary patch delta 34 ncmZ3%w1bI*fq}snh}9-?TxR8AVEoB5@rE{QIgn94iBSUpgWCw7 delta 23 dcmdnNw1SC)fq}sjh*c(XT%Pz?W3n)#DgZuh1+D-9 diff --git a/resources/tables/CR_Emoji_Presentation.bin b/resources/tables/CR_Emoji_Presentation.bin index 91a1dcb705567b0f9ebbcd86890efe89e46d6a83..9989ea296e37f7db4ba7b83d7efcc68166975eae 100644 GIT binary patch delta 129 zcmWN`p$T4GE8pjgGd>EcRq1QT offKLN_XgS%B1VD~8A{X`G2v5MaunbRPb?ZZwD9QAW5A5%2gb`YSpWb4 delta 129 zcmWN{u?j#?7(n6wsymv!i>&fGq=ZSH;4WT3Sq$R{qvU|?_rVugtuN^IPr3=G_%6E$uC05Ti|hyVZp delta 19 ZcmeBRYGC4EU|_HZV)=<2N)wH)0RSEN1IGXW diff --git a/resources/tables/CR_Graph.bin b/resources/tables/CR_Graph.bin index 2119491b3d7002e753632ae8e5864c056b467610..18017c83f841553110f0b3c3af62e3a3d09e3e9d 100644 GIT binary patch delta 475 zcmXZZK`4V^7zgm@*=)Wqw$Iu}c42Bok|82)l*xr?Wl2pA4w4-txtJ0w6kg?`b`e8r z>nj%r%VpY9D`AmR9F;j>`?iDs!Qt1_`}Vy5=Y4yFjhRM?$mAt5obE^oPQ=n0vsYU+ zOtJVhw)2YSD!DXpTzfV5G4BhPw80}HDh=7*h+4BmZ8hK|3KxY_cFRek<8Pu!lNgi3 zJfr30Y32jXU-rb!)*!L<1kT_bq7Wli2svRn!3aX(4I-v`CpdS$E@a-zkCd{dgii~nq_f9;Qg)ia&ZnOSN z975f^C*DHclC(&LV&rpiV|UvgiGN<<190f4C?vIaIft|yUXw?Eei4=+1-HcdDEMI( z0x%Eg(b1y^VGXt+0?5%XAP(1%h6myTatph#2T906o(zP)J9;4zQyWT+SQzbtBBM6^ E0b5^%F8}}l delta 385 zcmXZYPeg-p7zgm@dDolwwcfpZwb5Zxr)eFwb?Mj?)g>DdlN8Y|#S)WFuNkE-wV#L% zFX_)Dk)JO8)2WCUDN~oRj?wDS?7h_Y(Bb3Z;rsP?DiJ%P5vc=2inFEN^YvL-GEc~Y zGRvxm$WX<*r=RmO)N-ltjjXf|G4F_ww!ukJ(vsa5MDbgwL7k|t6S|1T&H;PpQ)qfr zzau(o5S4mGLU%YLt9picSB`pL*=G{58HO07Mamcn4ij4`$bk)yP!{{fla(e8O#Yj~ zoEEk(r*!;^nE58!{a03vIE%v72Jsr^`nRn6O^?+^{N;yv$ihi65Vf9(f2!~Sb#O%@ zFgVvltmy><7GVi+Npl7E-~f){6dnNAx#KVc3xIwX8Fv|wac#)MCTx>J`1RpSG1w#G G!SElYr*gRf diff --git a/resources/tables/CR_Grapheme_Base.bin b/resources/tables/CR_Grapheme_Base.bin index 8101ee357d73935c3adea6c673633acdd01c1563..a481b938ed7b1705c4be1ab9969703b8c2f8d2e4 100644 GIT binary patch delta 466 zcmXZXJ4nJ&6bA5f`lnfzk9?$yxfwK=JzYYPUbL7tghWVNP@qGDwB*ubNDyyOLy%Js zNKh`c7A}ECxKvXRv^Lm~`5O8LhaVsJ+#peye*vr`^*OExL^$CAp{Y?y}m4xh8Qo3s=>uC(q`;o<2tcFLJ=zPM%==bRt8R?1XXBI7ZG(`eTam8L_-P=ifQ>DY-x4G delta 346 zcmXZUJ4nM|6b0aW6QiLqX`@w}McSza!B-vJ1VJ|m;vhw&4niFSD}qQDi;KZY_z?mQ zir@ngMgF=7qLV|#QD?!WgJ5;AZ5BNRhmQl7bFM#fnAV9}b3|(TTF)}y$t8AGO(ill zS!%h`*cXc-!LF!>W)rtWLl5u{Rifcuh!aiS0PY8$V!?2=N21f3EEzM*IjNhQ%=^-_ z%G@0$;&2iMVFIQhBfQ88Pl|dZ$b`fc02J`1ePHW7orjyuwRIO-rxhO5QvmB-rvBkVSov%umxJi5yO1QdSI%VB7+vI~f>d-9Q)sSMLO% diff --git a/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin b/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin index e519d0b7b8f38b19816f5ba35b8e890829e17458..31525896a556cd21f1e6391c3c1e6989f2cf3f5b 100644 GIT binary patch delta 93 zcmX@X*}%oYz`$tFz`!tnBZn0;o8UPHM!|EF9hiTs8Zt0SngX#o5L*DTEfhNdX%Kb- a;mH;(O=9^U7#QE`oz`$t8z`!tLBZn39WH08Qle1as`7Wk0FoJO|kj@1F&RGk2 diff --git a/resources/tables/CR_Grapheme_Extend.bin b/resources/tables/CR_Grapheme_Extend.bin index 31ca2b60b4edbd3bc188ab957d8fc6c8f4aa80e5..5018ebe453bbae00784ebbbb7efef0d7aae07f32 100644 GIT binary patch delta 120 zcmZn=Jt4}$z`(STfq^k%BgbP##?Z-c7@xB?GBEHqZoa^Dossdt<`pc)jI25g3@dat z-(YoOWaC@Sz{s~|vIKh;o8Wl{M#1x&8`zy0Wepe@B|+F4h;4w_4vL+DwDaTx9KYD| OpD-}yKbgFP^8^5Vq#q*y delta 57 zcmV-90LK5w6@V280007?0003`u?XV<0alaj0q3*Z0@MKkzO%3dGXb;f1wR3kG6!h0 Pq6a|%lLHC&lL89H5;7Au diff --git a/resources/tables/CR_Grapheme_Link.bin b/resources/tables/CR_Grapheme_Link.bin index 82e572de6ca0ce83cb1fdf366a39b7cb6657fcb3..21d19893d825c748b68cd7275caeb1a94097f4a8 100644 GIT binary patch delta 35 pcmZ3%yn~s8fq@|xh|MN)9A?#FU|69u@x*FYTLwl+yU7KN766SA2u%P0 delta 23 dcmdnNyn>m7fq@|th)pJP9G-Z2#pGs2QvgIK2EYIS diff --git a/resources/tables/CR_Han.bin b/resources/tables/CR_Han.bin index 3bf341577351e4e985f8d2945777c32280d36cb9..fc1a6faf024604bf5986a72b4164395af5302587 100644 GIT binary patch delta 70 zcmbQhxPXy^fq_9Ch=nI|*lX@*VDJO7=l@|~_z9$cMwy9~qc{!c5EV PPR!8YU|F5pkqeLVFQz9Gz^rIIas0yQlxb(ajKt zS(CFpDCNLjl*nyw4wjO%icdNG`o34MSFe$O7x6UP&Q#U~P0UQrf{*Nvv?qnk_CexCM3v(CaU4)kleiJ`ld=+}5#s;>Z~y=S mhxY&hhyVZqit@8~6Bz>s0ssI20;blJpcW|y4gmlF4gv3@+cu*B diff --git a/resources/tables/CR_ID_Start.bin b/resources/tables/CR_ID_Start.bin index 24f1bcc36b38605ee60b3075f2ca6123ec64a6c1..84dec0ca042d2dad6cb45da02c1ff9fc365eacce 100644 GIT binary patch delta 221 zcmbQB_Ct+>fq~^N0|QguMvm!>jK?=GV2oyBWZC?O*_%~zKLdl|2O$2>z+l3_z~Bqy z`vK|se}3FAj?D!E;{rO{{aP~0v!MV literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Lisu.bin b/resources/tables/CR_In_Lisu.bin new file mode 100644 index 0000000000000000000000000000000000000000..5ba1733151ba0d91f409ad9f779801e3da13c223 GIT binary patch literal 16 WcmZQzU|?ooU|?imSaJb~{{sLDZvz|v literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Lisu_Supplement.bin b/resources/tables/CR_In_Lisu_Supplement.bin new file mode 100644 index 0000000000000000000000000000000000000000..f584d2234506b5649a13200eba7e98c5b465ddc8 GIT binary patch literal 16 VcmZQzU|?ooU|?iml-~fv`vC=U0ki-B literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_No_Block.bin b/resources/tables/CR_In_No_Block.bin index 6f1387d0d4098e2e2a21bb1a6458c7690fb5545d..94a03a07b947764cb535f16e8bc24b0c17649bd1 100644 GIT binary patch delta 105 zcmdnMyn~s8fq@|xh|MN)B=a6%VC4JHz{p0b&AOh9pF;Q$6+AkD|n0K`C=@dE?j|Nj7QLLwyq delta 97 zcmdnNyn&g6fq@|#h)pMQB=a^fF!KFpVB{|V;`EEqegOK>GCu2Bz;o`j-L&FHoG1p#g}2G~)*bzW@ILFTx(d diff --git a/resources/tables/CR_In_Symbols_for_Legacy_Computing.bin b/resources/tables/CR_In_Symbols_for_Legacy_Computing.bin new file mode 100644 index 0000000000000000000000000000000000000000..81e19d23074a64154e1f9e872d911b9694affca1 GIT binary patch literal 16 WcmZQzU|?ooU|?im{0$_3{|5jGAp-mW literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Tangut_Supplement.bin b/resources/tables/CR_In_Tangut_Supplement.bin new file mode 100644 index 0000000000000000000000000000000000000000..a514d5923a2eb6b8f80c32a1e48c88ce0b920e7c GIT binary patch literal 16 VcmZQzU|?ooU|?im>;;m&{Qw0)0k8l7 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Yezidi.bin b/resources/tables/CR_In_Yezidi.bin new file mode 100644 index 0000000000000000000000000000000000000000..6ee958c521258d8c5a199c293dab7d17a370b88a GIT binary patch literal 16 VcmZQzU|?ooU|?imfq~^N0|QguMvm!>jK?=GV2oyBWZC?OIhs{+KLdl|2O$2>z+l3_z~Bqy z`vK|sei1mTk z9*P}-wBuw6{zGi?KojLROuoTCjjQJ>17k1H;$Du;1p?(vjCUu$5YpgaUjC(gPV2oyBWZnFSIhs{+7XyRg2O$2>z+l3_z~H-; zfx!<*&woF;fHR);7z4xd@0+i1YBMsXZ{nWCB*xFcz{oEH#OhFN0Hj?fpWro~%*=O& kF@Ev|zBDF@|C2NL4^1`_n8MWcY4Zhvawf)WlRbnr05XUs!2kdN diff --git a/resources/tables/CR_LC.bin b/resources/tables/CR_LC.bin index 29e7db20f7e2ede95a3dc6e817dd56126c8c5c4c..1a3e6a42cfdc26f059b16d947fa82a18c41038d1 100644 GIT binary patch delta 38 tcmZ3$v4Vqxfq{{efq|iABgb+k&QlBw%fABgx5*or#2GU-pJ0k$1OT~M3itp3 delta 48 xcmZ3%v4Devfq{{ofq|iUBgb+k$zu!*%YQ-eY6Av_)lop40L1B=FEB+g0stk~4N3q2 diff --git a/resources/tables/CR_Latin.bin b/resources/tables/CR_Latin.bin index aa0ea9452a16f4e390e0625ea3e3934e1ea997fd..d45ad2c88f846ccf382ccffea51ea3e116adf51a 100644 GIT binary patch delta 43 qcmeBR>R_61UhxzI!}6~{{GWkgwE+-E0dWivrvPyp5NA&OAOQeC;0{#) delta 43 qcmeBR>R_61UhxF++ocfq|8kfq|)MBgbhW(O(P<%Yk^c0T4$4aRLyhZxS|O1OV|n3upiU diff --git a/resources/tables/CR_Lm.bin b/resources/tables/CR_Lm.bin index 784de7e7f4c2c05ebddcefdc5d4ba2e2bb1aa1d4..4b2afa77bd29a5cc8b845699d9e5fcdea358de74 100644 GIT binary patch delta 28 icmaFC{DGN+fq|hKh;27=EMjC^oyowkI&<<0Mh5_B?+2v- delta 21 bcmeys{DPT-fq|hCh;24G^*)Utqh%tjE{Dz{s}}h&KT7Mg~THpdtJ+K&%eM20+>sh=KC_MZ1O-8~+-bCrRy7ie)W$L0Xud`8B*lMnD|a4;|f-N`KM1pv8}Erb97 delta 122 zcmca0_d=F~fq{7^0|Vooi5$ln_inrp&BVyMS%`39HqWMS?zjPa8naK|x8{GVLFb7-;^Zw^z} Rr_CF9^BEbhO;+I7007bAA*TQU diff --git a/resources/tables/CR_Lower.bin b/resources/tables/CR_Lower.bin index d73919f4ad719138977b52be4e4424e6ad326280..0edc3213a77d36c39a7c50b876c9d2711be24dd3 100644 GIT binary patch delta 68 zcmcbh@j`=xfq_+$fq|)KBL}mv?g<8l5XS&<#%2X! G14aO`A{1Q! delta 28 jcmaE%aY2KFfq_++fq|)WBL}naWMyFy#`Mh=!Ul{0UQq@2 diff --git a/resources/tables/CR_Lu.bin b/resources/tables/CR_Lu.bin index 8cb00c6ca468d750d31a9ec237d911b4a7c601d2..d006266aabeb69e202104b3047b569196d066343 100644 GIT binary patch delta 40 pcmaE%{zILEfq~^O0|QgtMvnDDg2x#cmY;;;uR!|i<{d%?i~tT+4bT7p delta 24 gcmeyN{z9FDfq~^G0|QgdMvnDDjK?;g5Her{0Ak$-u>b%7 diff --git a/resources/tables/CR_M.bin b/resources/tables/CR_M.bin index a5e5fda372d598442120f27bbfc564c8a7b6c763..7f7b46c65a2139cd370a8e5b9d1d4636e6f50bdb 100644 GIT binary patch delta 130 zcmX>hI75hofq}`Dfq_wJBgbV%#?Z-k7_T!nZr;LF&B%CQvH{CuRviY06*`**Sfv=* z_*OG8@~xSy!Is1(c#eTl@ciTsw#}*r42+VdKx_`g7C>wb#CAaJ0L4x~+Ig}C`z^lw RCk%{W`~gURoGiex0{{fF9`^tM delta 57 zcmV-90LK5A637t<0006p0003Pu?W)v0alaT0oMV7v$O(x0Rg^~Fa+bX8wD2ulR5@q PlcEN(lY0l(lVS+A)>smK diff --git a/resources/tables/CR_Malayalam.bin b/resources/tables/CR_Malayalam.bin index fbfe97fbe72f8e2eee0791ce45b561f6ad1a2379..f16069ba9a09d544bf68c95da27d83d5c2b46df1 100644 GIT binary patch delta 18 XcmeZp;9+23;0I!M1_oY+i6SNd4PF6} delta 26 ccmZ?p5Mf|o5Cmcl1_oXr#mfxDtP^=m02JT>wg3PC diff --git a/resources/tables/CR_Mc.bin b/resources/tables/CR_Mc.bin index d1f6e3bd13e6f335ff2f2841a6c3bf79f54f1133..f7a640ff0b6154cfa41fa728bd706c8291c10579 100644 GIT binary patch delta 93 zcmX@X)xgccz`z*Kz`(G6BgZagHoFiP40u^kjU18L{U0UW>B P@}Dp;=0BP2!MOnd1!5iJ delta 55 zcmV-70LcHq6!;Se0007g0003#u?W)v0alaT0k^Z80>=TfY6L+6v$F*^0h96uXtQDm N83B`%2=|kc39jZF68QiC diff --git a/resources/tables/CR_N.bin b/resources/tables/CR_N.bin index da39180cee500704f17f4fec7e994f35d48eeac3..22620086ebc5d37748e98647d3eb15bc397d4b04 100644 GIT binary patch delta 48 zcmbQiv4Mkwfq{{mfq|iQBL@>R8~;%TM*h>2Ihd2!Bm)>2B_k(iFmK>sVEp|7h<^eA DAz`9!1fPqoc6o}1%*aC>Hf!GF!9iZ3=NIOlw!Fq}<{{sVK{>RA+*a86G C)fznj delta 45 zcmV+|0Mh@s4)6^K0005I0002pu?TAd0fMu10xkiwssl&?lllZmlS&1tlN$!dlj;Ue DHS`X@ diff --git a/resources/tables/CR_Other_Grapheme_Extend.bin b/resources/tables/CR_Other_Grapheme_Extend.bin index 37df10f4c6f51bb55f06dc0fdf7c9b3ab62d1692..5db8474624d0d4b064af43421ec87f266cdb689f 100644 GIT binary patch delta 26 gcmX@Xc!80Ffq}soh$Sa-tYVWiU|^Iqn7Ba#07KLTBme*a delta 39 mcmcb>c!H6Gfq}sgh$SX+tP;DJ%D@Q5c|f{|fsa7}i0c8ivIy}2 diff --git a/resources/tables/CR_Pd.bin b/resources/tables/CR_Pd.bin index 24d3b70d158813eccfebc9e47e041be3bf9afaab..a7bcf216eb3f17f69c3993add0c91ccf38075a78 100644 GIT binary patch delta 25 ccmbQhID?Ucfq_94h=nF{bZ{^*@~s7705M7g3jhEB delta 16 WcmbQiIDwIafq_98hy^EdbN~PqlLCkU diff --git a/resources/tables/CR_Po.bin b/resources/tables/CR_Po.bin index c81b683c90751ed7c7d9f199675129381a777daf..9d07d7157a871b3eacca529ce28bb33354b94818 100644 GIT binary patch delta 45 zcmZ3$y@8v9fq^lbfq`M`Mvg;FYZK9LDA6AkV8l`8AJssSSQFK zaO*(`%7xZ0ErKpV^q>fY8XAIbL*{GfKQ#RK4u8(~opU%J9=%;AGEWkj&JN@hr;@iC z^Q^XQT4wPj_41b1QlXhx*Pbjr%*Ucy-sc$+l_%|QL|q0^cLOvL#mYifyh@tr?1$*Q zLkuf1Ue&V73iF9JUiHkKwji&gxWW7`7 ziJc3uB>c9(pxZ+1R{m9^I-nL@P!E034+Ag+qkw_#Iq_k8G2@`dgwWON=6B*X1HOs< zxX$h`@g8dEo;ZvembFNYDsfyS9A5h)aV`s=fTmno7>*HF9@Fx8P67K18?Xr(vFNOu zUMDUhDIzHbVFw~`4(KXgfetrt3lGF4Oer105v0L@0+|S3b^0ozPEVzTwd9x(y0h&M Dxfp(& delta 369 zcmXZYPbhq|{0zE@}=tDC1yl4tx&|pT70W!@C0zRGdQ>G9whQFj4KP$BARgLa~kQ$RicAr(F9 zz9QPM5*>6(*q!I3x^X9&w^YpY%wCg-%@D*OA^pa%e~8!`g*0T~4vMm7+*=7^d;H%7 za#E(fX)W+80rN$E%yX+moWjDTD)BOMK`fCOs+T9fPq OKLtbp0U1Vy@Q*Bfq^lXfq`M$MvhBNn;$W)V4OUOC6h6F@*fua$904;j?{vp1I)~Iv_rPz|-?eb_NuFKrx^PP^wbRHkG^PGy$h&=hUSvHaoQ^sWjxh zwoR>^xk5fSdeV!&wxv}%p$iE;NW_Q8q5=7Ig2Z)dP@B5cCpIygct|4}(~7tgZ)r~l OI@1M`a5tIIl#YL)=}4ad delta 181 zcmWN~!3qIU7>42hZ>DKVXW|;{P;Oyz3-)pW6irE1lPgdsH6J&^CB^V5mV1x-)SYv}7F1U)iHoEA814rY=pm8atm|^}0Y8^lO diff --git a/resources/tables/CR_Sentence_Terminal.bin b/resources/tables/CR_Sentence_Terminal.bin index 3c850b398387621b40652dba9c81b38ff26d9e0c..b9e4ad992f3c72dba35057e02cb0b6cf93f2b092 100644 GIT binary patch delta 35 kcmcb?@`8nffq`Kr5c_Q8_{GR4>B7JW#%@5`Z4y%i0E#mP-v9sr delta 21 bcmaFCa)X6~fq`Kv5PNOp_{BI`h$##JJnaQx diff --git a/resources/tables/CR_Sharada.bin b/resources/tables/CR_Sharada.bin index f5d49955cf5e1ff69c124fa9c2c56ecdfb5f2981..856d0ede72162b469721ea5eb6dc9cab08741ecd 100644 GIT binary patch literal 16 VcmZQzU|?ooU|?im6l?(E`v3$n0f+zq literal 24 bcmZQzU|?lnU|?ck6l?(Evp{?Si0=ac6^jE* diff --git a/resources/tables/CR_Sinhala.bin b/resources/tables/CR_Sinhala.bin index e127f64c3a9413a470c9249af3e86494dbf1b2c6..211790e2305b8c029e7144bf2e4e4fdf0033f560 100644 GIT binary patch delta 18 WcmXRY;9+23kOpF2AZnb*lL7!1LIR`! delta 18 WcmXRY;9+23kOpF2AZnV(lL7!1MgpY( diff --git a/resources/tables/CR_Sk.bin b/resources/tables/CR_Sk.bin index 7b6d134b2794c1630fea6d265f277075db88d5f7..3339a457fa092a44428eed7c5b22189bd8191330 100644 GIT binary patch delta 26 gcmeys_=Ayyfq}smh~*}79AaCY#lWySd*TTV09cp@TL1t6 delta 19 Zcmeyt_<@mwfq}sqh-D{o9GZAZ4FE7~1up;q diff --git a/resources/tables/CR_So.bin b/resources/tables/CR_So.bin index 9e8fff0364341ecb6f8810a503dbd92d1eebbeb8..081f07948ab199260a03ba3818862f9c87cc015e 100644 GIT binary patch delta 194 zcmWN}p$fua7=_{U%?*DT1`)49vD&=?#T)PjCI*9;1i?I`{8$F>Jx#SZ+I--~oI@1M`^PA6U GL5Dw}lSEAb delta 160 zcmdnNy@H#Afq^lTfq`MmMvi7C-Wd!G+W#3Cbe;n7tIZ3T*clmTZ(hMH%*ZRi!1yr- zhzo#t&Ex|t=7Lul7{5IL;x|D20f>K1=3sTw`w2AfCpQrD0&yV_7Xxt_5LW^5A|PH0 i#H)aK9T18lR*K10xu_0cp3%CzuKV%gqTi delta 27 hcmX@Xwu6m>fq~&H5T|YAn9al(J$VU}+T>eIc>rP;2etqJ diff --git a/resources/tables/CR_Unified_Ideograph.bin b/resources/tables/CR_Unified_Ideograph.bin index 989a90759094cae2c4a628969ebed23fdc883a57..388e0d8549b88ed8d143afbdd2aee83782e69c7a 100644 GIT binary patch delta 45 vcmbh7ck*L+q9A@bGdD=e*~9h5my9naCIFAXtvF_|ONmv;ilOp4E{{cdDj?Dl7 delta 434 zcmXZWPbh@*_wLQ>M3!>!uhx_t9UOLA9JokP4qRACA!_8HI7q+3K@md9 zL9bB6Wkt~(2sP!ha>AsR&EfSdJA8WTThG&XqyDTcpb#*ZQT< z1?VpIT+kvjw$Ej2a%snk8bnr9s(3*<)Reou`V0tOQj$J_CjYS<95> zjWBcgNM?ezXq)!wfNtm(lI^5k8Yb>%M~R*6Bt>bK7HJvcIM8;UhP Y2~B-iMuiuE7aI9#njCl~1)t;m0mZI^YXATM diff --git a/resources/tables/CR_Upper.bin b/resources/tables/CR_Upper.bin index 48fc0b9552e202737c1ecac528fe9ff379c49678..d87ae018864196e8ff3022297a9446cc3d0c850a 100644 GIT binary patch delta 40 pcmbQBu|R`^fq|8sfq|)cBgcLr!Q%`J%TGe_S0Md$^9dmjMgZ5a3~B%X delta 24 gcmZ3WF+qcafq|8ofq|)UBgcLr#$%gr2zf9907WJSO8@`> diff --git a/resources/tables/CR_Word.bin b/resources/tables/CR_Word.bin index 5e616eca5d0cd79c25221088d1dc2b0ac3e39941..a9e16377f486fd87197c7828a86c284340dd7b7e 100644 GIT binary patch delta 311 zcmXZXu}eZ>6b0~e-`A5DieLKZ(Zj)_Ap#o&BdIaL2nv^|HXEA?S{eGl`By-;OMM^*V2SfGv-V>~qpOKqAov986O{R5D$#q{3`?=3^5PXp z{FKhJk(AsLLdAzNK~hin6K_ysv)9zQ~=%&K$YW|fv6cY5Ej_?C6@V)EXk MR_w}ML|i~`zd^=Io&W#< delta 205 zcmaE%`$C6G@Sb1@?;GXn!J>*Oyi?u<>FZCIt5 z8TW0D;8@Nixr>3p@Bqp{AoywW wDxsx8?+k3xo}s*_nXWF)h0`d4rfHJ0Bwh10Umi0A5-*QUCw| diff --git a/resources/tables/CR_XID_Continue.bin b/resources/tables/CR_XID_Continue.bin index 656c2eaf06abd601b5a5bf808c7a8ce4a3c2d626..17ae376a08fc5e7e4f201000858983d9964d1022 100644 GIT binary patch delta 339 zcmXZXze>YU6bA6`BqT;!5^J!SQYa!=1r-JV6x~!Ph>D9?M@J_MzCc|xLkorb0NsqD zL&|*s1qH!DCns?b+#IZes8rBT=W)&aAGrc14JLdah^v1sW5RTJGzuy zFlXEf#66)?I-{7H5D%24e8&WHo%ruvsn{z@QGI!Xa;vgEFS4zi)WKX}LxS#(B-5up zN>e{g(<~Keo)(EigDq80z1um?&c&+I8x1@|c3boYDRYyOc)p#e77<%_yOtp? z@HjDx@iQ43>M_}v-ZCMyUiGhUeNBJi3qezJjJ8jK?=GV2oyBWZC?O*_%~zKLdl|2O$2>z+l3_z~Bqy z`vK|seG3r%F!HSg;tfE&k%5t)0f=RQSRIND zfV3+R1LgUTOn$&?%<9g-DCj;}fbTqG;^YT>X-1N442+VTP|O3Qg@ITUh{b?d0*Lj2 z*dB@iH%#Ubn8(#~m4UGrXmKyc<`n|vOpJFYD+p_FFfaoh&MfQ& E0DTNH6951J delta 140 zcmdm>enO3dfq~^B0|QgWMvm!>jC(gPV2oyBWZnFS*_%~z7XyRg2O$2>z+l3_z~H-; zfx!<*&woETfis@<7z4xd@0*WsYBMsXZ~nk_i%E>1fq{`<28h+6*Z@eoPX57bJlUA< k3}gHx{xl|u|C49%ADWybFo&t@(`F9Aawf)WlN*FJ0AZXbFaQ7m diff --git a/resources/tables/CR_XPosixPunct.bin b/resources/tables/CR_XPosixPunct.bin index 48be357428ec5404541eff1148fadfec5383d9bc..a29a57c6561c69170a71e163470f8148d9645483 100644 GIT binary patch delta 55 zcmV-70LcH43#bbS0004L0002Au?VUH1};(n04`FqumY+91`e$N0S>K`SOjYUT9d>C NKLtbp0U1V;1(0g|4U7N) delta 36 scmZ3%J%O8pfq^lZfq`M;MvhfXn|Cp-V4R%AlF1l7`3j5uWNFr30J2{SnE(I) diff --git a/resources/tables/CR_Yezidi.bin b/resources/tables/CR_Yezidi.bin new file mode 100644 index 0000000000000000000000000000000000000000..ca0dd1b531814a5f4b7d174e49d1f637feef4f36 GIT binary patch literal 32 gcmZQzU|?rpU|?oo)M*si- literal 0 HcmV?d00001 diff --git a/resources/tables/CaseFold.bin b/resources/tables/CaseFold.bin index a477f2cafefd04e25eacfbfda1dab6ef204e10f2..ab9dee67e687c47c5af326ea335b62ec0412afe2 100644 GIT binary patch delta 55 ycmbQy&$y?bk%fVQ_0mQbJ#(ey#~C;r7#SFrp8(>MQ1&Sx`zw_FZL@)Sh5!J&(GTzd delta 20 bcmdnf&p4x>k%fVQ_54N_J@d_B=4k=|L`()9 diff --git a/resources/tables/CaseUnfold_11.bin b/resources/tables/CaseUnfold_11.bin index 08ac63c5fa74a4895d878063585ac4540c184d89..db9b182c38f0f71abb39cdd517b797565fe17577 100644 GIT binary patch delta 54 xcmcap-_XFw!oa}ly^)2>L}~d61_lL228QLwf%p`ZeG Date: Wed, 16 Mar 2022 10:24:54 -0500 Subject: [PATCH 111/158] Replace unsigned masks with toUnsigned method calls These masks are not descriptive and can easily get damaged when refactoring code or making minor changes. The JDK methods were added in Java 8 and perform the same operation, but with a descriptive method name. x & 0xFF => Byte.toUnsignedInt(x) x & 0xFFFFFFFF => Integer.toUnsignedLong(x) --- src/org/jcodings/MultiByteEncoding.java | 4 +- .../jcodings/specific/BaseUTF8Encoding.java | 6 +- src/org/jcodings/specific/CESU8Encoding.java | 6 +- src/org/jcodings/spi/ISO_8859_16.java | 4 +- .../transcode/TranscodeFunctions.java | 211 +++++++++--------- src/org/jcodings/transcode/Transcoding.java | 12 +- 6 files changed, 128 insertions(+), 115 deletions(-) diff --git a/src/org/jcodings/MultiByteEncoding.java b/src/org/jcodings/MultiByteEncoding.java index 77b36450..a6671655 100644 --- a/src/org/jcodings/MultiByteEncoding.java +++ b/src/org/jcodings/MultiByteEncoding.java @@ -22,6 +22,8 @@ import org.jcodings.ascii.AsciiTables; import org.jcodings.exception.ErrorCodes; +import static java.lang.Integer.toUnsignedLong; + public abstract class MultiByteEncoding extends AbstractEncoding { protected final int EncLen[]; @@ -184,7 +186,7 @@ protected final int mb4CodeToMbc(int code, byte[]bytes, int p) { } protected final boolean mb2IsCodeCType(int code, int ctype) { - if ((code & 0xFFFFFFFFL) < 128) { // unsigned 32-bit + if (toUnsignedLong(code) < 128) { // unsigned 32-bit return isCodeCTypeInternal(code, ctype); // configured with ascii } else { if (isWordGraphPrint(ctype)) { diff --git a/src/org/jcodings/specific/BaseUTF8Encoding.java b/src/org/jcodings/specific/BaseUTF8Encoding.java index 625662a8..6969571d 100644 --- a/src/org/jcodings/specific/BaseUTF8Encoding.java +++ b/src/org/jcodings/specific/BaseUTF8Encoding.java @@ -25,6 +25,8 @@ import org.jcodings.exception.ErrorCodes; import org.jcodings.unicode.UnicodeEncoding; +import static java.lang.Integer.toUnsignedLong; + abstract class BaseUTF8Encoding extends UnicodeEncoding { static final boolean USE_INVALID_CODE_SCHEME = true; @@ -72,7 +74,7 @@ public int codeToMbcLength(int code) { return 2; } else if ((code & 0xffff0000) == 0) { return 3; - } else if ((code & 0xFFFFFFFFL) <= VALID_CODE_LIMIT) { + } else if (toUnsignedLong(code) <= VALID_CODE_LIMIT) { return 4; } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) { return 1; @@ -125,7 +127,7 @@ public int codeToMbc(int code, byte[]bytes, int p) { } else if ((code & 0xffff0000) == 0) { bytes[p_++] = (byte)(((code >>> 12) & 0x0f) | 0xe0); bytes[p_++] = trailS(code, 6); - } else if ((code & 0xFFFFFFFFL) <= VALID_CODE_LIMIT) { + } else if (toUnsignedLong(code) <= VALID_CODE_LIMIT) { bytes[p_++] = (byte)(((code >>> 18) & 0x07) | 0xf0); bytes[p_++] = trailS(code, 12); bytes[p_++] = trailS(code, 6); diff --git a/src/org/jcodings/specific/CESU8Encoding.java b/src/org/jcodings/specific/CESU8Encoding.java index 7773219d..da551355 100644 --- a/src/org/jcodings/specific/CESU8Encoding.java +++ b/src/org/jcodings/specific/CESU8Encoding.java @@ -25,6 +25,8 @@ import org.jcodings.exception.ErrorCodes; import org.jcodings.unicode.UnicodeEncoding; +import static java.lang.Integer.toUnsignedLong; + public final class CESU8Encoding extends UnicodeEncoding { static final boolean USE_INVALID_CODE_SCHEME = true; @@ -120,7 +122,7 @@ public int codeToMbcLength(int code) { return 2; } else if ((code & 0xffff0000) == 0) { return 3; - } else if ((code & 0xFFFFFFFFL) <= VALID_CODE_LIMIT) { + } else if (toUnsignedLong(code) <= VALID_CODE_LIMIT) { return 6; } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) { return 1; @@ -187,7 +189,7 @@ public int codeToMbc(int code, byte[] bytes, int p) { } else if ((code & 0xffff0000) == 0) { bytes[p_++] = (byte) (((code >>> 12) & 0x0f) | 0xe0); bytes[p_++] = trailS(code, 6); - } else if ((code & 0xFFFFFFFFL) <= VALID_CODE_LIMIT) { + } else if (toUnsignedLong(code) <= VALID_CODE_LIMIT) { long high = (code >> 10) + 0xD7C0; code = (code & 0x3FF) + 0xDC00; bytes[p_++] = (byte)(((high>>12) & 0x0f) | 0xe0); diff --git a/src/org/jcodings/spi/ISO_8859_16.java b/src/org/jcodings/spi/ISO_8859_16.java index 561a7893..e4c50592 100644 --- a/src/org/jcodings/spi/ISO_8859_16.java +++ b/src/org/jcodings/spi/ISO_8859_16.java @@ -28,6 +28,8 @@ import java.nio.charset.CharsetEncoder; import java.nio.charset.CoderResult; +import static java.lang.Byte.toUnsignedInt; + /** * Implementation of Charset, CharsetDecoder, and CharsetEncoder for ISO-8859-16. */ @@ -63,7 +65,7 @@ protected CoderResult decodeLoop(ByteBuffer in, CharBuffer out) { for (;;) { if (!in.hasRemaining()) return CoderResult.UNDERFLOW; if (!out.hasRemaining()) return CoderResult.OVERFLOW; - int b = in.get() & 0xFF; + int b = toUnsignedInt(in.get()); char c = TABLE[b]; out.put(c); } diff --git a/src/org/jcodings/transcode/TranscodeFunctions.java b/src/org/jcodings/transcode/TranscodeFunctions.java index c023d54e..ee790d4a 100644 --- a/src/org/jcodings/transcode/TranscodeFunctions.java +++ b/src/org/jcodings/transcode/TranscodeFunctions.java @@ -4,6 +4,9 @@ import java.util.Arrays; +import static java.lang.Byte.toUnsignedInt; +import static java.lang.Integer.toUnsignedLong; + /** * Created by headius on 3/4/14. */ @@ -44,7 +47,7 @@ public static int funSoToUTF16(byte[] statep, byte[] sBytes, int sStart, int l, } public static int funSoToUTF16BE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); int s1, s2, s3; if ((s0 & 0x80) == 0) { @@ -52,20 +55,20 @@ public static int funSoToUTF16BE(byte[] statep, byte[] s, int sStart, int l, byt o[oStart + 1] = (byte)s0; return 2; } else if ((s0 & 0xE0) == 0xC0) { - s1 = s[sStart+1] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); o[oStart] = (byte)((s0 >> 2) & 0x07); o[oStart + 1] = (byte)(((s0 & 0x03) << 6) | (s1 & 0x3F)); return 2; } else if ((s0 & 0xF0) == 0xE0) { - s1 = s[sStart+1] & 0xFF; - s2 = s[sStart+2] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); + s2 = toUnsignedInt(s[sStart+2]); o[oStart] = (byte)((s0 << 4) | ((s1 >> 2) ^ 0x20)); o[oStart + 1] = (byte)((s1 << 6) | (s2 ^ 0x80)); return 2; } else { - s1 = s[sStart+1] & 0xFF; - s2 = s[sStart+2] & 0xFF; - s3 = s[sStart+3] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); + s2 = toUnsignedInt(s[sStart+2]); + s3 = toUnsignedInt(s[sStart+3]); int w = (((s0 & 0x07) << 2) | ((s1 >> 4) & 0x03)) - 1; o[oStart] = (byte)(0xD8 | (w >> 2)); o[oStart + 1] = (byte)((w << 6) | ((s1 & 0x0F) << 2) | ((s2 >> 4) - 8)); @@ -76,27 +79,27 @@ public static int funSoToUTF16BE(byte[] statep, byte[] s, int sStart, int l, byt } public static int funSoToUTF16LE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); int s1; if ((s0 & 0x80) == 0) { o[oStart + 1] = (byte)0x00; o[oStart] = (byte)s0; return 2; } else if ((s0 & 0xE0) == 0xC0) { - s1 = s[sStart+1] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); o[oStart + 1] = (byte)((s0 >> 2) & 0x07); o[oStart] = (byte)(((s0 & 0x03) << 6) | (s1 & 0x3F)); return 2; } else if ((s0 & 0xF0) == 0xE0) { - s1 = s[sStart+1] & 0xFF; - int s2 = s[sStart+2] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); + int s2 = toUnsignedInt(s[sStart+2]); o[oStart + 1] = (byte)((s0 << 4) | ((s1 >> 2) ^ 0x20)); o[oStart] = (byte)((s1 << 6) | (s2 ^ 0x80)); return 2; } else { - s1 = s[sStart+1] & 0xFF; - int s2 = s[sStart+2] & 0xFF; - int s3 = s[sStart+3] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); + int s2 = toUnsignedInt(s[sStart+2]); + int s3 = toUnsignedInt(s[sStart+3]); int w = (((s0 & 0x07) << 2) | ((s1 >> 4) & 0x03)) - 1; o[oStart + 1] = (byte)(0xD8 | (w >> 2)); o[oStart] = (byte)((w << 6) | ((s1 & 0x0F) << 2) | ((s2 >> 4) - 8)); @@ -120,27 +123,27 @@ public static int funSoToUTF32(byte[] statep, byte[] s, int sStart, int l, byte[ } public static int funSoToUTF32BE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); int s1, s2, s3; o[oStart] = 0; if ((s0 & 0x80) == 0) { o[oStart + 1] = o[oStart + 2] = 0x00; o[oStart + 3] = (byte)s0; } else if ((s0 & 0xE0) == 0xC0) { - s1 = s[sStart+1] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); o[oStart + 1] = 0x00; o[oStart + 2] = (byte)((s0 >> 2) & 0x07); o[oStart + 3] = (byte)(((s0 & 0x03) << 6) | (s1 & 0x3F)); } else if ((s0 & 0xF0) == 0xE0) { - s1 = s[sStart+1] & 0xFF; - s2 = s[sStart+2] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); + s2 = toUnsignedInt(s[sStart+2]); o[oStart + 1] = 0x00; o[oStart + 2] = (byte)((s0 << 4) | ((s1 >> 2) ^ 0x20)); o[oStart + 3] = (byte)((s1 << 6) | (s2 ^ 0x80)); } else { - s1 = s[sStart+1] & 0xFF; - s2 = s[sStart+2] & 0xFF; - s3 = s[sStart+3] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); + s2 = toUnsignedInt(s[sStart+2]); + s3 = toUnsignedInt(s[sStart+3]); o[oStart + 1] = (byte)(((s0 & 0x07) << 2) | ((s1 >> 4) & 0x03)); o[oStart + 2] = (byte)(((s1 & 0x0F) << 4) | ((s2 >> 2) & 0x0F)); o[oStart + 3] = (byte)(((s2 & 0x03) << 6) | (s3 & 0x3F)); @@ -150,25 +153,25 @@ public static int funSoToUTF32BE(byte[] statep, byte[] s, int sStart, int l, byt public static int funSoToUTF32LE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { o[oStart+3] = 0; - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); if ((s0 & 0x80) == 0) { o[oStart + 2] = o[oStart+1] = 0x00; o[oStart] = (byte)s0; } else if ((s[sStart] & 0xE0) == 0xC0) { - int s1 = s[sStart+1] & 0xFF; + int s1 = toUnsignedInt(s[sStart+1]); o[oStart + 2] = 0x00; o[oStart + 1] = (byte)((s0 >> 2) & 0x07); o[oStart] = (byte)(((s0 & 0x03) << 6) | (s1 & 0x3F)); } else if ((s[sStart] & 0xF0) == 0xE0) { - int s1 = s[sStart+1] & 0xFF; - int s2 = s[sStart+2] & 0xFF; + int s1 = toUnsignedInt(s[sStart+1]); + int s2 = toUnsignedInt(s[sStart+2]); o[oStart + 2] = 0x00; o[oStart + 1] = (byte)((s0 << 4) | ((s1 >> 2) ^ 0x20)); o[oStart] = (byte)((s1 << 6) | (s2 ^ 0x80)); } else { - int s1 = s[sStart+1] & 0xFF; - int s2 = s[sStart+2] & 0xFF; - int s3 = s[sStart+3] & 0xFF; + int s1 = toUnsignedInt(s[sStart+1]); + int s2 = toUnsignedInt(s[sStart+2]); + int s3 = toUnsignedInt(s[sStart+3]); o[oStart + 2] = (byte)(((s0 & 0x07) << 2) | ((s1 >> 4) & 0x03)); o[oStart + 1] = (byte)(((s1 & 0x0F) << 4) | ((s2 >> 2) & 0x0F)); o[oStart] = (byte)(((s2 & 0x03) << 6) | (s3 & 0x3F)); @@ -177,15 +180,15 @@ public static int funSoToUTF32LE(byte[] statep, byte[] s, int sStart, int l, byt } public static int funSiFromUTF32(byte[] statep, byte[] s, int sStart, int l) { - int s0 = s[sStart] & 0xFF; - int s1 = s[sStart+1] & 0xFF; - int s2 = s[sStart+2] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); + int s1 = toUnsignedInt(s[sStart+1]); + int s2 = toUnsignedInt(s[sStart+2]); int s3; byte[] sp = statep; switch (sp[0]) { case 0: - s3 = s[sStart+3] & 0xFF; + s3 = toUnsignedInt(s[sStart+3]); if (s0 == 0 && s1 == 0 && s2 == 0xFE && s3 == 0xFF) { sp[0] = BE; return TranscodingInstruction.ZERObt; @@ -201,7 +204,7 @@ public static int funSiFromUTF32(byte[] statep, byte[] s, int sStart, int l) { } break; case LE: - s3 = s[sStart+3] & 0xFF; + s3 = toUnsignedInt(s[sStart+3]); if (s3 == 0 && ((0 < s2 && s2 <= 0x10) || (s2 == 0 && (s1 < 0xD8 || 0xDF < s1)))) return TranscodingInstruction.FUNso; @@ -221,9 +224,9 @@ public static int funSoFromUTF32(byte[] statep, byte[] s, int sStart, int l, byt } public static int funSoFromUTF32BE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - int s1 = s[sStart+1] & 0xFF; - int s2 = s[sStart+2] & 0xFF; - int s3 = s[sStart+3] & 0xFF; + int s1 = toUnsignedInt(s[sStart+1]); + int s2 = toUnsignedInt(s[sStart+2]); + int s3 = toUnsignedInt(s[sStart+3]); if (s1 == 0) { if (s2 == 0 && s3 < 0x80) { o[oStart] = (byte)s3; @@ -248,9 +251,9 @@ public static int funSoFromUTF32BE(byte[] statep, byte[] s, int sStart, int l, b } public static int funSoFromUTF32LE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - int s0 = s[sStart] & 0xFF; - int s1 = s[sStart+1] & 0xFF; - int s2 = s[sStart+2] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); + int s1 = toUnsignedInt(s[sStart+1]); + int s2 = toUnsignedInt(s[sStart+2]); if (s2 == 0) { if (s1 == 0 && s0 < 0x80) { o[oStart] = (byte)s0; @@ -278,13 +281,13 @@ public static int funSoFromUTF32LE(byte[] statep, byte[] s, int sStart, int l, b public static final int from_UTF_16LE_00toFF_D8toDB = Transcoding.WORDINDEX2INFO(5); public static int funSiFromUTF16(byte[] statep, byte[] s, int sStart, int l) { - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); int s1; byte[] sp = statep; switch (sp[0]) { case 0: - s1 = s[sStart+1] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); if (s0 == 0xFE && s1 == 0xFF) { sp[0] = BE; return TranscodingInstruction.ZERObt; @@ -301,7 +304,7 @@ public static int funSiFromUTF16(byte[] statep, byte[] s, int sStart, int l) { } break; case LE: - s1 = s[sStart+1] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); if (s1 < 0xD8 || 0xDF < s1) { return TranscodingInstruction.FUNso; } else if (s1 <= 0xDB) { @@ -323,8 +326,8 @@ public static int funSoFromUTF16(byte[] statep, byte[] s, int sStart, int l, byt } public static int funSoFromUTF16BE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - int s0 = s[sStart] & 0xFF; - int s1 = s[sStart+1] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); + int s1 = toUnsignedInt(s[sStart+1]); int s2, s3; if (s0 == 0 && s1 < 0x80) { o[oStart] = (byte)s1; @@ -339,8 +342,8 @@ public static int funSoFromUTF16BE(byte[] statep, byte[] s, int sStart, int l, b o[oStart + 2] = (byte)(0x80 | (s1 & 0x3F)); return 3; } else { - s2 = s[sStart+2] & 0xFF; - s3 = s[sStart+3] & 0xFF; + s2 = toUnsignedInt(s[sStart+2]); + s3 = toUnsignedInt(s[sStart+3]); long u = (((s0 & 0x03) << 2) | (s1 >> 6)) + 1; o[oStart] = (byte)(0xF0 | (u >> 2)); o[oStart + 1] = (byte)(0x80 | ((u & 0x03) << 4) | (((s1 >> 2) & 0x0F))); @@ -351,8 +354,8 @@ public static int funSoFromUTF16BE(byte[] statep, byte[] s, int sStart, int l, b } public static int funSoFromUTF16LE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - int s0 = s[sStart] & 0xFF; - int s1 = s[sStart+1] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); + int s1 = toUnsignedInt(s[sStart+1]); if (s1 == 0 && s0 < 0x80) { o[oStart] = (byte)s0; return 1; @@ -366,8 +369,8 @@ public static int funSoFromUTF16LE(byte[] statep, byte[] s, int sStart, int l, b o[oStart + 2] = (byte)(0x80 | (s0 & 0x3F)); return 3; } else { - int s2 = s[sStart+2] & 0xFF; - int s3 = s[sStart+3] & 0xFF; + int s2 = toUnsignedInt(s[sStart+2]); + int s3 = toUnsignedInt(s[sStart+3]); long u = (((s1 & 0x03) << 2) | (s0 >> 6)) + 1; o[oStart] = (byte)(0xF0 | (u >> 2)); o[oStart + 1] = (byte)(0x80 | ((u & 0x03) << 4) | ((s0 >> 2) & 0x0F)); @@ -378,8 +381,8 @@ public static int funSoFromUTF16LE(byte[] statep, byte[] s, int sStart, int l, b } public static int funSoEucjp2Sjis(byte[] statep, byte[] s, int sStart, int _l, byte[] o, int oStart, int osize) { - int s0 = s[sStart] & 0xFF; - int s1 = s[sStart+1] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); + int s1 = toUnsignedInt(s[sStart+1]); if (s0 == 0x8e) { o[oStart] = (byte)s1; return 1; @@ -399,7 +402,7 @@ public static int funSoEucjp2Sjis(byte[] statep, byte[] s, int sStart, int _l, b } public static int funSoSjis2Eucjp(byte[] statep, byte[] s, int sStart, int _l, byte[] o, int oStart, int osize) { - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); if (_l == 1) { o[oStart] = (byte)0x8E; o[oStart+1] = (byte)s0; @@ -407,7 +410,7 @@ public static int funSoSjis2Eucjp(byte[] statep, byte[] s, int sStart, int _l, b } else { int h, l; h = s0; - l = s[sStart + 1] & 0xFF; + l = Byte.toUnsignedInt(s[sStart+1]); if (0xe0 <= h) { h -= 64; } @@ -425,11 +428,11 @@ public static int funSoSjis2Eucjp(byte[] statep, byte[] s, int sStart, int _l, b public static int funSoFromGB18030(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - long s0 = s[sStart] & 0xFF; - long s1 = s[sStart+1] & 0xFF; - long s2 = s[sStart+2] & 0xFF; - long s3 = s[sStart+3] & 0xFF; - long u = ((s0 - 0x90) * 10 * 126 * 10 + (s1 - 0x30) * 126 * 10 + (s2 - 0x81) * 10 + (s3 - 0x30) + 0x10000) & 0xFFFFFFFFL; + int s0 = toUnsignedInt(s[sStart]); + int s1 = toUnsignedInt(s[sStart+1]); + int s2 = toUnsignedInt(s[sStart+2]); + int s3 = toUnsignedInt(s[sStart+3]); + long u = toUnsignedLong((s0 - 0x90) * 10 * 126 * 10 + (s1 - 0x30) * 126 * 10 + (s2 - 0x81) * 10 + (s3 - 0x30) + 0x10000); o[oStart] = (byte)(0xF0 | (u >>> 18)); o[oStart+1] = (byte)(0x80 | ((u >>> 12) & 0x3F)); o[oStart+2] = (byte)(0x80 | ((u >>> 6) & 0x3F)); @@ -439,17 +442,17 @@ public static int funSoFromGB18030(byte[] statep, byte[] s, int sStart, int l, b public static int funSioFromGB18030(byte[] statep, byte[] s, int sStart, int l, int info, byte[] o, int oStart, int osize) { - long s0 = s[sStart] & 0xFF; - long s1 = s[sStart+1] & 0xFF; - long diff = info >> 8; + int s0 = toUnsignedInt(s[sStart]); + int s1 = toUnsignedInt(s[sStart+1]); + int diff = info >> 8; long u; /* Unicode Scalar Value */ if ((diff & 0x20000) != 0) { /* GB18030 4 bytes */ - long s2 = s[sStart+2] & 0xFF; - long s3 = s[sStart+3] & 0xFF; - u = (((s0 * 10 + s1) * 126 + s2) * 10 + s3 - diff - 0x170000) & 0xFFFFFFFFL; + int s2 = toUnsignedInt(s[sStart+2]); + int s3 = toUnsignedInt(s[sStart+3]); + u = toUnsignedLong(((s0 * 10 + s1) * 126 + s2) * 10 + s3 - diff - 0x170000); } else { /* GB18030 2 bytes */ - u = (s0 * 256 + s1 + 24055 - diff) & 0xFFFFFFFFL; + u = toUnsignedLong(s0 * 256 + s1 + 24055 - diff); } o[oStart] = (byte)(0xE0 | (u >>> 12)); o[oStart+1] = (byte)(0x80 | ((u >>> 6) & 0x3F)); @@ -459,10 +462,10 @@ public static int funSioFromGB18030(byte[] statep, byte[] s, int sStart, int l, public static int funSoToGB18030(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - long s0 = s[sStart] & 0xFF; - long s1 = s[sStart+1] & 0xFF; - long s2 = s[sStart+2] & 0xFF; - long s3 = s[sStart+3] & 0xFF; + long s0 = toUnsignedInt(s[sStart]); + long s1 = toUnsignedInt(s[sStart+1]); + long s2 = toUnsignedInt(s[sStart+2]); + long s3 = toUnsignedInt(s[sStart+3]); long u = ((s0 & 0x07) << 18) | ((s1 & 0x3F) << 12) | ((s2 & 0x3F) << 6) | (s3 & 0x3F); u -= 0x10000; o[oStart+3] = (byte)(0x30 + (u % 10)); @@ -476,9 +479,9 @@ public static int funSoToGB18030(byte[] statep, byte[] s, int sStart, int l, byt public static int funSioToGB18030(byte[] statep, byte[] s, int sStart, int l, int info, byte[] o, int oStart, int osize) { - long s0 = s[sStart] & 0xFF; - long s1 = s[sStart+1] & 0xFF; - long s2 = s[sStart+2] & 0xFF; + long s0 = toUnsignedInt(s[sStart]); + long s1 = toUnsignedInt(s[sStart+1]); + long s2 = toUnsignedInt(s[sStart+2]); long diff = info >>> 8; long u; /* Unicode Scalar Value */ @@ -547,8 +550,8 @@ public static int funSoCp50220Encoder(byte[] statep, byte[] s, int sStart, int l } sp[0] = G0_JISX0208_1983; o[oStart++] = pBytes[p++]; - s0 = s[sStart] & 0xFF; - s1 = s[sStart+1] & 0xFF; + s0 = toUnsignedInt(s[sStart]); + s1 = toUnsignedInt(s[sStart+1]); if (l == 2 && s0 == 0x8E) { if (s1 == 0xDE) { o[oStart++] = (byte)(pBytes[p] + 1); @@ -561,9 +564,9 @@ public static int funSoCp50220Encoder(byte[] statep, byte[] s, int sStart, int l o[oStart++] = pBytes[p]; } - s0 = s[sStart] & 0xFF; + s0 = toUnsignedInt(s[sStart]); if (l == 2 && s0 == 0x8E) { - s1 = s[sStart+1] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); int p = (s1 - 0xA1) * 2; byte[] pBytes = tbl0208; if ((0xA1 <= s1 && s1 <= 0xB5) || @@ -598,7 +601,7 @@ public static int funSoCp5022xEncoder(byte[] statep, byte[] s, int sStart, int l if (l == 1) { newstate = G0_ASCII; - } else if ((s[sStart] & 0xFF) == 0x8E) { + } else if (toUnsignedInt(s[sStart]) == 0x8E) { sStart++; l = 1; newstate = G0_JISX0201_KATAKANA; @@ -625,12 +628,12 @@ else if (newstate == G0_JISX0201_KATAKANA) { sp[0] = (byte)newstate; } - s0 = s[sStart] & 0xFF; + s0 = toUnsignedInt(s[sStart]); if (l == 1) { o[oStart++] = (byte)(s0 & 0x7f); } else { - s1 = s[sStart+1] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); o[oStart++] = (byte)(s0 & 0x7f); o[oStart++] = (byte)(s1 & 0x7f); } @@ -675,7 +678,7 @@ public static int iso2022jpEncoderResetSequenceSize(byte[] statep) { public static final int iso2022jp_decoder_jisx0208_rest = Transcoding.WORDINDEX2INFO(16); public static int funSiIso50220jpDecoder(byte[] statep, byte[] s, int sStart, int l) { - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); byte[] sp = statep; if (sp[0] == G0_ASCII) return TranscodingInstruction.NOMAP; @@ -686,12 +689,12 @@ else if (0x21 <= s0 && s0 <= 0x7e) } public static int funSoIso2022jpDecoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { - int s0 = s[sStart] & 0xFF; - int s1 = s[sStart+1] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); + int s1 = toUnsignedInt(s[sStart+1]); byte[] sp = statep; if (s0 == 0x1b) { if (s1 == '(') { - switch (s[sStart+l-1] & 0xFF) { + switch (toUnsignedInt(s[sStart+l-1])) { case 'B': case 'J': sp[0] = G0_ASCII; @@ -743,7 +746,7 @@ public static int funSoIso2022jpEncoder(byte[] statep, byte[] s, int sStart, int if (l == 1) newstate = G0_ASCII; - else if ((s[sStart] & 0xFF) == EMACS_MULE_LEADING_CODE_JISX0208_1978) + else if (toUnsignedInt(s[sStart]) == EMACS_MULE_LEADING_CODE_JISX0208_1978) newstate = G0_JISX0208_1978; else newstate = G0_JISX0208_1983; @@ -795,7 +798,7 @@ public static int finishIso2022jpEncoder(byte[] statep, byte[] o, int oStart, in public static int funSiCp50221Decoder(byte[] statep, byte[] s, int sStart, int l) { byte[] sp = statep; int c; - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); switch (sp[0]) { case G0_ASCII: if (0xA1 <= s0 && s0 <= 0xDF) @@ -894,7 +897,7 @@ public static int iso2022jpKddiInit(byte[] statep) { public static final int iso2022jp_kddi_decoder_jisx0208_rest = Transcoding.WORDINDEX2INFO(16); public static int funSiIso2022jpKddiDecoder(byte[] statep, byte[] s, int sStart, int l) { - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); byte[] sp = statep; if (sp[0] == G0_ASCII) { return TranscodingInstruction.NOMAP; @@ -906,12 +909,12 @@ public static int funSiIso2022jpKddiDecoder(byte[] statep, byte[] s, int sStart, } public static int funSoIso2022jpKddiDecoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { - int s0 = s[sStart] & 0xFF; - int s1 = s[sStart+1] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); + int s1 = toUnsignedInt(s[sStart+1]); byte[] sp = statep; if (s0 == 0x1b) { if (s1 == '(') { - switch (s[sStart+l-1] & 0xFF) { + switch (toUnsignedInt(s[sStart+l-1])) { case 'B': /* US-ASCII */ case 'J': /* JIS X 0201 Roman */ sp[0] = G0_ASCII; @@ -919,7 +922,7 @@ public static int funSoIso2022jpKddiDecoder(byte[] statep, byte[] s, int sStart, } } else { - switch (s[sStart+l-1] & 0xFF) { + switch (toUnsignedInt(s[sStart+l-1])) { case '@': sp[0] = G0_JISX0208_1978; break; @@ -944,7 +947,7 @@ public static int funSoIso2022jpKddiDecoder(byte[] statep, byte[] s, int sStart, } public static int funSoIso2022jpKddiEncoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); int s1, s2; byte[] sp = statep; int output0 = oStart; @@ -980,8 +983,8 @@ else if (s0 == EMACS_MULE_LEADING_CODE_JISX0208_1978) o[oStart++] = (byte)(s0 & 0x7f); } else { - s1 = s[sStart+1] & 0xFF; - s2 = s[sStart+2] & 0xFF; + s1 = toUnsignedInt(s[sStart+1]); + s2 = toUnsignedInt(s[sStart+2]); o[oStart++] = (byte)(s1 & 0x7f); o[oStart++] = (byte)(s2 & 0x7f); } @@ -1118,7 +1121,7 @@ private static int bufOutputChar(byte[] sp, byte[] o, int oStart) { private static int getInfo(int nextInfo, byte[] sp) { int pos = 0; while (pos < bufBytesize(sp)) { - int next_byte = bufAt(sp, pos++) & 0xFF; + int next_byte = toUnsignedInt(bufAt(sp, pos++)); if (next_byte < UTF8MAC_BL_MIN_BYTE(nextInfo) || UTF8MAC_BL_MAX_BYTE(nextInfo) < next_byte) nextInfo = TranscodingInstruction.INVALID; else { @@ -1131,19 +1134,19 @@ private static int getInfo(int nextInfo, byte[] sp) { } public static int UTF8MAC_BL_MIN_BYTE(int nextInfo) { - return From_UTF8_MAC_Transcoder.INSTANCE.byteArray[BL_BASE(nextInfo)] & 0xFF; + return toUnsignedInt(From_UTF8_MAC_Transcoder.INSTANCE.byteArray[BL_BASE(nextInfo)]); } public static int UTF8MAC_BL_MAX_BYTE(int nextInfo) { - return From_UTF8_MAC_Transcoder.INSTANCE.byteArray[BL_BASE(nextInfo) + 1] & 0xFF; + return toUnsignedInt(From_UTF8_MAC_Transcoder.INSTANCE.byteArray[BL_BASE(nextInfo) + 1]); } public static int UTF8MAC_BL_OFFSET(int nextInfo, int b) { - return From_UTF8_MAC_Transcoder.INSTANCE.byteArray[BL_BASE(nextInfo) + 2 + b - UTF8MAC_BL_MIN_BYTE(nextInfo)] & 0xFF; + return toUnsignedInt(From_UTF8_MAC_Transcoder.INSTANCE.byteArray[BL_BASE(nextInfo) + 2 + b - UTF8MAC_BL_MIN_BYTE(nextInfo)]); } public static int UTF8MAC_BL_ACTION(int nextInfo, byte b) { - return From_UTF8_MAC_Transcoder.INSTANCE.intArray[BL_INFO(nextInfo) + UTF8MAC_BL_OFFSET(nextInfo, b & 0xFF)]; + return From_UTF8_MAC_Transcoder.INSTANCE.intArray[BL_INFO(nextInfo) + UTF8MAC_BL_OFFSET(nextInfo, toUnsignedInt(b))]; } private static int BL_BASE(int nextInfo) { @@ -1175,10 +1178,10 @@ private static int bufInt(byte[] statep, int base) { } private static void bufInt(byte[] statep, int base, int val) { - statep[base] = (byte)((val >>> 24) & 0xFF); - statep[base+1] = (byte)((val >>> 16) & 0xFF); - statep[base+2] = (byte)((val >>> 8) & 0xFF); - statep[base+3] = (byte)(val & 0xFF); + statep[base] = (byte) (val >>> 24); + statep[base+1] = (byte) (val >>> 16); + statep[base+2] = (byte) (val >>> 8); + statep[base+3] = (byte) val; } private static int bufBeg(byte[] statep) { @@ -1286,7 +1289,7 @@ public static int universalNewlineInit(byte[] statep) { } public static int funSoUniversalNewline(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { - int s0 = s[sStart] & 0xFF; + int s0 = toUnsignedInt(s[sStart]); byte[] sp = statep; int len; if (s0 == '\n') { diff --git a/src/org/jcodings/transcode/Transcoding.java b/src/org/jcodings/transcode/Transcoding.java index d4e95ff5..b1e0d8bb 100644 --- a/src/org/jcodings/transcode/Transcoding.java +++ b/src/org/jcodings/transcode/Transcoding.java @@ -21,6 +21,8 @@ import org.jcodings.Ptr; +import static java.lang.Byte.toUnsignedInt; + public class Transcoding implements TranscodingInstruction { public Transcoding(Transcoder transcoder, int flags) { this.transcoder = transcoder; @@ -157,7 +159,7 @@ private EConvResult transcodeRestartable0(final byte[] in_bytes, Ptr in_pos, fin nextByte = in_bytes[in_p++]; // fall through case FOLLOW_BYTE: // follow_byte: - if ((nextByte & 0xFF) < BL_MIN_BYTE(this) || BL_MAX_BYTE(this) < (nextByte & 0xFF)) { + if (toUnsignedInt(nextByte) < BL_MIN_BYTE(this) || BL_MAX_BYTE(this) < toUnsignedInt(nextByte)) { nextInfo = INVALID; } else { nextInfo = BL_ACTION(this, nextByte); @@ -642,19 +644,19 @@ private static int BYTE_LOOKUP_INFO(Transcoding tc, int bl) { } public static int BL_MIN_BYTE(Transcoding tc) { - return tc.transcoder.byteArray[BL_BASE(tc)] & 0xFF; + return toUnsignedInt(tc.transcoder.byteArray[BL_BASE(tc)]); } public static int BL_MAX_BYTE(Transcoding tc) { - return tc.transcoder.byteArray[BL_BASE(tc) + 1] & 0xFF; + return toUnsignedInt(tc.transcoder.byteArray[BL_BASE(tc) + 1]); } public static int BL_OFFSET(Transcoding tc, int b) { - return tc.transcoder.byteArray[BL_BASE(tc) + 2 + b - BL_MIN_BYTE(tc)] & 0xFF; + return toUnsignedInt(tc.transcoder.byteArray[BL_BASE(tc) + 2 + b - BL_MIN_BYTE(tc)]); } public static int BL_ACTION(Transcoding tc, byte b) { - return tc.transcoder.intArray[BL_INFO(tc) + BL_OFFSET(tc, b & 0xFF)]; + return tc.transcoder.intArray[BL_INFO(tc) + BL_OFFSET(tc, toUnsignedInt(b))]; } public static byte getGB4bt0(int a) { From 12c04fa977de89cc1ece8e422e8ba27cbecc115d Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 16 Mar 2022 10:46:05 -0500 Subject: [PATCH 112/158] Work around module javadoc issue See https://stackoverflow.com/questions/58836862/jdk-11-and-javadoc --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 400d1374..754209db 100644 --- a/pom.xml +++ b/pom.xml @@ -161,6 +161,7 @@ -Xdoclint:none -html5 true + false From 0605c84e957c0109c832e644cad355e77e68aa85 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 16 Mar 2022 10:46:56 -0500 Subject: [PATCH 113/158] Remove test mistakenly added This test, based on #42, was mistakenly added while transitioning to GitHub Actions. I will do a separate PR to restore it and fix the broken logic it tests. --- .../transcode/TestCP51932ToCP50220.java | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 test/org/jcodings/transcode/TestCP51932ToCP50220.java diff --git a/test/org/jcodings/transcode/TestCP51932ToCP50220.java b/test/org/jcodings/transcode/TestCP51932ToCP50220.java deleted file mode 100644 index b57feb6b..00000000 --- a/test/org/jcodings/transcode/TestCP51932ToCP50220.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.jcodings.transcode; - -import org.jcodings.Ptr; -import org.junit.Test; -import org.junit.Assert; -import java.util.Arrays; - -public class TestCP51932ToCP50220 { - @Test - public void testCP51932ToCP50220() throws Exception { - byte[] src = "\u0000\u007F\u008E\u00A1\u008E\u00FE\u00A1\u00A1\u00A1\u00FE".getBytes("iso-8859-1"); - byte[] dst = new byte[100]; - Ptr srcPtr = new Ptr(0); - Ptr dstPtr = new Ptr(0); - EConv econv = TranscoderDB.open("CP51932", "CP50220", 0); - econv.convert(src, srcPtr, src.length, dst, dstPtr, dst.length, 0); - - byte[] str = Arrays.copyOf(dst, dstPtr.p); - - byte[] expected = "\u0000\u007F\u001B\u0024\u0042\u0021\u0023\u0050\u0000\u0021\u0021\u0021\u007E\u001B\u0028\u0042".getBytes("iso-8859-1"); - byte[] actual = Arrays.copyOf(dst, dstPtr.p); - Assert.assertEquals(new String(expected), new String(actual)); - } -} From 7b04cb51b19dcc884a5895c1e576b1dd6303c2a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Wed, 16 Mar 2022 17:31:30 +0100 Subject: [PATCH 114/158] fix mac transcoder --- scripts/generate.rb | 2 +- .../jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index 32a9afeb..ca45ea0b 100644 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -106,7 +106,7 @@ def generate_transcoder_list body = body.gsub(/(\/\*.*?\*\/)/, "").split(',').map{|e|e.strip} src, dst, tree_start, table_info, iul, max_in, max_out, conv, state_size, state_init, state_fini, *funcs = body tree_start = trans_src[/#define\s+#{tree_start}\s+WORDINDEX2INFO\((\d+)\)/, 1].to_i << 2 - state_size = "0" if state_size == "sizeof(struct from_utf8_mac_status)" + state_size = "24" if state_size == "sizeof(struct from_utf8_mac_status)" generic = funcs.all?{|f|f == "NULL" || f == "0"} if generic diff --git a/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java b/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java index 73331563..c6518fd0 100644 --- a/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java +++ b/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java @@ -25,7 +25,7 @@ public class From_UTF8_MAC_Transcoder extends Transcoder { protected From_UTF8_MAC_Transcoder () { - super("UTF8-MAC", "UTF-8", 52544, "Utf8Mac", 1, 4, 10, AsciiCompatibility.ENCODER, 0); + super("UTF8-MAC", "UTF-8", 52544, "Utf8Mac", 1, 4, 10, AsciiCompatibility.ENCODER, 24); } public static final Transcoder INSTANCE = new From_UTF8_MAC_Transcoder(); From 6101db89c36a2c5b6b8329b86ebc4e154f530648 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 22 Mar 2022 11:03:26 -0500 Subject: [PATCH 115/158] [maven-release-plugin] prepare release jcodings-1.0.56 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 754209db..514235bd 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.56-SNAPSHOT + 1.0.56 JCodings Byte based encoding support library for java From 7032435cda6be921d00fa51dbed4b5d80e96c3cc Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 23 Mar 2022 07:31:18 -0500 Subject: [PATCH 116/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 514235bd..ef628746 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.56 + 1.0.57-SNAPSHOT JCodings Byte based encoding support library for java From f2f590d994b15d9eb9e0821a40ec24726fe96eb7 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 29 Mar 2022 15:18:02 -0500 Subject: [PATCH 117/158] Update unicode and emoji version Actual update occurred in #53 --- src/org/jcodings/Config.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/org/jcodings/Config.java b/src/org/jcodings/Config.java index 87fb38ba..09bf0c70 100644 --- a/src/org/jcodings/Config.java +++ b/src/org/jcodings/Config.java @@ -62,12 +62,12 @@ public interface Config { final int ENC_CASE_FOLD_MIN = INTERNAL_ENC_CASE_FOLD_MULTI_CHAR; final int ENC_CASE_FOLD_DEFAULT = ENC_CASE_FOLD_MIN; - final String UNICODE_VERSION_STRING = "12.1.0"; - final int UNICODE_VERSION_MAJOR = 12; - final int UNICODE_VERSION_MINOR = 1; + final String UNICODE_VERSION_STRING = "13.0.0"; + final int UNICODE_VERSION_MAJOR = 13; + final int UNICODE_VERSION_MINOR = 0; final int UNICODE_VERSION_TEENY = 0; - final String UNICODE_EMOJI_VERSION_STRING = "12.0"; - final int UNICODE_EMOJI_VERSION_MAJOR = 12; - final int UNICODE_EMOJI_VERSION_MINOR = 0; + final String UNICODE_EMOJI_VERSION_STRING = "13.1"; + final int UNICODE_EMOJI_VERSION_MAJOR = 13; + final int UNICODE_EMOJI_VERSION_MINOR = 1; } From c021ae6f70a2fcc24b89d185d21bc8cc52652263 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 29 Mar 2022 15:25:06 -0500 Subject: [PATCH 118/158] [maven-release-plugin] prepare release jcodings-1.0.57 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ef628746..c6eab2d9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.57-SNAPSHOT + 1.0.57 JCodings Byte based encoding support library for java From d87794d566a81e15c4a27f05d91f5c151bc52928 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 29 Mar 2022 15:25:09 -0500 Subject: [PATCH 119/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c6eab2d9..f43ad6b3 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.57 + 1.0.58-SNAPSHOT JCodings Byte based encoding support library for java From 0860897b9d01284e5e749d7b76a26c180bd6ed60 Mon Sep 17 00:00:00 2001 From: Josef Haider Date: Fri, 15 Jul 2022 13:32:59 +0200 Subject: [PATCH 120/158] Fix UNICODE_VALID_CODEPOINT_P --- src/org/jcodings/util/Macros.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/jcodings/util/Macros.java b/src/org/jcodings/util/Macros.java index c8ed0910..829c208b 100644 --- a/src/org/jcodings/util/Macros.java +++ b/src/org/jcodings/util/Macros.java @@ -48,7 +48,7 @@ public static int CONSTRUCT_MBCLEN_CHARFOUND(int n) { // UNICODE_VALID_CODEPOINT_P public static boolean UNICODE_VALID_CODEPOINT_P(int c) { - return ((c) <= 0x10ffff) && + return (Integer.compareUnsigned(c, 0x10ffff) <= 0) && !((c) < 0x10000 && UTF16_IS_SURROGATE((c) >> 8)); } From 7d647c5d1cc90603aedde9a3d7f3377371c038fd Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 10 Nov 2022 13:43:39 -0600 Subject: [PATCH 121/158] Fixes for CESU-8 * Use sStart and oStart for transcoding in and out offsets. * Do not override state init. --- .../transcode/TranscodeFunctions.java | 24 +++++++++---------- .../specific/To_CESU_8_Transcoder.java | 11 --------- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/src/org/jcodings/transcode/TranscodeFunctions.java b/src/org/jcodings/transcode/TranscodeFunctions.java index ee790d4a..a922bd40 100644 --- a/src/org/jcodings/transcode/TranscodeFunctions.java +++ b/src/org/jcodings/transcode/TranscodeFunctions.java @@ -15,23 +15,23 @@ public class TranscodeFunctions { public static final int LE = 2; public static int funSoToCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - long scalar = ((s[0] & 0x07) << 18) | ((s[1] & 0x3F) << 12) | ((s[2] & 0x3F) << 6) | (s[3] & 0x3F); + long scalar = ((toUnsignedInt(s[sStart+0]) & 0x07) << 18) | ((toUnsignedInt(s[sStart+1]) & 0x3F) << 12) | ((toUnsignedInt(s[sStart+2]) & 0x3F) << 6) | (toUnsignedInt(s[sStart+3]) & 0x3F); scalar -= 0x10000; - o[0] = (byte)0xED; - o[1] = (byte)(0xA0 | (scalar >> 16)); - o[2] = (byte)(0x80 | ((scalar >> 10) & 0x3F)); - o[3] = (byte)0xED; - o[4] = (byte)(0xB0 | ((scalar >> 6) & 0x0F)); - o[5] = (byte)(0x80 | (scalar & 0x3F)); + o[oStart+0] = (byte)0xED; + o[oStart+1] = (byte)(0xA0 | (scalar >> 16)); + o[oStart+2] = (byte)(0x80 | ((scalar >> 10) & 0x3F)); + o[oStart+3] = (byte)0xED; + o[oStart+4] = (byte)(0xB0 | ((scalar >> 6) & 0x0F)); + o[oStart+5] = (byte)(0x80 | (scalar & 0x3F)); return 6; } public static int funSoFromCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - long scalar = (((s[1] & 0x0F) << 16) | ((s[2] & 0x3F) << 10) | ((s[4] & 0x0F) << 6) | (s[5] & 0x3F)) + 0x10000; - o[0] = (byte)(0xF0 | (scalar >> 18)); - o[1] = (byte)(0x80 | ((scalar >> 12) & 0x3F)); - o[2] = (byte)(0x80 | ((scalar >> 6) & 0x3F)); - o[3] = (byte)(0x80 | (scalar & 0x3F)); + long scalar = (((toUnsignedInt(s[sStart+1]) & 0x0F) << 16) | ((toUnsignedInt(s[sStart+2]) & 0x3F) << 10) | ((toUnsignedInt(s[sStart+4]) & 0x0F) << 6) | (toUnsignedInt(s[sStart+5]) & 0x3F)) + 0x10000; + o[oStart+0] = (byte)(0xF0 | (scalar >> 18)); + o[oStart+1] = (byte)(0x80 | ((scalar >> 12) & 0x3F)); + o[oStart+2] = (byte)(0x80 | ((scalar >> 6) & 0x3F)); + o[oStart+3] = (byte)(0x80 | (scalar & 0x3F)); return 4; } diff --git a/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java b/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java index ce5824a5..cb72c8d7 100644 --- a/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java +++ b/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java @@ -30,17 +30,6 @@ protected To_CESU_8_Transcoder () { public static final Transcoder INSTANCE = new To_CESU_8_Transcoder(); - @Override - public boolean hasStateInit() { - return true; - } - - @Override - public int stateInit(byte[] statep) { - statep[0] = 0; - return 0; - } - @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToCESU8(statep, s, sStart, l, o, oStart, oSize); From 729c96c85c8c87f44d4b71c3fc1dc699a0abf413 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 10 Nov 2022 13:52:47 -0600 Subject: [PATCH 122/158] [maven-release-plugin] prepare release jcodings-1.0.58 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f43ad6b3..237a7850 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.58-SNAPSHOT + 1.0.58 JCodings Byte based encoding support library for java From 367e3c73b78415132314ed834297354c17c6979f Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 10 Nov 2022 13:52:50 -0600 Subject: [PATCH 123/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 237a7850..67e9b47e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.58 + 1.0.59-SNAPSHOT JCodings Byte based encoding support library for java From bf2ce065defb32ed703c351c3f4937d5493b9b44 Mon Sep 17 00:00:00 2001 From: Josef Haider Date: Fri, 10 Mar 2023 12:12:24 +0100 Subject: [PATCH 124/158] Fix CESU8Encoding.leftAdjustCharHead --- src/org/jcodings/specific/CESU8Encoding.java | 35 ++++++++++++++------ test/org/jcodings/specific/TestCESU8.java | 6 ++++ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/org/jcodings/specific/CESU8Encoding.java b/src/org/jcodings/specific/CESU8Encoding.java index da551355..c4e4c1a3 100644 --- a/src/org/jcodings/specific/CESU8Encoding.java +++ b/src/org/jcodings/specific/CESU8Encoding.java @@ -142,15 +142,14 @@ public int mbcToCode(byte[] bytes, int p, int end) { case 1: return c; case 2: - return ((c & 0x1F) << 6) | (bytes[p + 1] & 0xff & 0x3f); + return ((c & 0x1F) << 6) | (bytes[p + 1] & 0xff & 0x3f); case 3: - return ((c & 0xF) << 12) | ((bytes[p + 1] & 0xff & 0x3f) << 6) | (bytes[p + 2] & 0xff & 0x3f); - case 6: - { - int high = ((c & 0xF) << 12) | ((bytes[p + 1] & 0xff & 0x3f) << 6) | (bytes[p + 2] & 0xff & 0x3f); - int low = ((bytes[p + 3] & 0xff & 0xF) << 12) | ((bytes[p + 4] & 0xff & 0x3f) << 6) | (bytes[p + 5] & 0xff & 0x3f); - return ((high & 0x03ff) << 10) + (low & 0x03ff) + 0x10000; - } + return utf8Decode3ByteSequence(bytes, p, c); + case 6: { + int high = utf8Decode3ByteSequence(bytes, p, c); + int low = utf8Decode3ByteSequence(bytes, p + 3); + return ((high & 0x03ff) << 10) + (low & 0x03ff) + 0x10000; + } } if (USE_INVALID_CODE_SCHEME) { @@ -161,6 +160,14 @@ public int mbcToCode(byte[] bytes, int p, int end) { return c; } + private static int utf8Decode3ByteSequence(byte[] bytes, int p) { + return utf8Decode3ByteSequence(bytes, p, bytes[p]); + } + + private static int utf8Decode3ByteSequence(byte[] bytes, int p, int c) { + return ((c & 0xF) << 12) | ((bytes[p + 1] & 0xff & 0x3f) << 6) | (bytes[p + 2] & 0xff & 0x3f); + } + static byte trailS(int code, int shift) { return (byte) (((code >>> shift) & 0x3f) | 0x80); } @@ -192,10 +199,10 @@ public int codeToMbc(int code, byte[] bytes, int p) { } else if (toUnsignedLong(code) <= VALID_CODE_LIMIT) { long high = (code >> 10) + 0xD7C0; code = (code & 0x3FF) + 0xDC00; - bytes[p_++] = (byte)(((high>>12) & 0x0f) | 0xe0); + bytes[p_++] = (byte) (((high >> 12) & 0x0f) | 0xe0); bytes[p_++] = trailS(high, 6); bytes[p_++] = trail0(high); - bytes[p_++] = (byte)(((code>>12) & 0x0f) | 0xe0); + bytes[p_++] = (byte) (((code >> 12) & 0x0f) | 0xe0); bytes[p_++] = trailS(code, 6); } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) { bytes[p_] = (byte) 0xfe; @@ -254,6 +261,14 @@ public int leftAdjustCharHead(byte[] bytes, int p, int s, int end) { int p_ = s; while (!utf8IsLead(bytes[p_] & 0xff) && p_ > p) p_--; + if (p_ > p && s - p_ == 2 && Character.isLowSurrogate((char) utf8Decode3ByteSequence(bytes, p_))) { + int pSurrogatePair = p_ - 1; + while (!utf8IsLead(bytes[pSurrogatePair] & 0xff) && pSurrogatePair > p) + pSurrogatePair--; + if (p_ - pSurrogatePair == 3 && Character.isHighSurrogate((char) utf8Decode3ByteSequence(bytes, pSurrogatePair))) { + return pSurrogatePair; + } + } return p_; } diff --git a/test/org/jcodings/specific/TestCESU8.java b/test/org/jcodings/specific/TestCESU8.java index 287ec92a..ae8fe994 100644 --- a/test/org/jcodings/specific/TestCESU8.java +++ b/test/org/jcodings/specific/TestCESU8.java @@ -17,6 +17,12 @@ public void testUnicodeLength6byteChar() throws Exception { assertEquals(1, enc.strLength(bytes, 0, bytes.length)); } + @Test + public void testPrevCharHead6byteChar() throws Exception { + byte[]bytes = "\u00ed\u00a0\u0080\u00ed\u00b0\u0080".getBytes("ISO-8859-1"); + assertEquals(0, enc.prevCharHead(bytes, 0, bytes.length, bytes.length)); + } + @Test public void testUnicodeLength() throws Exception { byte[]bytes = "test\u00C5\u0099".getBytes(); From aabd6636d61e295f308f4fde1ae4db1cc690ebc4 Mon Sep 17 00:00:00 2001 From: sebthom Date: Sun, 11 Jun 2023 00:12:58 +0200 Subject: [PATCH 125/158] style: remove unnecessary semicolons --- src/org/jcodings/specific/EmacsMuleEncoding.java | 2 +- src/org/jcodings/specific/GB18030Encoding.java | 2 +- src/org/jcodings/transcode/TranscoderList.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/org/jcodings/specific/EmacsMuleEncoding.java b/src/org/jcodings/specific/EmacsMuleEncoding.java index a3198dbc..165ccac6 100644 --- a/src/org/jcodings/specific/EmacsMuleEncoding.java +++ b/src/org/jcodings/specific/EmacsMuleEncoding.java @@ -99,7 +99,7 @@ public int leftAdjustCharHead(byte[] bytes, int p, int s, int end) { int p_ = s; while (!islead(bytes[p_] & 0xff) && p_ > p) p_--; return p_; - }; + } @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { diff --git a/src/org/jcodings/specific/GB18030Encoding.java b/src/org/jcodings/specific/GB18030Encoding.java index e2f9cc10..e68ed67d 100644 --- a/src/org/jcodings/specific/GB18030Encoding.java +++ b/src/org/jcodings/specific/GB18030Encoding.java @@ -120,7 +120,7 @@ private enum State { Odd_CM_Odd_C4CM, Even_CM_Even_C4CM, Odd_CM_Even_C4CM - }; + } @Override public int leftAdjustCharHead(byte[]bytes, int start, int s, int end) { diff --git a/src/org/jcodings/transcode/TranscoderList.java b/src/org/jcodings/transcode/TranscoderList.java index a3e64982..9b6f2f72 100644 --- a/src/org/jcodings/transcode/TranscoderList.java +++ b/src/org/jcodings/transcode/TranscoderList.java @@ -223,7 +223,7 @@ static void load() { TranscoderDB.declare("UTF-32", "UTF-8", "From_UTF_32"); TranscoderDB.declare("UTF-8", "UTF-16", "To_UTF_16"); TranscoderDB.declare("UTF-8", "UTF-32", "To_UTF_32"); - }; + } static final GenericTranscoderEntry[] GENERIC_LIST = new GenericTranscoderEntry[] { new GenericTranscoderEntry("Big5", "UTF-8", 57100, "Big5", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), From 550c2f7e89745617e96ea80b488eb314fae2e291 Mon Sep 17 00:00:00 2001 From: sebthom Date: Sun, 11 Jun 2023 00:14:38 +0200 Subject: [PATCH 126/158] style: remove unnecessary cast from byte to int --- src/org/jcodings/util/BytesHash.java | 2 +- src/org/jcodings/util/CaseInsensitiveBytesHash.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/jcodings/util/BytesHash.java b/src/org/jcodings/util/BytesHash.java index 3aeb11cf..fdc12002 100644 --- a/src/org/jcodings/util/BytesHash.java +++ b/src/org/jcodings/util/BytesHash.java @@ -62,7 +62,7 @@ public boolean equals(byte[]bytes, int p, int end) { public static int hashCode(byte[]bytes, int p, int end) { int key = 0; - while (p < end) key = ((key << 16) + (key << 6) - key) + (int)(bytes[p++]); // & 0xff ? we have to match jruby string hash + while (p < end) key = ((key << 16) + (key << 6) - key) + bytes[p++]; // & 0xff ? we have to match jruby string hash key = key + (key >> 5); return key; } diff --git a/src/org/jcodings/util/CaseInsensitiveBytesHash.java b/src/org/jcodings/util/CaseInsensitiveBytesHash.java index 6f30eb89..33de8028 100644 --- a/src/org/jcodings/util/CaseInsensitiveBytesHash.java +++ b/src/org/jcodings/util/CaseInsensitiveBytesHash.java @@ -60,7 +60,7 @@ public boolean equals(byte[]bytes, int p, int end) { public static int hashCode(byte[]bytes, int p, int end) { int key = 0; - while (p < end) key = ((key << 16) + (key << 6) - key) + (int)(ToLowerCaseTable[bytes[p++] & 0xff]); // & 0xff ? we have to match jruby string hash + while (p < end) key = ((key << 16) + (key << 6) - key) + ToLowerCaseTable[bytes[p++] & 0xff]; // & 0xff ? we have to match jruby string hash key = key + (key >> 5); return key; } From 166e681773ecb90d6eba7e99a978d96833e071d0 Mon Sep 17 00:00:00 2001 From: sebthom Date: Sun, 11 Jun 2023 00:16:16 +0200 Subject: [PATCH 127/158] style: remove unused imports --- src/org/jcodings/specific/Windows_1251Encoding.java | 1 - test/org/jcodings/specific/TestBig5.java | 1 - test/org/jcodings/specific/TestCESU8.java | 3 --- test/org/jcodings/specific/TestEmacsMule.java | 3 +-- test/org/jcodings/specific/TestGBK.java | 1 - 5 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/org/jcodings/specific/Windows_1251Encoding.java b/src/org/jcodings/specific/Windows_1251Encoding.java index 4f4f0e21..007ec1d6 100644 --- a/src/org/jcodings/specific/Windows_1251Encoding.java +++ b/src/org/jcodings/specific/Windows_1251Encoding.java @@ -21,7 +21,6 @@ import org.jcodings.CaseFoldMapEncoding; import org.jcodings.Config; -import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; diff --git a/test/org/jcodings/specific/TestBig5.java b/test/org/jcodings/specific/TestBig5.java index fdba5f1a..7d5a10bb 100755 --- a/test/org/jcodings/specific/TestBig5.java +++ b/test/org/jcodings/specific/TestBig5.java @@ -5,7 +5,6 @@ import java.nio.charset.Charset; -import org.jcodings.specific.BIG5Encoding; import org.junit.Test; public class TestBig5 { diff --git a/test/org/jcodings/specific/TestCESU8.java b/test/org/jcodings/specific/TestCESU8.java index ae8fe994..e6c67d2a 100644 --- a/test/org/jcodings/specific/TestCESU8.java +++ b/test/org/jcodings/specific/TestCESU8.java @@ -1,11 +1,8 @@ package org.jcodings.specific; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; import org.jcodings.Encoding; -import org.jcodings.constants.CharacterType; -import java.nio.charset.StandardCharsets; import org.junit.Test; public class TestCESU8 { diff --git a/test/org/jcodings/specific/TestEmacsMule.java b/test/org/jcodings/specific/TestEmacsMule.java index 9bd983d6..68253abc 100644 --- a/test/org/jcodings/specific/TestEmacsMule.java +++ b/test/org/jcodings/specific/TestEmacsMule.java @@ -1,14 +1,13 @@ package org.jcodings.specific; import static org.junit.Assert.assertEquals; -import org.jcodings.specific.EmacsMuleEncoding; import org.junit.Test; public class TestEmacsMule { @Test public void testRightAdjustCharHeadAscii() { byte[] str = new byte[]{(byte)'a', (byte)'b', (byte)'c', (byte)',', (byte)'d', (byte)'e', (byte)'f'}; - + int t = EmacsMuleEncoding.INSTANCE.rightAdjustCharHead(str, 0, 3, 7); assertEquals("rightAdjustCharHead did not adjust properly", 3, t); } diff --git a/test/org/jcodings/specific/TestGBK.java b/test/org/jcodings/specific/TestGBK.java index 03a6f334..fa541dfb 100755 --- a/test/org/jcodings/specific/TestGBK.java +++ b/test/org/jcodings/specific/TestGBK.java @@ -8,7 +8,6 @@ import org.jcodings.Encoding; import org.jcodings.EncodingDB; import org.jcodings.EncodingDB.Entry; -import org.jcodings.specific.GBKEncoding; import org.jcodings.util.CaseInsensitiveBytesHash; import org.junit.Before; import org.junit.Test; From 651f0eeb726c62d81639f3dff6c7c9eaa84dead9 Mon Sep 17 00:00:00 2001 From: sebthom Date: Sun, 11 Jun 2023 00:18:50 +0200 Subject: [PATCH 128/158] style: add missing serialVersionUID --- src/org/jcodings/exception/CharacterPropertyException.java | 4 +++- src/org/jcodings/exception/EncodingException.java | 3 +++ src/org/jcodings/exception/JCodingsException.java | 3 +++ src/org/jcodings/exception/TranscoderException.java | 3 +++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/org/jcodings/exception/CharacterPropertyException.java b/src/org/jcodings/exception/CharacterPropertyException.java index 59c660a2..f628d10e 100644 --- a/src/org/jcodings/exception/CharacterPropertyException.java +++ b/src/org/jcodings/exception/CharacterPropertyException.java @@ -21,7 +21,9 @@ public class CharacterPropertyException extends EncodingException { - public CharacterPropertyException(EncodingError error) { + private static final long serialVersionUID = 1L; + + public CharacterPropertyException(EncodingError error) { super(error); } diff --git a/src/org/jcodings/exception/EncodingException.java b/src/org/jcodings/exception/EncodingException.java index 592cae8a..f85d8d32 100644 --- a/src/org/jcodings/exception/EncodingException.java +++ b/src/org/jcodings/exception/EncodingException.java @@ -20,6 +20,9 @@ package org.jcodings.exception; public class EncodingException extends JCodingsException { + + private static final long serialVersionUID = 1L; + private final EncodingError error; public EncodingException(EncodingError error) { diff --git a/src/org/jcodings/exception/JCodingsException.java b/src/org/jcodings/exception/JCodingsException.java index bd42cc49..a8d77a90 100644 --- a/src/org/jcodings/exception/JCodingsException.java +++ b/src/org/jcodings/exception/JCodingsException.java @@ -20,6 +20,9 @@ package org.jcodings.exception; public class JCodingsException extends RuntimeException { + + private static final long serialVersionUID = 1L; + public JCodingsException(String message) { super(message); } diff --git a/src/org/jcodings/exception/TranscoderException.java b/src/org/jcodings/exception/TranscoderException.java index a4beea83..dda56cdd 100644 --- a/src/org/jcodings/exception/TranscoderException.java +++ b/src/org/jcodings/exception/TranscoderException.java @@ -20,6 +20,9 @@ package org.jcodings.exception; public class TranscoderException extends JCodingsException { + + private static final long serialVersionUID = 1L; + public TranscoderException(String message) { super(message); } From 7d9ad33856735a9e3b333d7644ca9360934912e7 Mon Sep 17 00:00:00 2001 From: sebthom Date: Sun, 11 Jun 2023 00:21:17 +0200 Subject: [PATCH 129/158] chore: replace usage of deprecated class junit.framework.Assert --- test/org/jcodings/specific/TestCESU8.java | 2 +- test/org/jcodings/specific/TestCaseMap.java | 2 +- test/org/jcodings/specific/TestEConvResult.java | 9 +++++---- test/org/jcodings/specific/TestUnicode.java | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/test/org/jcodings/specific/TestCESU8.java b/test/org/jcodings/specific/TestCESU8.java index e6c67d2a..62e7fe81 100644 --- a/test/org/jcodings/specific/TestCESU8.java +++ b/test/org/jcodings/specific/TestCESU8.java @@ -1,6 +1,6 @@ package org.jcodings.specific; -import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.assertEquals; import org.jcodings.Encoding; import org.junit.Test; diff --git a/test/org/jcodings/specific/TestCaseMap.java b/test/org/jcodings/specific/TestCaseMap.java index 5c4c586e..9ad7e5df 100644 --- a/test/org/jcodings/specific/TestCaseMap.java +++ b/test/org/jcodings/specific/TestCaseMap.java @@ -1,6 +1,6 @@ package org.jcodings.specific; -import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.List; diff --git a/test/org/jcodings/specific/TestEConvResult.java b/test/org/jcodings/specific/TestEConvResult.java index dc02fdbf..5676749e 100644 --- a/test/org/jcodings/specific/TestEConvResult.java +++ b/test/org/jcodings/specific/TestEConvResult.java @@ -1,14 +1,15 @@ package org.jcodings.specific; -import junit.framework.Assert; +import static org.junit.Assert.assertEquals; + import org.jcodings.transcode.EConvResult; import org.junit.Test; public class TestEConvResult { @Test public void testSymbolicName() { - Assert.assertEquals("finished", EConvResult.Finished.symbolicName()); - Assert.assertEquals("after_output", EConvResult.AfterOutput.symbolicName()); - Assert.assertEquals("destination_buffer_full", EConvResult.DestinationBufferFull.symbolicName()); + assertEquals("finished", EConvResult.Finished.symbolicName()); + assertEquals("after_output", EConvResult.AfterOutput.symbolicName()); + assertEquals("destination_buffer_full", EConvResult.DestinationBufferFull.symbolicName()); } } diff --git a/test/org/jcodings/specific/TestUnicode.java b/test/org/jcodings/specific/TestUnicode.java index 34c2ea78..08a87840 100644 --- a/test/org/jcodings/specific/TestUnicode.java +++ b/test/org/jcodings/specific/TestUnicode.java @@ -1,7 +1,7 @@ package org.jcodings.specific; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import org.jcodings.Encoding; import org.jcodings.constants.CharacterType; From 7697954fdd609db31f8972376ed49c4f7f0f8ac8 Mon Sep 17 00:00:00 2001 From: sebthom Date: Sun, 11 Jun 2023 00:24:51 +0200 Subject: [PATCH 130/158] style: add missing `Override` annotations --- src/org/jcodings/MultiByteEncoding.java | 2 ++ src/org/jcodings/specific/BaseEUCJPEncoding.java | 1 + src/org/jcodings/specific/EUCKREncoding.java | 1 + src/org/jcodings/spi/Charsets.java | 3 +++ src/org/jcodings/transcode/TranscoderDB.java | 1 + .../transcode/specific/Cp50220_decoder_Transcoder.java | 1 + .../transcode/specific/Cp50221_decoder_Transcoder.java | 1 + .../transcode/specific/Iso2022jp_decoder_Transcoder.java | 1 + .../specific/Iso2022jp_kddi_decoder_Transcoder.java | 1 + src/org/jcodings/util/BytesHash.java | 1 + src/org/jcodings/util/CaseInsensitiveBytesHash.java | 1 + src/org/jcodings/util/Hash.java | 8 ++++++++ src/org/jcodings/util/IntArrayHash.java | 1 + src/org/jcodings/util/IntHash.java | 1 + src/org/jcodings/util/ObjHash.java | 2 ++ 15 files changed, 26 insertions(+) diff --git a/src/org/jcodings/MultiByteEncoding.java b/src/org/jcodings/MultiByteEncoding.java index a6671655..f2d7d857 100644 --- a/src/org/jcodings/MultiByteEncoding.java +++ b/src/org/jcodings/MultiByteEncoding.java @@ -201,6 +201,7 @@ protected final boolean mb4IsCodeCType(int code, int ctype) { } /* onigenc_strlen */ + @Override public int strLength(byte[]bytes, int p, int end) { int n = 0; int q = p; @@ -211,6 +212,7 @@ public int strLength(byte[]bytes, int p, int end) { return n; } + @Override public int strCodeAt(byte[]bytes, int p, int end, int index) { int n = 0; int q = p; diff --git a/src/org/jcodings/specific/BaseEUCJPEncoding.java b/src/org/jcodings/specific/BaseEUCJPEncoding.java index 2b007b30..f5390ce5 100644 --- a/src/org/jcodings/specific/BaseEUCJPEncoding.java +++ b/src/org/jcodings/specific/BaseEUCJPEncoding.java @@ -92,6 +92,7 @@ public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower } } + @Override protected boolean isLead(int c) { return ((c - 0xa1) & 0xff) > 0xfe - 0xa1; } diff --git a/src/org/jcodings/specific/EUCKREncoding.java b/src/org/jcodings/specific/EUCKREncoding.java index 924fbe42..8247ae54 100644 --- a/src/org/jcodings/specific/EUCKREncoding.java +++ b/src/org/jcodings/specific/EUCKREncoding.java @@ -69,6 +69,7 @@ public boolean isCodeCType(int code, int ctype) { } // euckr_islead + @Override protected boolean isLead(int c) { return ((c) < 0xa1 || (c) == 0xff); } diff --git a/src/org/jcodings/spi/Charsets.java b/src/org/jcodings/spi/Charsets.java index beec0462..7e739312 100644 --- a/src/org/jcodings/spi/Charsets.java +++ b/src/org/jcodings/spi/Charsets.java @@ -10,10 +10,13 @@ */ public class Charsets extends java.nio.charset.spi.CharsetProvider { private static final List charsets = Collections.singletonList((Charset) ISO_8859_16.INSTANCE); + + @Override public Iterator charsets() { return charsets.iterator(); } + @Override public Charset charsetForName(String charsetName) { if ("ISO-8859-16".equals(charsetName) || ISO_8859_16.INSTANCE.aliases().contains(charsetName)) { return ISO_8859_16.INSTANCE; diff --git a/src/org/jcodings/transcode/TranscoderDB.java b/src/org/jcodings/transcode/TranscoderDB.java index 1d6b38ae..e944b69d 100644 --- a/src/org/jcodings/transcode/TranscoderDB.java +++ b/src/org/jcodings/transcode/TranscoderDB.java @@ -219,6 +219,7 @@ private static EConv open0(byte[] source, byte[] destination, int ecflags) { numTrans = searchPath(source, destination, new SearchPathCallback() { int additional = 0; + @Override public void call(byte[] source, byte[] destination, int depth) { if (lentries.p == null) lentries.p = new Entry[depth + 1 + additional]; lentries.p[depth] = getEntry(source, destination); diff --git a/src/org/jcodings/transcode/specific/Cp50220_decoder_Transcoder.java b/src/org/jcodings/transcode/specific/Cp50220_decoder_Transcoder.java index 52060d63..6d0a8124 100644 --- a/src/org/jcodings/transcode/specific/Cp50220_decoder_Transcoder.java +++ b/src/org/jcodings/transcode/specific/Cp50220_decoder_Transcoder.java @@ -40,6 +40,7 @@ public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpInit(state); } + @Override public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiCp50221Decoder(statep, s, sStart, l); } diff --git a/src/org/jcodings/transcode/specific/Cp50221_decoder_Transcoder.java b/src/org/jcodings/transcode/specific/Cp50221_decoder_Transcoder.java index 78fb56be..b279a244 100644 --- a/src/org/jcodings/transcode/specific/Cp50221_decoder_Transcoder.java +++ b/src/org/jcodings/transcode/specific/Cp50221_decoder_Transcoder.java @@ -40,6 +40,7 @@ public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpInit(state); } + @Override public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiCp50221Decoder(statep, s, sStart, l); } diff --git a/src/org/jcodings/transcode/specific/Iso2022jp_decoder_Transcoder.java b/src/org/jcodings/transcode/specific/Iso2022jp_decoder_Transcoder.java index a5fedba9..41a562ea 100644 --- a/src/org/jcodings/transcode/specific/Iso2022jp_decoder_Transcoder.java +++ b/src/org/jcodings/transcode/specific/Iso2022jp_decoder_Transcoder.java @@ -40,6 +40,7 @@ public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpInit(state); } + @Override public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiIso50220jpDecoder(statep, s, sStart, l); } diff --git a/src/org/jcodings/transcode/specific/Iso2022jp_kddi_decoder_Transcoder.java b/src/org/jcodings/transcode/specific/Iso2022jp_kddi_decoder_Transcoder.java index 57c7eda0..001feb38 100644 --- a/src/org/jcodings/transcode/specific/Iso2022jp_kddi_decoder_Transcoder.java +++ b/src/org/jcodings/transcode/specific/Iso2022jp_kddi_decoder_Transcoder.java @@ -40,6 +40,7 @@ public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpKddiInit(state); } + @Override public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiIso2022jpKddiDecoder(statep, s, sStart, l); } diff --git a/src/org/jcodings/util/BytesHash.java b/src/org/jcodings/util/BytesHash.java index fdc12002..7237735a 100644 --- a/src/org/jcodings/util/BytesHash.java +++ b/src/org/jcodings/util/BytesHash.java @@ -29,6 +29,7 @@ public BytesHash(int size) { super(size); } + @Override protected void init() { head = new BytesHashEntry(); } diff --git a/src/org/jcodings/util/CaseInsensitiveBytesHash.java b/src/org/jcodings/util/CaseInsensitiveBytesHash.java index 33de8028..248ef39b 100644 --- a/src/org/jcodings/util/CaseInsensitiveBytesHash.java +++ b/src/org/jcodings/util/CaseInsensitiveBytesHash.java @@ -31,6 +31,7 @@ public CaseInsensitiveBytesHash(int size) { super(size); } + @Override protected void init() { head = new CaseInsensitiveBytesHashEntry(); } diff --git a/src/org/jcodings/util/Hash.java b/src/org/jcodings/util/Hash.java index 227aa0ea..e973018f 100644 --- a/src/org/jcodings/util/Hash.java +++ b/src/org/jcodings/util/Hash.java @@ -133,6 +133,7 @@ protected static int hashValue(int h) { return h & HASH_SIGN_BIT_MASK; } + @Override public Iterator iterator() { return new HashIterator(); } @@ -144,16 +145,19 @@ public HashIterator() { next = head.after; } + @Override public boolean hasNext() { return next != head; } + @Override public V next() { HashEntry e = next; next = e.after; return e.value; } + @Override public void remove() { throw new InternalException("not supported operation exception"); } @@ -170,20 +174,24 @@ public HashEntryIterator() { next = head.after; } + @Override public Iterator> iterator() { return this; } + @Override public boolean hasNext() { return next != head; } + @Override public HashEntry next() { HashEntry e = next; next = e.after; return e; } + @Override public void remove() { throw new InternalException("not supported operation exception"); } diff --git a/src/org/jcodings/util/IntArrayHash.java b/src/org/jcodings/util/IntArrayHash.java index 22e1f5f6..e9b588bf 100644 --- a/src/org/jcodings/util/IntArrayHash.java +++ b/src/org/jcodings/util/IntArrayHash.java @@ -29,6 +29,7 @@ public IntArrayHash(int size) { super(size); } + @Override protected void init() { head = new IntArrayHashEntry(); } diff --git a/src/org/jcodings/util/IntHash.java b/src/org/jcodings/util/IntHash.java index 9b0c1eba..20d6da7f 100644 --- a/src/org/jcodings/util/IntHash.java +++ b/src/org/jcodings/util/IntHash.java @@ -29,6 +29,7 @@ public IntHash(int size) { super(size); } + @Override protected void init() { head = new IntHashEntry(); } diff --git a/src/org/jcodings/util/ObjHash.java b/src/org/jcodings/util/ObjHash.java index 0403d0a0..8b96020f 100644 --- a/src/org/jcodings/util/ObjHash.java +++ b/src/org/jcodings/util/ObjHash.java @@ -21,6 +21,7 @@ public final class ObjHash extends Hash { + @Override protected void init() { head = new ObjHashEntry(); } @@ -38,6 +39,7 @@ public ObjHashEntry() { key = null; } + @Override public boolean equals(Object key) { if (this.key == key) return true; return this.key.equals(key); From b935983eea0fe5fb5addfac4cc6acaab5fb8224d Mon Sep 17 00:00:00 2001 From: sebthom Date: Sun, 11 Jun 2023 00:26:13 +0200 Subject: [PATCH 131/158] perf: remove unnecessary null check --- src/org/jcodings/transcode/EConv.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/org/jcodings/transcode/EConv.java b/src/org/jcodings/transcode/EConv.java index 5ca95b54..1197127c 100644 --- a/src/org/jcodings/transcode/EConv.java +++ b/src/org/jcodings/transcode/EConv.java @@ -851,7 +851,6 @@ public boolean equals(Object other) { EConv ec2 = (EConv)other; int i; - if (ec2 == null) return false; if (ec1.source != ec2.source && !Arrays.equals(ec1.source, ec2.source)) return false; From 076fff93615a62c5328dfb397397a9b4c28195b6 Mon Sep 17 00:00:00 2001 From: sebthom Date: Sun, 11 Jun 2023 13:07:27 +0200 Subject: [PATCH 132/158] fix: resource leak on IOException --- src/org/jcodings/util/ArrayReader.java | 30 +++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/org/jcodings/util/ArrayReader.java b/src/org/jcodings/util/ArrayReader.java index 5050c253..e07822e4 100644 --- a/src/org/jcodings/util/ArrayReader.java +++ b/src/org/jcodings/util/ArrayReader.java @@ -44,12 +44,17 @@ public static byte[] readByteArray(String name) { bytes[i] = dis.readByte(); } checkAvailable(dis, name); - dis.close(); return bytes; } catch (IOException ioe) { decorate(ioe, name); - return null; + } finally { + try { + dis.close(); + } catch (IOException ex) { + // ignore + } } + return null; } public static int[] readIntArray(String name) { @@ -61,12 +66,17 @@ public static int[] readIntArray(String name) { ints[i] = dis.readInt(); } checkAvailable(dis, name); - dis.close(); return ints; } catch (IOException ioe) { decorate(ioe, name); - return null; - } + } finally { + try { + dis.close(); + } catch (IOException ex) { + // ignore + } + } + return null; } public static int[][] readNestedIntArray(String name) { @@ -82,14 +92,18 @@ public static int[][] readNestedIntArray(String name) { iints[k] = dis.readInt(); } } - checkAvailable(dis, name); - dis.close(); return ints; } catch (IOException ioe) { decorate(ioe, name); - return null; + } finally { + try { + dis.close(); + } catch (IOException ex) { + // ignore + } } + return null; } static void checkAvailable(DataInputStream dis, String name) throws IOException { From 17644809d00b2cedbd53994c52f1f2544977f506 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 15 Jan 2025 17:11:02 -0600 Subject: [PATCH 133/158] Add copyright Fixes #60 --- LICENSE.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/LICENSE.txt b/LICENSE.txt index f8031949..ed2a963f 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,3 +1,5 @@ +Copyright (c) 2025 JRuby Team + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to From 8f4da579538f1d1e9dd72b5e34afb04982a79896 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 15 Jan 2025 17:16:22 -0600 Subject: [PATCH 134/158] [maven-release-plugin] prepare release jcodings-1.0.59 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 67e9b47e..1ae883c9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.59-SNAPSHOT + 1.0.59 JCodings Byte based encoding support library for java From edc4b7d364231bfcda9a0f67ed23bd4d72e8e0ab Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Wed, 15 Jan 2025 17:16:24 -0600 Subject: [PATCH 135/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1ae883c9..9fbcb3d3 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.59 + 1.0.60-SNAPSHOT JCodings Byte based encoding support library for java From 253ec4752627ea2c5d75c70bb2fb30d54fb9ed62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Thu, 16 Jan 2025 18:04:32 +0100 Subject: [PATCH 136/158] fix CP50220 transcoding --- .../transcode/TranscodeFunctions.java | 136 +++++++----------- .../transcode/TestCP51932ToCP50220.java | 24 ++++ 2 files changed, 76 insertions(+), 84 deletions(-) create mode 100644 test/org/jcodings/transcode/TestCP51932ToCP50220.java diff --git a/src/org/jcodings/transcode/TranscodeFunctions.java b/src/org/jcodings/transcode/TranscodeFunctions.java index a922bd40..d2fb87cf 100644 --- a/src/org/jcodings/transcode/TranscodeFunctions.java +++ b/src/org/jcodings/transcode/TranscodeFunctions.java @@ -539,16 +539,13 @@ public static int funSoCp50220Encoder(byte[] statep, byte[] s, int sStart, int l int output0 = oStart; byte[] sp = statep; - if (sp[0] == G0_JISX0201_KATAKANA) { + if (sp[0] == G0_JISX0201_KATAKANA && sp[2] != 0) { int c = sp[2] & 0x7F; int p = (c - 0x21) * 2; + sp[2] = 0; byte[] pBytes = tbl0208; - if (sp[1] != G0_JISX0208_1983) { - o[oStart++] = 0x1B; - o[oStart++] = (byte)'$'; - o[oStart++] = (byte)'B'; - } - sp[0] = G0_JISX0208_1983; + oStart = iso2022jp_put_state(sp, o, (int)sp[1], G0_JISX0208_1983, oStart); + o[oStart++] = pBytes[p++]; s0 = toUnsignedInt(s[sStart]); s1 = toUnsignedInt(s[sStart+1]); @@ -568,22 +565,25 @@ public static int funSoCp50220Encoder(byte[] statep, byte[] s, int sStart, int l if (l == 2 && s0 == 0x8E) { s1 = toUnsignedInt(s[sStart+1]); int p = (s1 - 0xA1) * 2; - byte[] pBytes = tbl0208; if ((0xA1 <= s1 && s1 <= 0xB5) || (0xC5 <= s1 && s1 <= 0xC9) || (0xCF <= s1 && s1 <= 0xDF)) { - if (sp[0] != G0_JISX0208_1983) { - o[oStart++] = 0x1b; - o[oStart++] = '$'; - o[oStart++] = 'B'; - sp[0] = G0_JISX0208_1983; - } + byte[] pBytes = tbl0208; + oStart = iso2022jp_put_state(sp, o, (int)sp[0], G0_JISX0208_1983, oStart); + o[oStart++] = pBytes[p++]; o[oStart++] = pBytes[p]; return oStart - output0; } - sp[2] = (byte)s1; + if (s1 > 0xDF) { /* undef */ + oStart = iso2022jp_put_state(sp, o, (int)sp[0], G0_JISX0201_KATAKANA, oStart); + o[oStart++] = (byte) (s1 & 0x7f); + sp[2] = 0; + return oStart - output0; + } + + sp[2] = (byte) s1; sp[1] = sp[0]; sp[0] = G0_JISX0201_KATAKANA; return oStart - output0; @@ -609,24 +609,7 @@ public static int funSoCp5022xEncoder(byte[] statep, byte[] s, int sStart, int l newstate = G0_JISX0208_1983; } - if (sp[0] != newstate) { - if (newstate == G0_ASCII) { - o[oStart++] = 0x1b; - o[oStart++] = '('; - o[oStart++] = 'B'; - } - else if (newstate == G0_JISX0201_KATAKANA) { - o[oStart++] = 0x1b; - o[oStart++] = '('; - o[oStart++] = 'I'; - } - else { - o[oStart++] = 0x1b; - o[oStart++] = '$'; - o[oStart++] = 'B'; - } - sp[0] = (byte)newstate; - } + oStart = iso2022jp_put_state(sp, o, (int)sp[0], newstate, oStart); s0 = toUnsignedInt(s[sStart]); if (l == 1) { @@ -647,16 +630,13 @@ public static int finishCp50220Encoder(byte[] statep, byte[] o, int oStart, int if (sp[0] == G0_ASCII) return 0; - if (sp[0] == G0_JISX0201_KATAKANA) { + if (sp[0] == G0_JISX0201_KATAKANA && sp[2] != 0) { int c = sp[2] & 0x7F; int p = (c - 0x21) * 2; byte[] pBytes = tbl0208; - if (sp[1] != G0_JISX0208_1983) { - o[oStart++] = 0x1b; - o[oStart++] = '$'; - o[oStart++] = 'B'; - } - sp[0] = G0_JISX0208_1983; + + oStart = iso2022jp_put_state(sp, o, (int)sp[1], G0_JISX0208_1983, oStart); + o[oStart++] = pBytes[p++]; o[oStart++] = pBytes[p]; } @@ -739,6 +719,32 @@ public static int funSoEucjpToStatelessIso2022jp(byte[] statep, byte[] s, int sS return 3; } + private static int iso2022jp_put_state(byte[] sp, byte[] o, int oldstate, int newstate, int oStart) { + if (oldstate != newstate) { + o[oStart++] = 0x1b; + switch (newstate) { + case G0_ASCII: + o[oStart++] = '('; + o[oStart++] = 'B'; + break; + case G0_JISX0201_KATAKANA: + o[oStart++] = '('; + o[oStart++] = 'I'; + break; + case G0_JISX0208_1978: + o[oStart++] = '$'; + o[oStart++] = '@'; + break; + default: + o[oStart++] = '$'; + o[oStart++] = 'B'; + break; + } + sp[0] = (byte) newstate; + } + return oStart; + } + public static int funSoIso2022jpEncoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { byte[] sp = statep; int output0 = oStart; @@ -751,24 +757,7 @@ else if (toUnsignedInt(s[sStart]) == EMACS_MULE_LEADING_CODE_JISX0208_1978) else newstate = G0_JISX0208_1983; - if (sp[0] != newstate) { - if (newstate == G0_ASCII) { - o[oStart++] = 0x1b; - o[oStart++] = '('; - o[oStart++] = 'B'; - } - else if (newstate == G0_JISX0208_1978) { - o[oStart++] = 0x1b; - o[oStart++] = '$'; - o[oStart++] = '@'; - } - else { - o[oStart++] = 0x1b; - o[oStart++] = '$'; - o[oStart++] = 'B'; - } - sp[0] = (byte)newstate; - } + oStart = iso2022jp_put_state(sp, o, (int)sp[0], newstate, oStart); if (l == 1) { o[oStart++] = (byte)(s[sStart] & 0x7f); @@ -787,10 +776,8 @@ public static int finishIso2022jpEncoder(byte[] statep, byte[] o, int oStart, in if (sp[0] == G0_ASCII) return 0; - o[oStart++] = 0x1b; - o[oStart++] = '('; - o[oStart++] = 'B'; - sp[0] = G0_ASCII; + + oStart = iso2022jp_put_state(sp, o, (int)sp[0], G0_ASCII, oStart); return oStart - output0; } @@ -960,24 +947,7 @@ else if (s0 == EMACS_MULE_LEADING_CODE_JISX0208_1978) else newstate = G0_JISX0208_1983; - if (sp[0] != newstate) { - o[oStart++] = 0x1b; - switch (newstate) { - case G0_ASCII: - o[oStart++] = '('; - o[oStart++] = 'B'; - break; - case G0_JISX0208_1978: - o[oStart++] = '$'; - o[oStart++] = '@'; - break; - default: - o[oStart++] = '$'; - o[oStart++] = 'B'; - break; - } - sp[0] = (byte)newstate; - } + oStart = iso2022jp_put_state(sp, o, (int)sp[0], G0_ASCII, oStart); if (l == 1) { o[oStart++] = (byte)(s0 & 0x7f); @@ -999,10 +969,8 @@ public static int finishIso2022jpKddiEncoder(byte[] statep, byte[] o, int oStart if (sp[0] == G0_ASCII) return 0; - o[oStart++] = 0x1b; - o[oStart++] = '('; - o[oStart++] = 'B'; - sp[0] = G0_ASCII; + + oStart = iso2022jp_put_state(sp, o, (int)sp[0], G0_ASCII, oStart); return oStart - output0; } diff --git a/test/org/jcodings/transcode/TestCP51932ToCP50220.java b/test/org/jcodings/transcode/TestCP51932ToCP50220.java new file mode 100644 index 00000000..d1cf8b4d --- /dev/null +++ b/test/org/jcodings/transcode/TestCP51932ToCP50220.java @@ -0,0 +1,24 @@ +package org.jcodings.transcode; + +import org.jcodings.Ptr; +import org.junit.Test; +import org.junit.Assert; +import java.util.Arrays; + +public class TestCP51932ToCP50220 { + @Test + public void testCP51932ToCP50220() throws Exception { + byte[] src = "\u008E\u00A1\u008E\u00FE".getBytes("iso-8859-1"); + byte[] dst = new byte[100]; + Ptr srcPtr = new Ptr(0); + Ptr dstPtr = new Ptr(0); + EConv econv = TranscoderDB.open("CP51932", "CP50220", 0); + econv.convert(src, srcPtr, src.length, dst, dstPtr, dst.length, 0); + + byte[] str = Arrays.copyOf(dst, dstPtr.p); + + byte[] expected = "\u001B\u0024\u0042\u0021\u0023\u001B\u0028\u0049\u007E\u001B\u0028\u0042".getBytes("iso-8859-1"); + byte[] actual = Arrays.copyOf(dst, dstPtr.p); + Assert.assertEquals(new String(expected), new String(actual)); + } +} \ No newline at end of file From c5f9e13e7aac39c1b84af7a0ab261a0314a31eab Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 16 Jan 2025 11:29:41 -0600 Subject: [PATCH 137/158] [maven-release-plugin] prepare release jcodings-1.0.60 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9fbcb3d3..f617aed2 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.60-SNAPSHOT + 1.0.60 JCodings Byte based encoding support library for java From 22211850c281ff3ba4cc9fc59034f147aa86ab17 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 16 Jan 2025 11:29:43 -0600 Subject: [PATCH 138/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f617aed2..2caec5cd 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.60 + 1.0.61-SNAPSHOT JCodings Byte based encoding support library for java From 8c011587d9e4ff5a2969fe563cb585dbd8b148c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Fri, 17 Jan 2025 00:44:54 +0100 Subject: [PATCH 139/158] add a missing line --- src/org/jcodings/transcode/TranscodeFunctions.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/org/jcodings/transcode/TranscodeFunctions.java b/src/org/jcodings/transcode/TranscodeFunctions.java index d2fb87cf..fe13390f 100644 --- a/src/org/jcodings/transcode/TranscodeFunctions.java +++ b/src/org/jcodings/transcode/TranscodeFunctions.java @@ -545,6 +545,7 @@ public static int funSoCp50220Encoder(byte[] statep, byte[] s, int sStart, int l sp[2] = 0; byte[] pBytes = tbl0208; oStart = iso2022jp_put_state(sp, o, (int)sp[1], G0_JISX0208_1983, oStart); + sp[0] = G0_JISX0208_1983; o[oStart++] = pBytes[p++]; s0 = toUnsignedInt(s[sStart]); @@ -641,10 +642,7 @@ public static int finishCp50220Encoder(byte[] statep, byte[] o, int oStart, int o[oStart++] = pBytes[p]; } - o[oStart++] = 0x1b; - o[oStart++] = '('; - o[oStart++] = 'B'; - sp[0] = G0_ASCII; + oStart = iso2022jp_put_state(sp, o, (int)sp[0], G0_ASCII, oStart); return oStart - output0; } From 4b2624a339e7421f766e72eb593e231e79b99a5d Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 16 Jan 2025 18:21:57 -0600 Subject: [PATCH 140/158] [maven-release-plugin] prepare release jcodings-1.0.61 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2caec5cd..647d76b1 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.61-SNAPSHOT + 1.0.61 JCodings Byte based encoding support library for java From 2c3c3033801eb76cc2b4c508718d98cb3c8be314 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 16 Jan 2025 18:21:59 -0600 Subject: [PATCH 141/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 647d76b1..a5c947ae 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.61 + 1.0.62-SNAPSHOT JCodings Byte based encoding support library for java From 566399c1357be29593632cf7e17be4e1a8209556 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Thu, 27 Feb 2025 01:00:32 +0100 Subject: [PATCH 142/158] update unicode to 15.0 --- resources/tables/CR_Age_14_0.bin | Bin 0 -> 5656 bytes resources/tables/CR_Age_15_0.bin | Bin 0 -> 5728 bytes resources/tables/CR_Ahom.bin | Bin 32 -> 32 bytes resources/tables/CR_Alnum.bin | Bin 5864 -> 6184 bytes resources/tables/CR_Alpha.bin | Bin 5568 -> 5864 bytes resources/tables/CR_Arabic.bin | Bin 464 -> 472 bytes resources/tables/CR_Assigned.bin | Bin 5424 -> 5664 bytes resources/tables/CR_Balinese.bin | Bin 24 -> 24 bytes resources/tables/CR_Brahmi.bin | Bin 32 -> 32 bytes resources/tables/CR_C.bin | Bin 5440 -> 5704 bytes resources/tables/CR_Canadian_Aboriginal.bin | Bin 24 -> 32 bytes resources/tables/CR_Case_Ignorable.bin | Bin 3288 -> 3504 bytes resources/tables/CR_Cased.bin | Bin 1136 -> 1264 bytes resources/tables/CR_Cf.bin | Bin 168 -> 176 bytes .../tables/CR_Changes_When_Casefolded.bin | Bin 4920 -> 4984 bytes .../tables/CR_Changes_When_Casemapped.bin | Bin 1000 -> 1056 bytes .../tables/CR_Changes_When_Lowercased.bin | Bin 4816 -> 4880 bytes .../tables/CR_Changes_When_Titlecased.bin | Bin 4952 -> 5016 bytes .../tables/CR_Changes_When_Uppercased.bin | Bin 4960 -> 5024 bytes resources/tables/CR_Cn.bin | Bin 5424 -> 5664 bytes resources/tables/CR_Common.bin | Bin 1392 -> 1392 bytes resources/tables/CR_Cypro_Minoan.bin | Bin 0 -> 16 bytes resources/tables/CR_Cyrillic.bin | Bin 72 -> 88 bytes resources/tables/CR_Dash.bin | Bin 184 -> 192 bytes .../CR_Default_Ignorable_Code_Point.bin | Bin 144 -> 144 bytes resources/tables/CR_Devanagari.bin | Bin 40 -> 48 bytes resources/tables/CR_Diacritic.bin | Bin 1416 -> 1568 bytes resources/tables/CR_Digit.bin | Bin 496 -> 520 bytes resources/tables/CR_Egyptian_Hieroglyphs.bin | Bin 24 -> 16 bytes resources/tables/CR_Emoji.bin | Bin 1224 -> 1216 bytes resources/tables/CR_Emoji_Modifier_Base.bin | Bin 312 -> 328 bytes resources/tables/CR_Emoji_Presentation.bin | Bin 656 -> 656 bytes resources/tables/CR_Ethiopic.bin | Bin 264 -> 296 bytes resources/tables/CR_Extender.bin | Bin 264 -> 272 bytes resources/tables/CR_Glagolitic.bin | Bin 64 -> 56 bytes resources/tables/CR_Graph.bin | Bin 5464 -> 5704 bytes resources/tables/CR_Grapheme_Base.bin | Bin 6680 -> 7008 bytes .../CR_Grapheme_Cluster_Break_Control.bin | Bin 160 -> 160 bytes .../CR_Grapheme_Cluster_Break_Extend.bin | Bin 2768 -> 2920 bytes .../CR_Grapheme_Cluster_Break_Prepend.bin | Bin 112 -> 128 bytes .../CR_Grapheme_Cluster_Break_SpacingMark.bin | Bin 1280 -> 1328 bytes resources/tables/CR_Grapheme_Extend.bin | Bin 2760 -> 2912 bytes resources/tables/CR_Grapheme_Link.bin | Bin 440 -> 456 bytes resources/tables/CR_Han.bin | Bin 160 -> 176 bytes resources/tables/CR_Hiragana.bin | Bin 48 -> 56 bytes resources/tables/CR_ID_Continue.bin | Bin 5848 -> 6152 bytes resources/tables/CR_ID_Start.bin | Bin 4984 -> 5280 bytes resources/tables/CR_Ideographic.bin | Bin 160 -> 168 bytes resources/tables/CR_In_Ahom.bin | Bin 16 -> 16 bytes resources/tables/CR_In_Arabic_Extended_B.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Arabic_Extended_C.bin | Bin 0 -> 16 bytes ..._In_CJK_Unified_Ideographs_Extension_H.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Cypro_Minoan.bin | Bin 0 -> 16 bytes .../tables/CR_In_Cyrillic_Extended_D.bin | Bin 0 -> 16 bytes .../tables/CR_In_Devanagari_Extended_A.bin | Bin 0 -> 16 bytes ...In_Egyptian_Hieroglyph_Format_Controls.bin | Bin 16 -> 16 bytes .../tables/CR_In_Ethiopic_Extended_B.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Kaktovik_Numerals.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Kana_Extended_B.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Kawi.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Latin_Extended_F.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Latin_Extended_G.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Nag_Mundari.bin | Bin 0 -> 16 bytes resources/tables/CR_In_No_Block.bin | Bin 440 -> 416 bytes resources/tables/CR_In_Old_Uyghur.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Tangsa.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Tangut_Supplement.bin | Bin 16 -> 16 bytes resources/tables/CR_In_Toto.bin | Bin 0 -> 16 bytes ...nadian_Aboriginal_Syllabics_Extended_A.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Vithkuqi.bin | Bin 0 -> 16 bytes .../CR_In_Znamenny_Musical_Notation.bin | Bin 0 -> 16 bytes resources/tables/CR_Inherited.bin | Bin 232 -> 240 bytes resources/tables/CR_Kaithi.bin | Bin 24 -> 24 bytes resources/tables/CR_Kannada.bin | Bin 112 -> 112 bytes resources/tables/CR_Katakana.bin | Bin 80 -> 120 bytes resources/tables/CR_Kawi.bin | Bin 0 -> 32 bytes resources/tables/CR_Khojki.bin | Bin 24 -> 24 bytes resources/tables/CR_L.bin | Bin 4984 -> 5280 bytes resources/tables/CR_LC.bin | Bin 1064 -> 1152 bytes resources/tables/CR_Lao.bin | Bin 96 -> 96 bytes resources/tables/CR_Latin.bin | Bin 264 -> 320 bytes resources/tables/CR_Ll.bin | Bin 5168 -> 5272 bytes resources/tables/CR_Lm.bin | Bin 496 -> 576 bytes resources/tables/CR_Lo.bin | Bin 3920 -> 4088 bytes resources/tables/CR_Lower.bin | Bin 5224 -> 5376 bytes resources/tables/CR_Lu.bin | Bin 5112 -> 5176 bytes resources/tables/CR_M.bin | Bin 2328 -> 2488 bytes resources/tables/CR_Mc.bin | Bin 1408 -> 1464 bytes resources/tables/CR_Mn.bin | Bin 2624 -> 2776 bytes resources/tables/CR_Mongolian.bin | Bin 64 -> 56 bytes resources/tables/CR_N.bin | Bin 1072 -> 1104 bytes resources/tables/CR_Nag_Mundari.bin | Bin 0 -> 16 bytes resources/tables/CR_No.bin | Bin 576 -> 584 bytes resources/tables/CR_Old_Uyghur.bin | Bin 0 -> 16 bytes resources/tables/CR_Other_Alphabetic.bin | Bin 1848 -> 1928 bytes resources/tables/CR_Other_Lowercase.bin | Bin 168 -> 232 bytes resources/tables/CR_Pd.bin | Bin 152 -> 160 bytes resources/tables/CR_Pe.bin | Bin 584 -> 616 bytes resources/tables/CR_Po.bin | Bin 1456 -> 1504 bytes .../CR_Prepended_Concatenation_Mark.bin | Bin 56 -> 64 bytes resources/tables/CR_Print.bin | Bin 5440 -> 5680 bytes resources/tables/CR_Ps.bin | Bin 608 -> 640 bytes resources/tables/CR_Punct.bin | Bin 1488 -> 1536 bytes resources/tables/CR_S.bin | Bin 1840 -> 1864 bytes resources/tables/CR_Sc.bin | Bin 176 -> 176 bytes resources/tables/CR_Sentence_Terminal.bin | Bin 616 -> 648 bytes resources/tables/CR_Sk.bin | Bin 248 -> 256 bytes resources/tables/CR_So.bin | Bin 1464 -> 1480 bytes resources/tables/CR_Soft_Dotted.bin | Bin 256 -> 280 bytes resources/tables/CR_Tagalog.bin | Bin 24 -> 24 bytes resources/tables/CR_Takri.bin | Bin 24 -> 24 bytes resources/tables/CR_Tangsa.bin | Bin 0 -> 24 bytes resources/tables/CR_Telugu.bin | Bin 104 -> 112 bytes resources/tables/CR_Terminal_Punctuation.bin | Bin 840 -> 872 bytes resources/tables/CR_Toto.bin | Bin 0 -> 16 bytes resources/tables/CR_Unified_Ideograph.bin | Bin 128 -> 136 bytes resources/tables/CR_Unknown.bin | Bin 5408 -> 5648 bytes resources/tables/CR_Upper.bin | Bin 5152 -> 5216 bytes resources/tables/CR_Variation_Selector.bin | Bin 32 -> 40 bytes resources/tables/CR_Vithkuqi.bin | Bin 0 -> 72 bytes resources/tables/CR_Word.bin | Bin 5864 -> 6168 bytes resources/tables/CR_XID_Continue.bin | Bin 5904 -> 6208 bytes resources/tables/CR_XID_Start.bin | Bin 5040 -> 5336 bytes resources/tables/CR_XPosixPunct.bin | Bin 1448 -> 1496 bytes resources/tables/CaseFold.bin | Bin 18364 -> 18844 bytes resources/tables/CaseUnfold_11.bin | Bin 16384 -> 16864 bytes .../Transcoder_SingleByte_ByteArray.bin | Bin 26606 -> 27903 bytes .../Transcoder_SingleByte_WordArray.bin | Bin 51392 -> 52764 bytes scripts/generate.rb | 2 +- src/org/jcodings/Config.java | 10 +-- .../jcodings/transcode/TranscoderList.java | 68 ++++++++++-------- .../jcodings/unicode/UnicodeCodeRange.java | 35 ++++++++- 132 files changed, 77 insertions(+), 38 deletions(-) create mode 100644 resources/tables/CR_Age_14_0.bin create mode 100644 resources/tables/CR_Age_15_0.bin create mode 100644 resources/tables/CR_Cypro_Minoan.bin create mode 100644 resources/tables/CR_In_Arabic_Extended_B.bin create mode 100644 resources/tables/CR_In_Arabic_Extended_C.bin create mode 100644 resources/tables/CR_In_CJK_Unified_Ideographs_Extension_H.bin create mode 100644 resources/tables/CR_In_Cypro_Minoan.bin create mode 100644 resources/tables/CR_In_Cyrillic_Extended_D.bin create mode 100644 resources/tables/CR_In_Devanagari_Extended_A.bin create mode 100644 resources/tables/CR_In_Ethiopic_Extended_B.bin create mode 100644 resources/tables/CR_In_Kaktovik_Numerals.bin create mode 100644 resources/tables/CR_In_Kana_Extended_B.bin create mode 100644 resources/tables/CR_In_Kawi.bin create mode 100644 resources/tables/CR_In_Latin_Extended_F.bin create mode 100644 resources/tables/CR_In_Latin_Extended_G.bin create mode 100644 resources/tables/CR_In_Nag_Mundari.bin create mode 100644 resources/tables/CR_In_Old_Uyghur.bin create mode 100644 resources/tables/CR_In_Tangsa.bin create mode 100644 resources/tables/CR_In_Toto.bin create mode 100644 resources/tables/CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended_A.bin create mode 100644 resources/tables/CR_In_Vithkuqi.bin create mode 100644 resources/tables/CR_In_Znamenny_Musical_Notation.bin create mode 100644 resources/tables/CR_Kawi.bin create mode 100644 resources/tables/CR_Nag_Mundari.bin create mode 100644 resources/tables/CR_Old_Uyghur.bin create mode 100644 resources/tables/CR_Tangsa.bin create mode 100644 resources/tables/CR_Toto.bin create mode 100644 resources/tables/CR_Vithkuqi.bin diff --git a/resources/tables/CR_Age_14_0.bin b/resources/tables/CR_Age_14_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..30faf1fc4e0f583b1a82d6116cad1fbbed985bfc GIT binary patch literal 5656 zcmXZg3v^Z0nE>Fu1A*k8b8q6k5ON_gair>qU{I_0sAgKLEe=zvwwAGII<@LRE2(wV znPnxNw!YDn)>^8gI9Q%lg00p^bTVzJuTi4%P)15=5>Zc$VA3aNe1;~YAJ98N7BME z9Lpy;o>`p8DP?NRe3~=)9A}{?nJ<>dmM(^D7=gy&3gpHlp6lGpIN7JiTRoqB=9`%)G~bMnXu`o2WNYZ<3Pys@+=R7GI$6r? zEaT_gRd%;{4=cD2JxKH*c>r}MPhx*3f8c4JMcs+IORRS?O5KTlsKk)^Uz$UmX&!Z^ z>P*#@sw-7jdIsuBXQQrEU8(0G{R;nx+Dh!(RDG%X(nY8-wNF!ZrRqx6mC8Alb85ZP zhmd#Ljs2O*JC%1T?^NFD7PewAP6FbWaFbb!63%RYz7GS#@OPot1Z1 z-dTBPzreZ3FDt+7V(hQ%_tF3CPtoh_2IQ7~oF~e9M7d?@&;6k6I`Jm-D7S)Nl&uoYoilGvUvlOy(VLvUsNjbbFt2O>s(^3 z^VT}w#tq0lzl2V@co1uve*|;p`c2OdsltG;=ks zt6xhO=65O-561c8G+H>B)-rpo_$}JG0{0i!;r^ocPq7z$FWSSCr(mqf7tn@!Cokqk zI$6eY?#KO;t(jZGl)q;#*JAuB@AGj84JRO%25aA7%^IvrgK-)j;|Z*BLob6NG#aN# zznT=>3`XQ=b*`R z(DVU&84kg8q4^>%#vX0ftL9sgZ?ko6UQQ44Z5{~W5Z51aGtN&vj8^Q;scj)lv!2tg z#7tFpuygJ^X>Eu@2LF*~%;Y zk-iXS=*^4{tlNw`k;l=2EetReLW|!mr}1}~x5c$BBO%PJ#Kkjbq7O4W@qU}>zGDui zIfVOe!SVa#abIr;EA79Pt$Y;1D&wwt7ROh;$jfEsUiB*azxpUzI1%@)zKRYuqNdfZ zTiqAJnsczeYwX80&aZi%O*p?st!suuSQ|K=R^~95d3+Vm_*!efc5evlBIBqg$3fK5 z%wZhC4CJ+LA?>`w0Q*DurFph_A8zYH-P@i+AGJLUehb$R%FCfJWS*e{lW0VKL$f%A zQ_EUKy&w7vp4FiUpUg20pA44II2^`9FW@8@T#Bq%4$NUHP@H?JnONe7#Ki2WF z%UMGgFY^kQ*FJj&yAhd9o7Gb|i&M(lQ}q;@I1%@i zn7{fr$gz48FNNqkIr>hHnQ^2Pn8+lG$isJW%$$UAd%7h05R-uW zd}Bu6k}+{@ayeJ?BbIR&)*_LA>U!U4G3`K4QsenPis@j8S?iLuE?Hyc+PD_i<=mTF z$NlJK&N|ctTwmk*nt8NyBhJ@6M<4R5bzQCfS$j7B!eV~Q^JTr_ZU)#NqSrt?=s2wD zL1!|TE9qb-yU_c*>+%Pohxt=+K7SoIl-WzZJ7WGe?8m&`<<;REB&Bs13T+BCV=ZX*~ zn0LbYI6vWQ$bZ69^zv$m6aAj}5Rb4UM6bqJXTCb)*Uh61M zkN6(?bm+1Wrv@%Vo>Q&g)Q%88@tF{hHr~I=B z#^3T*i2f|bm(>4KAM)~NIKKR4+PFHz&3qFcr@14f@FPq8(`H~oI|EY$MmJTBnE5dZRR zejVaF5%c>biTz{Hv;HRJ+;4yM%emxmag=rJKZfJ*4(Zp!5`F9+_35%R#ZhW1kwgEe zIjFDyi|B2?wJteN93{t+^Tko~%jDcY>TCQH7nNNiF2K8{|8lP2D*hGww*T6)4)I2A z=1%Tq1=hBI4eNLueeCx<4d}7}&sn@!xFXMeOtUT>swvSerc+)N(Sd zd=CBJqvkzrd?Up7UB7o5JNOIc-TQHfA36Tfcj(|1`gj}XN9}WdUqUVVyKgRfwy%xr z=|mp;x{#|+>Nt1~&ij6jzMtcu9u0cd2K8sKgX?hLpyz4OeS?qD!$x{}l|J5JfW0C5 z{*FUS`3cYB_|X0kM}|Yi%AKKNm49yi%`93&#UqV0hl&^Or7Kjt-4`m&Fyk zhcTmZWF(9g$BLC=r8rI;Cyp1#i&bKkSS?nI88IU!Vj`wuDrUv3nDf>ASIy$$zy7mK Md^hBruN@ire+L+fLjV8( literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Age_15_0.bin b/resources/tables/CR_Age_15_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..f3aaf078992913449286aa6daa2f55c9579ed389 GIT binary patch literal 5728 zcmXZg3v^Z0nE>Fu69UOS=iY>SArMGR9Pu$C8q}(&)wH$R;xMK@Y8i{BQ>zYCNgW5B z87rCTLwukqt+iA~VX!=_1Y50EbTVzJuMwiW)M^QBmqo2Hq9P=c%$M8iTA%;A=dt(y z|9hX4vk0N$?hwkJ55@n=uMeU8-&n}Exs}^X?hu!=B7}9X?l2z zcljWM(PkKvrJ9+{Vgua_a4>|*X*6>NEnLE-C2itd+L23TC+4dBQ3zGv;ycK-N)A=d zRehh;tfh;GOCA*;XCuEsu2s*V2UVNdS@N3rI=lEIZ!i=>CQ?oX8Pt=hp}2Ln&v*p&X4IS6gnBd2qTb94^py09>ddG!^BxBn4k1x*qTWQkNs4+C^(N{~)SIX` zQE#H&M7@c66Llu)OwK}miTV=tCF)Bq;$qa6%;7S=iuw}!FZoZ@m#8nf6>FVzvV^-> z%8$9X9weo`>{H`~zw$vTsxMrRq!PqsG)eP1TjED^*u2=Ty$A^-3Q> z-swi{&s5&2yi<9n@=mw21A8<5J=QJ#Bl1t*#oDFshmciARvlS&WYv*XM^@fhd1vLF zm3Q_$E<}D=`DGVke`UXg{%3!PUS~HTx9k%-1Cd+q>G2KruoM(XI}nA_GI3CdHLt{EU#aM8mv=cJQFc?!Ptcx=|JvKnSJ}6YFT=23$9B zEnS%3sZe(a&eu()nbT+~vDfOZrk(3>f89FVU+4W(*Mq*-*~612W2{M+(uR5`E#wwD zS;{gV#Ql@3nOnl-zoV6#F#hEC`8b67laWikwXe5k_12}{IQ75eNvv^w4+9}I7^hLc z8Wr5=M`IJ8#hN#|x6$~G7c;x$5^=q6>Ho0J6^|g(C9g6 z{D6H7gkqvR=cgP&3-;!ewh*RTQz zi@QTOMn8@@5W=*>IkIG$IHH*=nNK_VJ?)1qVYH7~FQ=hvup%}@wy11HhKELxe(m+_3Rwf1ZGg|IF%nksUPrIsd+ z;3$qoUhC%3&O7vTAcUWqXQ%h!&Mwrw^Lg}9+rz-sxPCxh4uwJU3>KI`1M(X@h0{5s zq(#*G!O!4X9XuQP4(ivzJ6XchsCTH2CeG(VuHY)pz*okL<_%(WYgFWuX-)S-JKu=QRrRqrsLd;s1taZs6E7!(NxGv}3+&Uga zFLTx*XU|l-zS{NGvuWoRoUeYKUgTF3us>_g=U-UJuXv%PN8Cd{2SW53h+|L0nvOk( zRu&+SvAfuf-sfGHAB!I5KZW!8@3N@GUh>@$^LJuD=JhVG4&NX#{}$%Uo6l<@7OYFb zx)iKQp_&?uTR4iNY36uNK(7n>Q#g&YkYhnV3+JNFLTibAQy4J^`@C=kU#FexLL6t_ zahKryxUV4paZl63Dqb*mqV_s9*Nvx^iKw;iWKO}ob;hYPf1Ua3j8nIYwd~|o z{uJUQ^Gwo{Nv@mp-*mA*#L13NHdnn^Ur7dQTyO09&*J)e_0+dx&FYt6{CaCv|7eI_ z+p$5u4eo6)PD6tG8$2sTp4)~`awg_)FkXW^8`}69S8^3|@g8jG#PiYceSX9;%ymdF z@@+INYwRlN7T-f34_g}I6xUC=hIXv)l#UP&|4fL-nddnDZg&2}i$Xk0 zJX;^H66dOYZVQ*v#y??dlu&RV!h@YcfLB>U3c?GAubYc-yY&(aj{;ncYgi*n0x&o z2N?>n%lQp|!|^5Z*>FB;EV^9O^9}7GKJ31YuHUHl8~xsRBONTF6aCxh9kp>qi2fwT zEz@X5pSHB}>kxY!?~#K~nE2um{4H;V=+9?-Nk3ldW-GnO*PrdU^^3G|Lx|h_-gY65 zZ8O)l`_PAN_Gr;h#Ff|s+kVPJJkAp(Pm1!`wkgEz6^tQ6mT}Zl&mqjJIuLbb%?%Q;?B(>zIq$?Ag@=Kvp&RK^4?|4U59gYh&~Tu?`W(|??fhZ zD2Fixz3CmfPXBtZ#(Iy~?Y`Z|;P`IO$!>Y={ycxrc_IFx6E**#n*-R_BmUHb-+%7q z4fgOh_T-=Y=w~RzJ;vYj8=huIh;RD+=DD;on@hPY#J_xlpNIHPL>@kIVqZCW+SiC$ z`s}MdwGc@mZG0`n_g%kl zC$I4r%)9U75I=JKqXqmsuh7feI6q>)^ZOHO(BJ*7=-K`@Zl)7??C(OZKGEaA1vu|} zJo+Aw1Nt)1!6IBg;F%gw)4(P+^E-O6#|HZG9`^kn2bb^zp2P9M10fC%g|d~qLfI<+ zT>Fa|w1l$98fXe-o0roS%HHk`W%4c?aNPCfg_*R5^264L@{!-e!(o&-N~{no#L?nt waf~=dtQ0H7DzQq;h#4^v6EPK2F)L=poUiY{Y7!Uz^`Cd*yCLU%&G7L51Ed3)r2qf` literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Ahom.bin b/resources/tables/CR_Ahom.bin index 7a42287051b66e115720e1bb2771a961e739fce3..9559430f81c3e936e46c341eff3dfa54b05e4ebb 100644 GIT binary patch delta 6 NcmY#Tm>|#S1^@(00XF~u delta 6 NcmY#Tm>|z+4*Wbgn diff --git a/resources/tables/CR_Alnum.bin b/resources/tables/CR_Alnum.bin index 0d05c34a811dfd6c56f173187f0cd945eb385313..83f5220e70cfa9170cef7eb6ea2a643c7086952b 100644 GIT binary patch delta 621 zcmXZXO=wd=6o%n*lHA){t4Zu74HROeK_~@DsHLC_X+evEi%=-RMYZ5U5GrvYinyqX z6h$<26kP~L0@jTr@e0--q`0yoS`k4Pnh--$5Pypc5vy;Yi-$93=9@Xp(&pPKN5pOy z@dwIIK_giaXBy{l5qT_lb9%#P_6K%Y<05OvO+IiS_JP$$RPhN7e8UecdmF8c>KX62 z9aYN}iN?+KwuasPLZthpnR24K$Ghef)nwNEGy6Jr$DWJKF5)%bta?j*kDuPXj$6LN zR#wzHfs;6o3z)%WT)|b`L;+=Zcz{QEENY8r+aQK8h6x(?GBh(`wRxwev8%@L0_k@(>JSV mU4E3C^fqk)>Jl&>`_>^jZNM6cb8(|1Y8lD| zY{hG_Wj=|8^vt&M=~D-)NwlN4<9TvyAfFalQQ(8btLFpoD`G}0iX~CgZR?DjA~01F z>mtb2n*T z_uK|?GSi`mPc!$tpB<0O6jh7-key^Rx0UWm_Q%AEXy{?CO#C|W$UxP_b7D3Enqd)csvPo-okeETI(sKxr9lA)65g|pG z_!I?Q3=f`STfc)^A){Lnv526c+O)7i6f5ZzS?{5T7oX<~pYOwSc#56XowkTIC*u21 zu&2}=60t{d9b=fpb8l8J`^;f~+UghC&~HZkr`?a7KB0oo_=#n&=1-_z^*S1(YPE=j zqoy}7-yV4>5_u)kCfJR=ID(_-^*ZdFnsU=Wv$U>n%L|d|5?)3Bd+>^Jf^F^v zQRgBkJF|FJXOhA5+T%?IW7-%_iH0+#=-k)5IkRcT715}J5DuanDdU7B;lVcSsLSLuOLx@wI_NtYSb!DS`qvGK UyPvA;7CG`lTD||LoV3RLKmM#y@Bjb+ diff --git a/resources/tables/CR_Arabic.bin b/resources/tables/CR_Arabic.bin index 26666f5d0376adbba0617f59c2abcadaf01b648e..b7a3b8482dbda641617a20c484f02a20f015099d 100644 GIT binary patch delta 133 zcmcb>e1n;Tfq|hEh^;1a$WPQa$t_@D;OGP52|zp%h-U!tLm++(#Qzx>eg^>YAt1iY z!0^`=h#i2qABZOb@o^wN55*sVG*JCNpn3mFfVd2Z|1dD}B>-_95dQ_@{~HeoFaiLY C94N#9 delta 123 zcmcb?e1VyRfq|hIh%F~_$g|2YFtEu@R56cTz`($<1&Fr+@o^x&48#wC_%RUwXJGgp z0K^A@7%2YN7KnlTzx_Zw35bE}|9$}CzYGlj3V^r-h|7TZ4+A4#0ua}2JR!gc0GXL2 AJ^%m! diff --git a/resources/tables/CR_Assigned.bin b/resources/tables/CR_Assigned.bin index 65c8c14084e1bc74280d419b0a64cc4fbc1d70b0..3eeb82e7479387d150372845c7402ff775989287 100644 GIT binary patch delta 791 zcmXZaUr1AN6bJBgT=U*#``c7-=q!oZNH!!a#e@n)B1kGBk%dn^1kqlS$S4WIipXuJ zXpcz`J_K!cAJVcCC9;TVlVDQekYUl^q2%nE+E?=7!;kwrzjJy+ zOU8ImeECs(g2+X17+TZ8n2*PzKH@i*eh;5f)RGQ64c)vu=Ydj=Ti<_Hd z(9&f_rIICL41--J*=v1(IkDRY4yc0$Xp^+H+Tsfl`{s%LII_D{%55IgbK=t@@LHN} zS88He;@ATGhGjrsu~p(Y5(c(I^@bL#N1=6{q-=FXm=#Y{fghRxM<&L^W-qpXB~Bum zYy{kuoD#o1X_>*+Od0F|Z^YrXq>-9F1HJ2{(owN5L_GTtkT&}V*8a;(5@+!JISq60 z1-`)#_z789)lN7xuKGy4_#Lpd_?I|`Yjd5@1=D~MIi%(g&t=8$tT~_`Bi1_rz34%} zqwC#p4MOk?UcgI8zz0AX9bM=sqc6#z(`}leyng)nk836E+^HD0wveGBCTd~jKL^6` A%m4rY delta 570 zcmWmCK}b|l6b9h`%s6kJ*?aTG8VW~eim=fbOlYVG(nUlo@aA6Uxq=H1UX+|geTYOy3J?EZ#E?hTTI$;8l%RuP) zlsRS??SPS*8ov~G0dtP#=^d@kzAc30yyn6gy&fKt&-x~ulr3Eg|CD7fXo`uoA2?*w zK{}%AkqZ$jy-KGz;45?qGQMy4z sx<#z1v!>4D^#}BbW~fB-7%-dbn_>Kruj!+|ws%D^a455fQwCIW^4 delta 14 ScmY#Tm>|xX&%h{955fQv@B)AU diff --git a/resources/tables/CR_C.bin b/resources/tables/CR_C.bin index ced4d6c7bd5ff14679e40b0cf8ba2a9b5257e59e..3a41f40f8ea591ca27873e8a68b7431f5740065c 100644 GIT binary patch delta 886 zcmXZZUr1AN6bJBgwl+82=B7=-sY4c6xw5c7IZUv~SkiEG-MW1*+=ma}d(ZFpJNMjsKkiTYEkveq zB13B265;ys(U3JvWQoGl`1c_L2jsG`+0;*D8;}v>MP8At(ZhKu8graZZ0@RLQw>pV zqgc#AcE|OWpVx_`Lg2@u-xPUd1D!nI%`wIEYSo`Ok{LR zNX;^ACC*qq+%QG7gXPi~VAfI!=3xPHiP7?IJ~2#e(mc`$Qu9Rj9I1J&dxz9a%1VXD z9U(5euZtr!?-Tiov+OPsSMG&Y=z}mklyi2k>jts&E==mC%@N1)It(Av;EX2jgTv4UA?Su4=#`?gy=xv@(g&dxf`BdQX+V8p z8<305fbX$*9d5x-Kt0n1Nm!D8SH|%brByHNffn&swb;=#dkr4LnDkWnI-AiZImB?HVS^2q7v_jZWf994klJrGQ7wF@@>1= W-21AH)gdzaUXg=Ta`10*s_K6>a2Tcl delta 650 zcmXZXUr1AN6bJBgwsv>>b9e7F`{Nu7(pDkNpc0~*PbnmhP(pfeZ{b6fP$4yH4?WmJ zQ0w&8!(O6M1R}SP9%9p81jRpliJ(%dmq3}2Z0x%0ukT_H9}d5B_?*)72iD0_6zARith_9S-FS$S{ta$IVL;*U}bM7T%V%#<%r z+**}a=3BXLovIH%9g}xfl*it-*80mXKO51L8^)u+YkFxDS5-`Qjzn z-&B-x(+P<+A2IU8KONX1{zdkaW}7=!iOU;M0vGV9atG4z6;Q9N%Z-+^>FPb=|8Qs( zoFPcUO}GVjVH{F`@6H4~g*Pw>(~yVHumoQ~5pPSwJYos3p;F{|{R0rE&p@0cc%Xf6 MfD{FIlPsnF0VIvm-T(jq diff --git a/resources/tables/CR_Canadian_Aboriginal.bin b/resources/tables/CR_Canadian_Aboriginal.bin index 7b9e122ed9a0d0e5f0ff9e4f27c69856d0d34659..83bef94ea78e7acd77251322648de62de352f12f 100644 GIT binary patch literal 32 jcmZQzU|?rpU|?oo5CKwR^$ZLW8-VyL1EbUiAl?rECBFnN literal 24 ccmZQzU|?lnU|?ck5CKwR^$ZLW8-VyL01Pt%h5!Hn diff --git a/resources/tables/CR_Case_Ignorable.bin b/resources/tables/CR_Case_Ignorable.bin index 873143526bd18f3fb32b88f236b1b3e6da67b5f4..03c5a5728b3723ae6a7827219934c84d6ecdc28c 100644 GIT binary patch delta 370 zcmXZXze~eF6bJD4Y>y-u+TtKB4jG&)6-$s(u`SZ9f(Q=&2Sq68&`}Cvw`$+wq81#w znQCwmr!3-P+;mLENrj3(Ch^Bt%<$p+?%mzv?k>}x(1~I-B0f9OmpIcR(*NwhF6_Y} zTzRYPuqqOnMd^;*^0hQ#mpmh-xWh?l#oOqlRp1TP0;^Y|-n*C6=9zt|>z#3JlUUn= zZRo=(oOg_ho%kY7{17Lrun0}S$rMLsk=RSsBkRZwSurM+kII*ZQB!5&v9cE$k341J zD;DlrHWZ)~sURVr1N8C^EX&Pk!FFGW-8cAvPr#GhZ{mx6IDjr35eFC@WC0_Bs-(?k cHbfb&LHpkT>%koH{c+?OIV65~0_mC4znke?;{X5v delta 162 zcmdlWeM6Fifq~hSfq`+>Mvh=c#><;a7~L5sA7;A3cy{s(=HrYelM`6n8Tlr!VCiQ( zFxi6jJnK&e2HD@6S=iheHwUxZFftyTJb`1Mgc}BwgA#@lQ(cG zPrl8WvDusJIU}2i0Ry9n#pDDYE51E*85sA>1L6fhym;~jo+jRhK-q`342+N70P*B{ GUPAz*=`Rid diff --git a/resources/tables/CR_Cased.bin b/resources/tables/CR_Cased.bin index 7599c2cafb15bfadb9b3f3690b01ee819690b350..daa2be21a300f2de65133d1b7cfd7635327316e3 100644 GIT binary patch delta 223 zcmXZWKMMhI9Dwof&)wxNn-_3dET&s!kymiDWH%^flR-&WvbZCYK?Z{bH~I4lOeBNp zyoAdjVekxwPtW?qW^9=vsvsiMq4`nYP*+VAcnLRu6j_{b#^vuyZ+PH|7v3UE2W3=H z^R-gdXoxaeXrqq-e2g&01T)OBMu;u;IEYGi{<^dW4=Zf23yWG>*%9NBg%oULkrQ=y JP!C)^^8-@&Ho*V@ delta 95 zcmeys`GJFjfq_w)fq|iSBFAsWznfVYiy3+K7#MU6fH)3_6DF511#9kSU|4<#h))6W mS0Mfd#6N)e7X!m;pvu)zKpX?a8IzcuHZNipV4Qr3MGgSd5*ua! diff --git a/resources/tables/CR_Cf.bin b/resources/tables/CR_Cf.bin index bbe8747a0c65c89d7331be657491355d206eb17b..d91a2a7af86fdd57cedf579a75e0b6461724b523 100644 GIT binary patch delta 30 kcmZ3%xPg&_fq_9Ah(#xIXtPdWVBnZI(IA}Beqx6L08*_6CIA2c delta 24 ecmdnMxPp;`fq_92h(#uHXiu~bVYHYyK>+|aR|Nh5 diff --git a/resources/tables/CR_Changes_When_Casefolded.bin b/resources/tables/CR_Changes_When_Casefolded.bin index 44b80e22326686d56ae42213eb55b6037b9746ec..f2dfd97e4c986bd7fe6f266ee106a362d52c349b 100644 GIT binary patch delta 117 zcmdm?_Ct+>fq~^N0|QguMvnQsjQX2b@G7&K9$;Wt4#J0^_y~|b4#X#+_yUjy;cHNQ m14!SP{6NS`j|B# delta 36 scmeyNwnL4Bfq~^L0|QgqMvnQsjCz|_@G7%TzAPj$nOWF;a+I(f0KLTt@Bjb+ diff --git a/resources/tables/CR_Changes_When_Casemapped.bin b/resources/tables/CR_Changes_When_Casemapped.bin index 9393bd6f284bdec99fe78a135d739e336522f8cb..d78583379894e3118255f85aa5c86539d234a0ca 100644 GIT binary patch delta 110 zcmaFCzJP;+fq{{ofq|iUBgb*3$@iH$1Wz$AEWZH67lHU15Z|0!z#L@9TEM`_S_Q;4 qK->kyJwQAOh^GMYR3M%X#0!CVF%WMA;>|$36Nq;M@t(;Cm^A+28QK_fcVtp4CbK8znIkk DVWke( diff --git a/resources/tables/CR_Changes_When_Lowercased.bin b/resources/tables/CR_Changes_When_Lowercased.bin index a6eeb60dd25dbf4bbab710f5e9155826bc7d21aa..61fc097ba11143017d39351aaf668135411c28b2 100644 GIT binary patch delta 117 zcmcbhIzf$tfq~^P0|QgyMh<^oM*YnZyvnSm2N)QZgYY3JJ_4kV1Mx{Hz5t{__!<=7 m0Ma)mPY_a)V=Z7{WUT_?8X)ch;vOKL1jJK-cgjPaWf@G7&i9%NuxesJ;wA!*TzKo$sJhvJ(+`sU;x hLQZn5(-|097XtBOAl?YXn}K*I5bp-!J(Dej6##wU8)*Ol delta 54 zcmbQCenX9efq~^J0|QgmMvm>gjB%R}@G7&49%f)z4#Fp(_!N*nHCaN~X>ygY900fA B5YGSr diff --git a/resources/tables/CR_Changes_When_Uppercased.bin b/resources/tables/CR_Changes_When_Uppercased.bin index f4a0cc2683cd8cfc8e7b459df166f2c39daab1dc..c7b0ed1369750797bfe96be90e86918c5800d38d 100644 GIT binary patch delta 116 zcmaE$wm_YOfq~^Y0|Qg>MvncwjPaXK@G7&K9%Nux4#J0__ymv!;Zsn25lDmZbtt|G lq;F0Vc9LVA&cMjJ5QrB8@kSut48%KucsCI5nd~5}003ENB2oYV delta 36 scmZ3W{y>d`fq~^Z0|Qg`MvncwjB%S!@G7%T{wyRhSy|YAa+9ze0K-TMumAu6 diff --git a/resources/tables/CR_Cn.bin b/resources/tables/CR_Cn.bin index 1c64620dcecd4f33d1c5f32707c8fd8cd6f1152e..c6eeee60744eb623b23cf7290b8bd2f4d4c1e402 100644 GIT binary patch delta 880 zcmXZaOGs2v9LMqhaU5sV#+fl6;P^lktele2UWzWtauG2>;zGrsrHckyRAl8MC@N^Q z6VBt$UU1VJweB}B_k~nnLZr>Ys@!@yRIsfy&=Wy@vjt4=vi1V6A z#@L|y)Zm%J{;-HUV!KV=8<_}as3yJNQRD0u+0vuC9bIKfp5|>!RX1?M4Mn|0qG7b!7C0>=%t~4o zjbaj}sNw)h5d`94=uG%xc|&|FrGbvQ6zNGKb!ZNsrd?2qgHSDYdthuIE`Bv(AD`>%@I+HQLt^%z+X{c zMAT9ojF;!JZ2Li4QZ_Tzo*z>?KZ#oV38vRJ!E4j!Z~=3mMVf7C*3&CGSg^O(;GV`w za26wsOX$aSMDW)3p8S9$Xk&Z>Z45q;VTxMkFZyqaWPY6!o2FzuUI6)`Q6~$wyBu3X L;;0(dnT5fB-nkSf delta 614 zcmXZXO=uHQ5C`!8OU!0#T{o$$DUE9sEon7a1wT+k3yKOB0<{Ne!GI?Z#r9AU3F^Uv zM~!o|5W$b42W?rT2ts1bL9|#K1nWTyS`k4>L2c>EcKvV3;m7c1-pqS*Co{TD2O=kd z(EWmbR?}=ivkT{r$BTgewC)vSb*wxPQU_&cI4!yGY5NnfX0~pQ@f*$8{g(IPntJP0 zR+-8$fJDHel*~kqL`h@FW} znOmEW@J7p$^qY@lM{HLxc{gh-_Dg>(&1Z*W*Mj_5in7GL;s-WPG4*bN7^l<34^96d zo~y@XGG3L(P3`i%X_HZc`r^_u)K@r1*Eyi1Ko==bYy65gOkk6{}tTTHF5v DuqnZo diff --git a/resources/tables/CR_Common.bin b/resources/tables/CR_Common.bin index 0ef91f6edac8ab81607ae6d9c8f184ab52eda4dd..a78a02bd205ebaf0ea1d505379efb0a326d66360 100644 GIT binary patch delta 175 zcmWN}F$+Oa7=YpL>oT~5-(a*@*;#CES)`QBq)ZkDqw&`H1IiyzcQIT!B`d`w2BR>X z$<@i=9iHi}*M%-zwN$N%bfCRttz9jq3(<5bdW^6$rJz=Lik>XaNhfG%Lx`oN+O7J%kuygb8RIjpObXSYm@1TO4shimPpx>wmr(L$&|_ diff --git a/resources/tables/CR_Cypro_Minoan.bin b/resources/tables/CR_Cypro_Minoan.bin new file mode 100644 index 0000000000000000000000000000000000000000..3df632d633f7f7f7b36c9a5ce13af8bc9e9f4105 GIT binary patch literal 16 VcmZQzU|?ooU|?im)Sm#vp8y4f0p|b! literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Cyrillic.bin b/resources/tables/CR_Cyrillic.bin index b3ace34d3650da2d1db7c714745db1f548801a61..eebdc4ce0e8504e6f7562a148039719cbf32ec8f 100644 GIT binary patch delta 31 fcmeZ>;9y{25Cvkci5w0B42%y9fH)V3`#~50PAvxT delta 14 Tcma#>;9y{25Cme5i5w093y}ev diff --git a/resources/tables/CR_Dash.bin b/resources/tables/CR_Dash.bin index 4deb90c6f72f088e05e6aba76620f3794aa1f85f..8c9eded56154b3ad70287dc5c1c2fef259b2d78e 100644 GIT binary patch delta 26 gcmdnNcz}_Efq_9Eh{Y#z6tU^WGBD`HPONYM06^RYIRF3v delta 19 ZcmX@WxPy^{fq_96h{Yyy6isZh0{|uY1R?+c diff --git a/resources/tables/CR_Default_Ignorable_Code_Point.bin b/resources/tables/CR_Default_Ignorable_Code_Point.bin index c887540e53aa6347952e3cdf4173332427269572..7da689e036de79fcfbf73811e85330c16fe2f8c8 100644 GIT binary patch delta 11 ScmbQhIDv73IV1l>iwFP{Qv(|S delta 11 ScmbQhIDv73IV0ahiwFP{PXihN diff --git a/resources/tables/CR_Devanagari.bin b/resources/tables/CR_Devanagari.bin index e1ec4638a6f5af9210fe5562589e1f44a88fcbd1..76412b500dc445c7549ceba6452c0eda7ef6920e 100644 GIT binary patch delta 23 bcmdNe;9y{2;09vWi5vZ zO!}Pr7#O4u0`cj|8BFP$uQNF_`mr}KFtWD-aXS!i0OCzRyo-U6>nRXFV_@V}0%COr zM!vs5{GWl5-wlWZfVc^Wf%*i1d@wEm(gl+ZSYEN2xHB-Cgie-VRZ?63fq`-TXCVFx z#J_2p@gb0YXvV19YOp;tU|@V`Hi=CE0J@MF>;M1& diff --git a/resources/tables/CR_Digit.bin b/resources/tables/CR_Digit.bin index 18b73ce75306cdba9029f5c085a03d52aaab15ba..a8aac6ed99f963e2768bd9c5513b0dad64200f92 100644 GIT binary patch delta 67 zcmeys+`+=Zz`)Q5#10!dHZh9H2QV-_I5FY^IlamiHDv3S$z`*$ACj;Y4 OpputBCBK3E-#-B>nG{U` delta 43 wcmeBR`M}Jz>% diff --git a/resources/tables/CR_Egyptian_Hieroglyphs.bin b/resources/tables/CR_Egyptian_Hieroglyphs.bin index c067f40f5426ecec54d6887fa1ac89af85cdce64..b2940db0d94435167ba8ae0481f4952e25214c51 100644 GIT binary patch literal 16 VcmZQzU|?ooU|?imGysw&p#TCW0KfnM literal 24 ccmZQzU|?lnU|?ckG+ZM10c2l014FrZU6uP diff --git a/resources/tables/CR_Emoji.bin b/resources/tables/CR_Emoji.bin index df1327fb4fcdd7462ddd2c1f7ff2f4ff4b6456d6..e706bc59285324cfca5167784268650a33ae397c 100644 GIT binary patch delta 110 zcmX@Xd4Q9Hfq_w)X m5Z3^40}yur@dO~=3&i_@_$Uyc1LE62`~Zkw05Q<4Uq1lXnkgOt delta 101 zcmX@Wd4iLJfq~JGfq`MhMh;^Z#s`yaSo9_rv50zBFfjhC0^-v^d=`lRGcf)t0OArL j2Fm>c%Kd5p;x-_j0K_YRcmoh`1L6ZfdTmS$7 delta 17 XcmX@Xw1bI*fq}snh}AZ77%&0=A9Vui diff --git a/resources/tables/CR_Emoji_Presentation.bin b/resources/tables/CR_Emoji_Presentation.bin index 9989ea296e37f7db4ba7b83d7efcc68166975eae..b4ef3f65ed8419b69325d63161586666f4dccf65 100644 GIT binary patch delta 107 zcmbQhI)QbAG?VHb2F7pqf%r8LzX9SeK>UY+@%sZH28wh=IC)y#QjM?q5FuUeqn= delta 89 zcmbQhI)QbAG}B~dCh^HmOro9@42(akfcP{Jp9SLo42-`DfVc#RfpWiqa=#jYxDALW X0PzYS-T=hgfcO9q9|GbFKzt1VZj2$x diff --git a/resources/tables/CR_Ethiopic.bin b/resources/tables/CR_Ethiopic.bin index bc89b8426fbd6b67aa3e47392df3089d338cc444..7c3620d881c14169d7b059cd09ffe3567a801ec5 100644 GIT binary patch delta 49 tcmeBRTEWD@z`)=M#3~Cp7!?>8pFaTNXF&V{h+hNoTOfW1#2J7y%a)0!RP= diff --git a/resources/tables/CR_Extender.bin b/resources/tables/CR_Extender.bin index 93896879dc6bb6ae714292384cfbe93ee59da54e..372b01c35ca32f1d7f672a4152e7c0d26c674dd7 100644 GIT binary patch delta 26 gcmeBRn!v=tz`)=P#EKI+4zaN}GBC0?O+4WM06jh($ delta 19 ZcmbQh)WO8Tz`)=L#0nER4o$pd2LK{n1cCqn diff --git a/resources/tables/CR_Glagolitic.bin b/resources/tables/CR_Glagolitic.bin index 183347a5547c3ca8314599620c83b2089c18384e..a530a0a957f7b11577e06da6f27743a8b539bf99 100644 GIT binary patch delta 22 acmZ>;5MW?n;00nf1_m7_V$#h`%e6JNf8@iD`R2^b`Q|(G&6~XLbv6-ei%48| zi|trTLs_y{#C8SEAZ}~(zd9bLC1$53+gc;Cw8k8=RA;{D=>x*}h*6B=2PRF}GOj&= z(4us;rirAx%unkMvn9SQxkn^Jum>JAn6da$vp%6ygJvvYqbabR(i(HicEC97t1@4T zw1?1#fd#K=2Qd*Sv1e#zm&go5vrTBlbM!8V1nL)8>*3R))_PpRWwhcduHiav;3oVC zpc4=9P&8gd6N<1E6{y8QG~yi2qXTzwKM+~6TbDa#MU%4OMisocXm%yK>?cH>XV7K5 ziFi%nqfD!Nw+DUx|~QsF-lQoY|cVQL9=MVgs7V- z8!F5$XSV&Z=#d~^7_akekuM_Zo5U~7fPMMqL_1jEUyZ^A9@>52`}`HH$;GAAPkZy> zMmd<#`&5*p&=A=;4((fuTznSor{7tp&R+>f{RRL4 delta 595 zcmWmCK}gea6bJC{+uVQu#s1s>uP!Z}OGH*N%)_vV(jX$JL&FjZL3Zm9H6ag@LDHdX z*}DiG+Rdno@(&9-IK4C~VN8e-6{8@61XqxA(`8=|pTm#udyn6PmrsV06t)oOiN-`H~jtEv+ql$av(mp7O@^hWBdpD-hgMrtkEFHt09~(Xw|#R^38V zn^-}hEkvz!NY{O5eSEdsnlPR?IiLe{ky3P5OU9rPtpU+(ZS}vAB`x@mTYW&HpT;Py zP3Dvg>$Ev$Jlz4Z(9dR%wFJzq&^!9;b_P16cNy4T0~$lb;f;s%n7B=&LJi;_+$;M= zEWi%?9xZFux+H^Iv3BLPRzfiuQae25 z%Rvrq>1_Cgj@rjU{JbRlhy#)*bk>ebM)UUl&^&{ME=m!Xa!zW|i3EN^icE^N{?s3OkTC5 zt7zduV#cnJW)DfCY>}o!Ne@j2jh>T{GmWYJqgnhomvg>z&UY{OYT;y&T_p0ANLWL= zy-PFNdphHqMC=!E9YfYW9kfMMi>#I}&w zu1BHO995|aJ4DheP>*JuuwL71R0qta7?(K`)1uWT5L0LBVoNigiFA(O1;#>N62~!T z^~6r=>PI3Alol_d15Yp<;v+6wy>T_V|EOrhakSz*I&cY>aRoPU6Wy@Thko1>jTF(S zB9x#Cwb+XmoWdD+a2t26{P;@c^J)A^oW?oR;@A*(K-6&%hyF1hM^{9#Xkv-AJK>sY zp9v)9YPrcunvP@A%7AD(ThpVBJ-I)}CYtF$A~s?RXwEDR*-G4F29gU>Ty3JRInjKY z3tiwyVYvw;=SDvetslUU$#S+9xqYJUpZJ9ZEMiI2Lu2YW3OQISI+>3~lb4#kvrTmB7C1ch89w~R z@_*hDQ7?Hfc`y0dNzC9Q$j^SoH&CBlvT9TNb=_Oh`7ar`1p0 z?=vN7MP=Kq#Az|6>zsZ98Q2+n{ delta 474 zcmWm8O(?^07zgm@nVG*a{A0GZ@{%+MF&PIXZ#lWlIHQ#0C5nUOAR@VVc`gphZW9O7 zZ!tM|J1A13YOwbF!F*i#`vs|&*s z>ta?Ah1~-1f=~SU&GM38uRjytpmWm%t^cIa_9S)oV(GQp)Rz5#OC!XeZxDlD;yB{* zF_?yXKtKK}%Z^&#_XP3xBwWH3aiRlyU>HVW9FR#MlfZal9+qJfg0Kh2a0=IOCz`V` P{ecVtBE!B%+|IH;O0Jq( diff --git a/resources/tables/CR_Grapheme_Cluster_Break_Control.bin b/resources/tables/CR_Grapheme_Cluster_Break_Control.bin index 61e4e8bbce5421e7b720c80291d6abbe478904ec..9ea27aef5b8db8bcf8850e1be7d1c6c01f184903 100644 GIT binary patch delta 11 ScmZ3$xPWm&Iivl=3Jm}kBLlkt delta 11 ScmZ3$xPWm&IitnI3Jm}k2LrSK diff --git a/resources/tables/CR_Grapheme_Cluster_Break_Extend.bin b/resources/tables/CR_Grapheme_Cluster_Break_Extend.bin index 25dc8aaded578ba33d6d2bca6d273c75599317f9..4448efa3b3d1c09ad76267ac9ceaa571b4b4f45d 100644 GIT binary patch delta 287 zcmca0`a+C@fr05J0|R5uM2^FpGZ+{+<^%Dmjc3vsS#1~?cx)ycF#TsdH`#!BKcn&F z56sT2{0s~d{F4n>>VcvgSk`Y&XFbgr#`l+jk?%hPBflFE2LN#s5VtZg3NS*k1&{{H z2^2taF_10+;(8!%1mev=ybXwV0`V>&J_N#(6WEhk9T^yf95)|emtxYB2f9-pXrjCs z5L*GU0~9*}X&^QM^1;|0NQX|o!D+;I9;oHKE)W|4vD;)0u1Ts7`WYBO_#sf}A<(2p V>!A1zkbcj=_ykBlnY^4!697pPL16#@ delta 140 zcmaDMc0rVbfq`i=0|R5^M2^FZmp5KXXPoTJ^oQ~6WC!N`j3$#rVy-+25N>SkE!)@w+iF@&_<53NS*k1&{`c3Dg5|BM@%};%z{@6NqV2}r5eg+0MAjQTC#CIW>9ViCE920AjQTC#CIW>ou7e$oqwW6002u01V#V= diff --git a/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin b/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin index 31525896a556cd21f1e6391c3c1e6989f2cf3f5b..9035da46d0f966bffde3b9962d02ba2ad1cce2bb 100644 GIT binary patch delta 84 zcmZqR+Q7xZz`*Fuz`(F{BF8T_p3e*nJf9~qHuH)yFo=V&2?%d)U|h^JS(|0MoIEoF XBN&?iX;UD!17dq1b_C(c4_Fic#dZ%v delta 39 vcmdnM)xgEUz`$tFz`!tnBFC@ET#SvIXEQEfVpU*Z6jz*V!Ln diff --git a/resources/tables/CR_Grapheme_Extend.bin b/resources/tables/CR_Grapheme_Extend.bin index 5018ebe453bbae00784ebbbb7efef0d7aae07f32..a781c8fb1b77267e7f34bd40d9bc0f772bc10e68 100644 GIT binary patch delta 287 zcmX>h`aq0>fr05d0|R6BM2^FpGZ+{+<^%Dmjc3vsS#1~?cx)ycF#TsdH`#!BKcn&F z56sT2{0s~d{F4n>>VcvgSk`Y&XFbgr#`l+jk?%hPBflFE2LN#s5VtZg3NS*k1&{{H z2^2taF_10+;(8!%1mev=ybXwV0`V>&J_N#(6WEhk9T^yf95)|emtxYB2f9-pXrjCs z5L*GU0~9*}X&^QM^1;|0NQX|o!D+;I9;oHKE)W|4vD;)0u1Ts7`WYBO_#sf}A<(2p V>!A1zkbcj=_ykBlnY^4!5dbskK}G-o delta 140 zcmaDLc0!bcfq`iw0|R5kM2^FZmp5KXXPoTJ^oQ~6WC!N`j3$#rVy-+25N>SkE!)@w+iF@&_<53NS*k1&{`c3Dg5|BM@%};%z{@6Nq}X~!U|}Z}W%(xZ+NdpE? diff --git a/resources/tables/CR_Han.bin b/resources/tables/CR_Han.bin index fc1a6faf024604bf5986a72b4164395af5302587..862a01edbaf34f7f3a169ec42281803aa8d7b3e3 100644 GIT binary patch delta 78 zcmZ3$xPg&_fq_9Ah(#xIxEuawVE74S|H=j80wBK0z?lCCh#v#-2O$2)zyy?LT6Uj- WX*rPIZaJ|+gM)!tIDmm!c|8Cig%m~r delta 61 zcmdnMxPXy^fq_9Ch=nI|xNH7lVE74S|H=j80wBK0z?lC5h(9tg0fm{C-DO}}4y3o6 IOl;5q0MuI$P5=M^ diff --git a/resources/tables/CR_Hiragana.bin b/resources/tables/CR_Hiragana.bin index 0284cf0115fd7a409fb713e347fe5cc193f1c821..31e3262727138a405b2775a6292c6d1ece6dcbea 100644 GIT binary patch literal 56 wcmZQzVBlq7U|?flFmMFoX+S&|i03mfZeV0!+$aykMo=68q=Oh3KQVwX0No}E9smFU literal 48 tcmZQzVBlt8U|?lnFmMFoX+S&|i03mfZeV0!+$aac0YDtY!1##)gaMWW2vPt5 diff --git a/resources/tables/CR_ID_Continue.bin b/resources/tables/CR_ID_Continue.bin index 9df774222f712af3d304c4ac7689aa0140ab3306..a83fbd3c6ce0718061d3cd69b5ce0b5e57b00236 100644 GIT binary patch delta 614 zcmXZaO-NKx6bJBg=IcGv-kT3*Ch}vzp~L~1M_ADiGPV!`p&=41u#FoL#My`vf-MqF zq@+_MxQJ+>E8mPah)iN=5!6B_EGW=s5UD`QK?#aX{143H#~`N2r6L1&q!K`}DPaJ$vuDP1rJw!DHUH3eO-53SPo1SdpZ0GNj!m*2ZB1GOz^8s@sThgYlo(tb?Ws3z-6p zHOFPvjQEC#y<@NpZ^|TR4syG)yb1P%lf>Z;>GKI^zYTmtlrT$crZ zV<Ws(d=&(08UEdtiq`b)f> v2jur6e1jjb13%#xl;BYH1- z8qM&sE5X~YLhKpv{do~@;$3var|6#O2GOlD-5cch0TD~sVuW{$MGA7;D0`Z~AjCXx znt6Au2gJTr+nghR3YbibyeP2U-_b|qTkORagYHD0%(>d;D(696bM zBohD9k~#he#63k&a7$cpG+3lrRSIT_TcLew^6J15PlV%cS)@#g3*j;5@UC?%wLUCz rVu^EhRvp+Y#F~@jtTU=NL9acv=S-9530h5#JJ0Z4WZbX_u&DD3$rn|B diff --git a/resources/tables/CR_ID_Start.bin b/resources/tables/CR_ID_Start.bin index 84dec0ca042d2dad6cb45da02c1ff9fc365eacce..d652c82ba75f278b06d63786ffc558758724e4f6 100644 GIT binary patch delta 567 zcmXZaPe@cz6vy#%-s??oK%3`?jUcIv_?Kd&axz+E6ti+M2`&{^DoQyCZK6dkMA9hn z8ZO$raN#OurWZsd;zEL2O^AyYF@s12kxEenq4*te@!`k0+;a~H?!Okl-4$_KMJ$td z=d>mx;?Ce99>d3nz*pOH21F_bjBj7pFTsv|#d4}dVh!eOXjyxMLge;x2JD9}XGE=A=cdm*?drbGK?NE$4v6QKe zJky+c6`829L>tOZz(W)lOrsZ1Cgw#G`=Xs9dNF}(NQvH{PLZSJST}fbY!Df&nIUg7 znWZiJ8-MU02RIbX(UOnj{IN9I2R6_52PH4Ar;FSv)}t96qNPsUT8P$l&5Lfoz&d`2 r?i4_NE8#1?qg?;QF7|O4G)7xBToh}Czw!FANmsYIVppfdZpt13xO#~V delta 255 zcmWO1Jxjx27=_{UyszzoD0p2zB=*eD*W7ImSyxMPP z(*${-6jDqJnz)y;WnbJ=397(ajT+R{eQ%Vz_yaQC_3Obs(0-t2`mqE5(agGlOs-Q( zd(@-@JI+^RrUNMq=$(EckwY7rhKFjyH$5+$NnewwrFYT1%SlP9`W02Q7`MU>vpYxI gv}14MMbXhzIoF4LeA=|QEdCIt&9gU&9#60Q0}5h7i2wiq diff --git a/resources/tables/CR_Ideographic.bin b/resources/tables/CR_Ideographic.bin index 3b3d7d8a95efb63f0b0a592627bac78b5e5103ce..93db5105d9bbee5744b9234c1609feaa53deec73 100644 GIT binary patch delta 43 xcmZ3$xPp;`fq_92h(#uHs5AbbXkgEIpMhyP0|V1`%ZU{l91P6D0SwH_>jA{v2}b|` delta 34 ocmZ3%xPXy^fq_9Ch=nI|s5AbVXkgEImw{U&_W%F@ diff --git a/resources/tables/CR_In_Ahom.bin b/resources/tables/CR_In_Ahom.bin index 7cf8b2f75b21c0a9ce7dfab9241aa5eb2460e244..120d1e4faa920ce2ddcb2f1c2132b64b282fb331 100644 GIT binary patch literal 16 VcmZQzU|?ooU|?im6bF*x{r~|{0E7Sl literal 16 VcmZQzU|?ooU|?im6bF*x_5cAv0CWHV diff --git a/resources/tables/CR_In_Arabic_Extended_B.bin b/resources/tables/CR_In_Arabic_Extended_B.bin new file mode 100644 index 0000000000000000000000000000000000000000..a059facaf4d26627e8b25eb8bea4167b05bf522e GIT binary patch literal 16 VcmZQzU|?ooU|?im;3xp%`2Yh?0VDtb literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Arabic_Extended_C.bin b/resources/tables/CR_In_Arabic_Extended_C.bin new file mode 100644 index 0000000000000000000000000000000000000000..01aa36958b4433aa9a0782f21bc05d35a23d4a24 GIT binary patch literal 16 VcmZQzU|?ooU|?im literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Cyrillic_Extended_D.bin b/resources/tables/CR_In_Cyrillic_Extended_D.bin new file mode 100644 index 0000000000000000000000000000000000000000..4df6670dae49e471965f065b07a9704194e4d62a GIT binary patch literal 16 VcmZQzU|?ooU|?imd|&{?{QwBb0)_wp literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Devanagari_Extended_A.bin b/resources/tables/CR_In_Devanagari_Extended_A.bin new file mode 100644 index 0000000000000000000000000000000000000000..80c9c3bf02fcaf42aba2d5c39c3e10edf88c58c7 GIT binary patch literal 16 VcmZQzU|?ooU|?imlm?R0@c;pV0Gt2- literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Egyptian_Hieroglyph_Format_Controls.bin b/resources/tables/CR_In_Egyptian_Hieroglyph_Format_Controls.bin index 4e410f70102e8cd3c9c65bd36d218bd530bd7300..e06698943c92fe81c43e8b389a45cf6d63415e72 100644 GIT binary patch literal 16 VcmZQzU|?ooU|?imG%*0;cmM-A0R8{~ literal 16 VcmZQzU|?ooU|?imG%)~TdjJC&0Nwxq diff --git a/resources/tables/CR_In_Ethiopic_Extended_B.bin b/resources/tables/CR_In_Ethiopic_Extended_B.bin new file mode 100644 index 0000000000000000000000000000000000000000..b6325efd3258c87f6e6ef0135887099edc6984ac GIT binary patch literal 16 WcmZQzU|?ooU|?imeEtB4{{sLF;RCb) literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Kaktovik_Numerals.bin b/resources/tables/CR_In_Kaktovik_Numerals.bin new file mode 100644 index 0000000000000000000000000000000000000000..9beb97111108060a629eb8a5e086f81924f9017b GIT binary patch literal 16 WcmZQzU|?ooU|?imymSDF?*jk}c>_uS literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Kana_Extended_B.bin b/resources/tables/CR_In_Kana_Extended_B.bin new file mode 100644 index 0000000000000000000000000000000000000000..2ea6aff673ca600a0a924ed59fc8ea6f7e32b311 GIT binary patch literal 16 WcmZQzU|?ooU|?imT>k-x{{sLEaRXEU literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Kawi.bin b/resources/tables/CR_In_Kawi.bin new file mode 100644 index 0000000000000000000000000000000000000000..58df9471d0a35b4a3088c8518a9a2ee986a0144f GIT binary patch literal 16 VcmZQzU|?ooU|?imln0XX@c;p#0Hgo_ literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Latin_Extended_F.bin b/resources/tables/CR_In_Latin_Extended_F.bin new file mode 100644 index 0000000000000000000000000000000000000000..bf7ec02d14d5894d4b5c0742f0c538c337003443 GIT binary patch literal 16 VcmZQzU|?ooU|?imWN!fC{Qv{O0aO40 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Latin_Extended_G.bin b/resources/tables/CR_In_Latin_Extended_G.bin new file mode 100644 index 0000000000000000000000000000000000000000..c94911710b9eedb5999e56014da5cc5950a79856 GIT binary patch literal 16 WcmZQzU|?ooU|?imybmPr{|5jFK?1}8 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Nag_Mundari.bin b/resources/tables/CR_In_Nag_Mundari.bin new file mode 100644 index 0000000000000000000000000000000000000000..52b031122d87d10cf8b21cd39e05d2d1ecc41fd8 GIT binary patch literal 16 WcmZQzU|?ooU|?imd~yMZ{{sLFc>|sR literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_No_Block.bin b/resources/tables/CR_In_No_Block.bin index 94a03a07b947764cb535f16e8bc24b0c17649bd1..9382881291d70e63d9de9198eb6e996f5a4bdf99 100644 GIT binary patch delta 250 zcmWNKu}VT=9L3K;BpZ~bG_EBP%??Rp4MIbcqobRHkh@F1K;)$d&^J(M5fbzXx}jTx zx6Ej?H~9Pwhu?S3|8Tx(W|YZEYNM<8C^}ro*&rV*;@WlGJAZ7*MSKaChVn@Z!3aj= zW%^}!I+4#(xk6qU%a`=4&vFf4=YH3h+psf`A8yeI;k&S#%1_+KJNZ@e8~KdAcX*S0 z$O(@ngUh+RqPW6;Qdq;U0fOJ$H+=ZRz&4S8;a~dF^!@S0MEMX@P#;16s}RB-n2|?w delta 272 zcmWNJF=_%)6h-gLAW4&NA(%vs7GfuuLaYZQ7FKRRunP#n>>#rQ2N$3_7{Nv`V0K{8 zF3pTdkuvV!dy2#1pU3^HU>kHL&7ddUMX;1QIsD6R1n;sS2QMo`fN$fZ-E;0!=6DsU z#Wa~T$D!}dkHvWC5^D&SsYSi{fsdM0bo8>y_tu0!vJvOXTfvNt@9;E;S( zU+1!vuwk&nAAE4YM~25tc4Bbi{Y}qs{sQ>S{bw)xW%uV7p$*HWk?y^hQw-QHa^7D7 Dl~G1Q diff --git a/resources/tables/CR_In_Old_Uyghur.bin b/resources/tables/CR_In_Old_Uyghur.bin new file mode 100644 index 0000000000000000000000000000000000000000..ec970fb3603569a9566322ea9ccddab60c1da861 GIT binary patch literal 16 VcmZQzU|?ooU|?im;;m&^#BDi0iXZ? literal 16 VcmZQzU|?ooU|?im>;;m&{Qw0)0k8l7 diff --git a/resources/tables/CR_In_Toto.bin b/resources/tables/CR_In_Toto.bin new file mode 100644 index 0000000000000000000000000000000000000000..c81bbe73291c01d2108c6a7c24692c0a99ece31c GIT binary patch literal 16 WcmZQzU|?ooU|?imd^7=w_X7Y5=>r-7 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended_A.bin b/resources/tables/CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended_A.bin new file mode 100644 index 0000000000000000000000000000000000000000..64428eb0d3bc2759ac793623d7f2a92330806548 GIT binary patch literal 16 VcmZQzU|?ooU|?iml-dBq`vC<>0jdB1 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Vithkuqi.bin b/resources/tables/CR_In_Vithkuqi.bin new file mode 100644 index 0000000000000000000000000000000000000000..d833c4671cf1e767db14e4b8888382153194be6a GIT binary patch literal 16 VcmZQzU|?ooU|?imWGw*V{Qv`D0YCr% literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Znamenny_Musical_Notation.bin b/resources/tables/CR_In_Znamenny_Musical_Notation.bin new file mode 100644 index 0000000000000000000000000000000000000000..079a0db426880d3fd0aae1e3398053f54aa6c8f8 GIT binary patch literal 16 WcmZQzU|?ooU|?imJP#z#p9cU3kpgr8 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Inherited.bin b/resources/tables/CR_Inherited.bin index 86bb22f7838622bdb1f39aa247f99c6925dc9197..7dab441a33689484ac87d2b403bd902cea84bd34 100644 GIT binary patch delta 42 tcmaFC_<@mwfq}sqh-D{o=rf+1Xkk9F+?($_0|VoET_839Vz-G0Gyvhr3yuH) delta 33 ncmeys_=1sxfq}sih-D^n=rbOeXkpI!lYv3@_rx5(iKo;6imVBv diff --git a/resources/tables/CR_Kaithi.bin b/resources/tables/CR_Kaithi.bin index 21736cf7dbb634242f779e7c7bbe6c25889b5ace..e10a54c6a12cfcb410c7a8e201e79e19130434a6 100644 GIT binary patch literal 24 ZcmZQzU|?lnU|?ck6lehALqL2MgaH)i11JCh literal 24 ZcmZQzU|?lnU|?ck6lehAgFt*1gaH)Z11A6g diff --git a/resources/tables/CR_Kannada.bin b/resources/tables/CR_Kannada.bin index ca836f796004ac1cc3379f34c51cfd2fd4d32d6a..ab48a13ea0511a58b040b062a0feb4fd7ad3f840 100644 GIT binary patch delta 34 hcmXRYm=G*`mw|!j9uPkO;>SSz42a(Y@kb#33;?TS32XoW delta 34 gcmXRYm=G*`kAZ;)gdYI$V<3J8#P5OlBM^TA0IPrrYybcN diff --git a/resources/tables/CR_Katakana.bin b/resources/tables/CR_Katakana.bin index b8ffc19c366cb81e7f1ab51c1d7f9b9cbd591b61..858d3e0011c21b5d3b821851fa1cdaa92b66ac5c 100644 GIT binary patch delta 69 zcmWHj;9y{2kOgACi5ymD>pw6suKx_gUxD~H5dQ_@e+-Np7$A6~0t4elB_Ixk;uIjA F4giv*6E^?= delta 29 fcmb;j;9y{25C&q-i5ymZ8yFZEL3m>d5T^qGK~V)> diff --git a/resources/tables/CR_Kawi.bin b/resources/tables/CR_Kawi.bin new file mode 100644 index 0000000000000000000000000000000000000000..fc7dfda4ddc2a13552a9c1816f54bc55502eaf34 GIT binary patch literal 32 fcmZQzU|?rpU|?oolxF~90U#CvVk;oF1L8;k56=O< literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Khojki.bin b/resources/tables/CR_Khojki.bin index 2dd1190f5f14e136a6eddb2d0dc921a0bcd44527..880bcbe33d93d74b432b7fbf22f7add1e0e91847 100644 GIT binary patch delta 6 Ncmb1;m>|yR2mk}t0U7`R delta 6 Ncmb1;m>|w*2LJ=p0T%!O diff --git a/resources/tables/CR_L.bin b/resources/tables/CR_L.bin index 4701c531288a3f58b11e2a0fc89f12255a8be516..328f5f7d2a34f4df19efc6a7663441004c1b8a67 100644 GIT binary patch delta 545 zcmXZaPe{{o7{~GF`ThLO-(YKNl7mJ$G&3Vm><@)t3uUJcE9hu+5u^y0V222*Lx>eI z{1zf!79JEtw)H!RCgN33MhbR_4G|3@l|m3C>HPx_FFrgE&+~jQ--Gk{W>>^%60uCl zeXFOkBJLoD@E&_60b9t0#kb1TMvw=dExGwr@=dC zmPIC3@D<;Vt&!jH$6F09SRGDQ)Om*Ic!PHs#s_@F2tHvPC3u*{7tEVn=yYxMOVR4r z7(@}DG3QN&66#-%yfTa7MEHqlv>yXLvmSor+!T$aOzOl&Af6J9r%f_4rbRO!>FcpX z>wHy+B8JQ0x-TiB4Wpvxc)77tv?Yf<(N_9bT5t<#(JtyV*-JjWjuh@Aiv{x_+JCLU zTH!DDafp975-qY)sz=+g40#v#d|oA5ueD`n%4gAti=vfQJRXiEuI5BHrm=`$qMIuq nw=3AfPx$q3>|hT^UNY9C!LnEr{DPSqCR2046}u)Qc0=Jm2#$#j delta 218 zcmZ3W`9qC^fq~^N0|QguMviVq-USQ{99w{R8xSAgyn>OLY4T=f2gZAwzc5=f@$xV* zi1PulAP_4|Hep-M=)L&?+jK@=Jq89H10aqA;)Ka19G_U{|6yQQFgcksgm*s!!}3Ew zdy?j zZ}JBL>B+)^`FtCI+>LTT900^Yn|BB*F;4y@B*}V!f$`Dn%?`rqjGT8Fn3eUz`!Waz`)SIkwc$pvO80PQ RIUrUAVl4*7mq78C&H#afB9Q<9 delta 61 zcmZqRT*1M?z`)4Kz`)S5kwc$}SC4@~#{h`qfH+~Y2~#rXeg=l+hk*Fh;yXZm9{@>D1{(kX delta 22 ZcmYdDnBXsXmVtrq0ubK>;yXZm9{@={1{weW diff --git a/resources/tables/CR_Latin.bin b/resources/tables/CR_Latin.bin index d45ad2c88f846ccf382ccffea51ea3e116adf51a..8549fcb902258058909f680c43e8532b86c5c9c3 100644 GIT binary patch delta 90 zcmeBRI>5xiz`)=S#Of0{_RF4PU|4F+-Dsfq_+(fq`k#Mvi)3#`w)0yw0qy2N@WagYaP}J^`db_!Jah1kxaU8H%q0 zX%M~+#W#WU&B+ghg5+4IGcd9)1meX&yb*{u1MyBE-VMZiCL0Ln8?=owj3AI_#UZV1!4y!vi)SyquTR?kl}hkC=DA=$ra9^zCt1Mq4nh S0posEv+=AAbJBykaQh2ouUH-c delta 194 zcmew%e?g9efr0rl0|VpBi5$Cm7cekzYyskJKzw}T4Q8gvkC_}8?`>9LW@h5$VPFvF z17blSR+y~Ax|q>>^95EmM%MX%7#J2TzRboVx`Ba_{|FF20OD^9i~`I+Y(9xQdvY=N z{mD^06B!Roe#4VLxtLd+%>ZbpiQeP|ywZ~o^ZIbgF)(fn0OFv@8hl1#4}p>ob%59p gf*&1VV0`p?^9nw3M$WqoOv@Px)*^A5WWn> zSAjGLUx(tGKpKQU0r8i~62kI~nUgJqjqF&bGcd9)1meX&yb*{u1MyBE-VMZi7#P_b zptu=Gw*qlH5N`nDO+dVBa)$6PwfhVVjQ2T#m>Y=YfLIlXwHO#57yxlD1LI32Aa(`- D40tx& delta 74 zcmZqBdZEF=z`!cWz`)eAkz+9j6DIk4na)7Wr WW5(nHVWY{9gnzKTRAOL!=?nll@fZaF diff --git a/resources/tables/CR_Lu.bin b/resources/tables/CR_Lu.bin index d006266aabeb69e202104b3047b569196d066343..449856b018fa5ca4be596739c1ad816cec28f5c8 100644 GIT binary patch delta 118 zcmeyNzC(k9fq|8mfq|)QBS$?iqyFX&US(F(0}KqyLHH099|6+Gf%qg8UjWh|d<}|k n0O=c(4+tsAu@*2evQ`0c4G?z$aSsqr0^%t^JazK}AqhqR5-lMe delta 37 tcmdm?@k5=1fq~^O0|QgtMvi)3M!n4)yvnSTHw#Hjek>%vSxH!o5dhC23WERu diff --git a/resources/tables/CR_M.bin b/resources/tables/CR_M.bin index 7f7b46c65a2139cd370a8e5b9d1d4636e6f50bdb..f61ba79d4b4dd28b95897de2286057e6bb6fa6cd 100644 GIT binary patch delta 290 zcmbOsv_qJKfq^NPfq~I%BFACQ84L^@^MUx(#xwqmtTqe`JT{Xhn3C9dJ_DJbCs!~{ zXFNAqfO$Ei=;R&D#;p7d3=;g4Uog7^MGaWeH_vC8&FIJXmw}P*KLaDb8xRKoaT5@? zGB64NEfHV>VhbP!$_W%eaWRlC0pfZf2C5a<0K~h1_z(zBPGAdWb!1=^a@@Rut%^}k z9%za@BM>t~u?dj20%AKLc4A;Oae!iXARRhcgTsmMJW$JdT_839VzvU^br2&Emp% zU~&LUI_pmc2HD@6x3J7(RO5GJVB`;AU=#rA7hnQn3m^uH3Dg5|6A*6z;$4#$umx}a i%~sAhc@c-hWgRlt*Z@$1diCIpbnSl|E VO@Op15ZeK0|+Vr diff --git a/resources/tables/CR_Mn.bin b/resources/tables/CR_Mn.bin index e7521a8d541355168a841e872c6dfab4e3e2fc75..ef3e77177a21c34f39414d22fe6c0330dec12f4e 100644 GIT binary patch delta 308 zcmXZWu}cDB7{~G7b9#6Oad(J9+qE?%Vj?0US)tI>QbTKtV^F&$grms2xanUY$YGI7 zQCmgV6pd#%SOoqBqCew?4`1Hr<$ZV`6JJRK&_;lqb&O}T3m83m8NO9TF9I7ym+TeQ>6$#c zrF$CF)0*0fo$F;tyzDh%zmjtKPnR3r92ICUw9itO=YLi9MAgiU<@1TZLusn0uGuUF gZOGb$qX{>C4?=(J95Q96?CgU+AwP$71WQ2k72@$o4*&oF delta 141 zcmca1dO(DOfq|)?fq~I|BFACI%Nwt_Gfq}!I>UH&@&~5THI1MICaW(KhG+P delta 71 zcmcb>v4Mkwfq{{mfq|iQBS$y0?g0iy`6~>JDnLP%JO;+B1R&02V9X8x;z%Hl2I52p S#=Hg~o;LXgv({uT7B>L?&<`;H diff --git a/resources/tables/CR_Nag_Mundari.bin b/resources/tables/CR_Nag_Mundari.bin new file mode 100644 index 0000000000000000000000000000000000000000..ab468049234eb919faa3f5970a3cdbe564da276a GIT binary patch literal 16 WcmZQzU|?ooU|?imd~yMZe*ypua|4(F literal 0 HcmV?d00001 diff --git a/resources/tables/CR_No.bin b/resources/tables/CR_No.bin index 3a8516eeba0a6eef9320e8dba0f8cf3e57561002..426e624a0908c8aa92689dafe3675cf805d72430 100644 GIT binary patch delta 27 hcmX@Wa)O0}fq`Kn5PNLo_{_+9fPwMS<;g!7Jpf~62wngH delta 21 bcmX@Xa)5<{fq|hPh}}1Gd}f@?%;X9HH?#!# diff --git a/resources/tables/CR_Old_Uyghur.bin b/resources/tables/CR_Old_Uyghur.bin new file mode 100644 index 0000000000000000000000000000000000000000..585629667f6116ec1905e89cc6891517d8090b21 GIT binary patch literal 16 VcmZQzU|?ooU|?imIQaq7rOmsT6B&7%7#IaWcmojc Wm~6r7y}6q;opG`dd%)x@b~ymiClo9I diff --git a/resources/tables/CR_Other_Lowercase.bin b/resources/tables/CR_Other_Lowercase.bin index be9ff4abbefc30e1cb877638b627467fcbe7321f..37409e7ed1ddfb6493d0e4da730687dfdcb95df2 100644 GIT binary patch delta 96 zcmZ3%_=1sxfq}sih-D^nSg{HGVPFvWGtnX1^%Dcb@-IOA1BibzFszON;&>p=1Y<__ c1_lUj2GXrS+z!MWfOr!S?_ywlU;xCq0I3-lp#T5? delta 33 mcmaFCxPp;`fq_92h(#uHSWWbb205~)RtpET3 delta 19 ZcmZ3$ID?Ucfq_94h=nF{1Win`0{|dJ1C{^) diff --git a/resources/tables/CR_Pe.bin b/resources/tables/CR_Pe.bin index 42920a4a9d34ada5afb202762a7aebe7288105ff..1311265167fd872d250c9efd5fa2b8d31a0fe109 100644 GIT binary patch delta 52 scmX@X@`8nffq`Kr5c_Q8h+>q}3u9ma;|L%P!ckBh1EganCosMM00JZl>;M1& delta 21 bcmaFCa)O0}fq`Kn5PNLoh+>@F#P|#VIh6&f diff --git a/resources/tables/CR_Po.bin b/resources/tables/CR_Po.bin index 9d07d7157a871b3eacca529ce28bb33354b94818..71301e38a8acf30c97163447c88bfc517e83eff5 100644 GIT binary patch delta 106 zcmdnM{eYW;fq}7{fq`N7M2_8zvKx=6GqTn)Fi6);e!=*hF=X=vrd5n={A~=3{GF34 zSSGQF?POpS+c}wo)rw6Ts8gDAvIDEMtTO|nygv~ChhUWg21b<<21fmlK>TTP2CD}E D!^;{+ delta 63 zcmaFBy@8v9fq^lbfq`M`M2_8zavP7RGfw`@_=GWN^9`m|jFY=qCQMdhwV0g5D#`nw Rfl(faRSJN(WbzDF4*+yw6I}oR diff --git a/resources/tables/CR_Prepended_Concatenation_Mark.bin b/resources/tables/CR_Prepended_Concatenation_Mark.bin index b66b6473122dc457389d5ff347deeb72fa6bd406..a90ccf1d72de16429a6b516948b09bdb36f7e360 100644 GIT binary patch literal 64 wcmZQzVBlw9U|?rpU;|QYtU!Dhg4u!MAj~lVh$jN^BQRzZ*vkOHXMyxt0JU5QcK`qY literal 56 qcmZQzVBlq7U|<6y1~yh8eHVh+`572MnBx%`GYafwfZ(%0`YZs0xCcW3 diff --git a/resources/tables/CR_Print.bin b/resources/tables/CR_Print.bin index 99bbb9f29a91c969e2c348cf41c9780e35468b24..868a98a567dce7944239b1b7e1bb36ef54174c98 100644 GIT binary patch delta 814 zcmXZbT}YE*6bJBgw&u2MpUo{4TV-X9#37+6CHA321dT#aWYI+z5>&e>BEuwzKFQ5f zH1>Dpo-(p@9c z^o0y3Le15-0FmJa1R(_Nk+&x`yj}Ka3w3^?6@F>dHspW8(`QJ+7Z`&{_yyCF)K2n% z5?f|rT@I1UEfc!kQkKH z25(?!$vdpWFr}L@osoWr+n69t2mXgg<&tu2)@xV# MNLvt=RXLmf0l-xFYybcN delta 592 zcmWmCPe_w-7zgn0v$=O$?S1#oT7|Z)C|ib@hfxxy2Z@3Xid~FAb_}8xbck+c z&#^<^47|MZhIw<2AgF}b39(BtDk4zO0-Jkv+1JB|AHU!8hu;H_(^WbX0YXDSV0tog z$1sipMtXAma$*XIyrDUIPb;&Z3IVyOeZj2W3XZ0}0-N3`az`$6~z`(G7BFAk;*^N)k8Ch!?7^LeaOE4X0jNSZzX%{0Ke;WfMf9K>G zER)#8b}}%E?VPN^YQ-iE)G5t5Ie}GL)|r7(-XDnnL$FE#1EWd_1Ec;&ApSJDgVh57 Dpr;xh delta 63 zcmZqRxxmfAz`$6{z`(F`BFAk;xs6ZE87C_<9bpXG{DNs0O;^_-R$V)GBiw)+keDnC#*U%}mq9uUArdiY*o48@Akj(X zSK$nXCucaxJFzyF0%Q*$o~nYF$_JDm+Tw^TLNE7_;u83{RHf)I<9-7-e=wsOBw7Ww z;m9@gjFObkkmsEe${;EGX@|OWqzm1Mf0_hivr^X$h;CAg+SH>y`81#z&1p?LIuSEE OCT8>t@&*lQMB5*s15&R5 delta 195 zcmWN}KMMhI9LMqRS5C)p55R7+sq;9L#VC_SDF&HLW;qYSc)GGWCb^UhGFp_Pm|XXB zSKh;G`uy2DzGI7MBqH~fUDBYeuIeUesxru&X_#hRH zd58y?;0p5i>4k-QCmD$*V?;QLnkL%lp^qWx7&?ZznPP?|e5?^-hZ8QMKfxRe9R4$T BN>l&< diff --git a/resources/tables/CR_Sc.bin b/resources/tables/CR_Sc.bin index b3b6ff59b461d52c0bbf11b9e0beec323e0c6b05..63875fbe83b21c7a45412698b5a233d5c265e056 100644 GIT binary patch delta 11 ScmdnMxPfs(I^%(f86E%{2LxOI delta 11 ScmdnMxPfs(I^+I{86E%{0|Z+D diff --git a/resources/tables/CR_Sentence_Terminal.bin b/resources/tables/CR_Sentence_Terminal.bin index b9e4ad992f3c72dba35057e02cb0b6cf93f2b092..a539433e88d82e9ff6695cc2996dea2fe4178d79 100644 GIT binary patch delta 63 zcmaFC(!t8Xz`(E&hyx~aC^O1V)S1R6UCY2AT{rQ75u08x1A|`3#1D(u_}ds5`8y|1 SU|hr|@65m`?=snd$pQf0IS)wy delta 36 pcmeBReZj)Pz`!sQhs#s!mC0dWwM833pR3Q+(6 diff --git a/resources/tables/CR_Sk.bin b/resources/tables/CR_Sk.bin index 3339a457fa092a44428eed7c5b22189bd8191330..a59635628530d79538c83095026d7770e64471d1 100644 GIT binary patch delta 31 lcmeyt*uccWz`$S+#PSn4ve-B}7#KJ@CKjYK9-4SV0RUuy2fqLS delta 24 ecmZo*`oYM-z`$S&#BvikvL;rgG9H}xKmh%W7s(ok|1$P#dR|zFo1*c?q+U($rjk39FQTs}5`080 w9XrApCtUFWzfDXjUv0UzsOzGS0VbGYhB;PPV~ZosAmeTz<5JPLAjAUuAGU%_oB#j- delta 178 zcmWN|p$fua7=_{Uu?+?`@4-vZY_uCKVjl<^hRI}>{a%Do%P@*b9D+%VMnQwgv0n$i z;YsJb$HuM^OO{B=xA7o|YN@VW8f2~+w(a41VbQwFJ}Wr#X mR?Sf0Ec1N~kzkA|_;@~^+%K@i8XM%;Dd-j{;l2R;mp4}5_*1B3yxlL{69 delta 16 WcmbQi)WF2Sz`$S+#PSn4egFU#R|6CP diff --git a/resources/tables/CR_Tagalog.bin b/resources/tables/CR_Tagalog.bin index f2b056d26dba50965a3f97c14f5c43e76bf895e5..b0036edaaf85b3b71a0840dbf01777f6cc210aad 100644 GIT binary patch literal 24 ZcmZQzU|?lnU|?ck5C>A?qChMU!T<#N0Ji`D literal 24 acmZQzU|?lnU|?ck5C>A?JV49`#3BF$NdS@n diff --git a/resources/tables/CR_Takri.bin b/resources/tables/CR_Takri.bin index e1cd46901a23f027dc81f5dce7268840ad22f6d6..24f19ad68baf1e327435eac766a8b47604d460e0 100644 GIT binary patch literal 24 bcmZQzU|?lnU|?ck6l(zDoj`m5h))6l6%hj_ literal 24 bcmZQzU|?lnU|?ck6l(zD9YA~lh))6l6$k?* diff --git a/resources/tables/CR_Tangsa.bin b/resources/tables/CR_Tangsa.bin new file mode 100644 index 0000000000000000000000000000000000000000..4e6fea3b2a835999c26d10fa48bfaec6806f8ad2 GIT binary patch literal 24 bcmZQzU|?lnU|?ck%qjrleL#Ewh))6l9_|Ed literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Telugu.bin b/resources/tables/CR_Telugu.bin index 2dfa002d21b8f7ff49bc235e18fc8c065e9983d7..03e903def3faa4491777fb51262f7140deb20ff6 100644 GIT binary patch delta 28 icmc~O;9y{2kOpGji5$v|HWPK!Sz{R(cw#38NB{sl1_Y`A delta 41 ncmXTO;9y{2kOX3$i5$v|wi9*KMH7IWWFSrh;(Q=32jY4Fc)|m5&U|>)LVgUvQ6CmZgpMk*-NYDR2QNo_{J_FNo1_q|>mJ<^cI2f3P0~nZ< G*8>3c{|Y|< delta 45 wcmeBRY+#gNU|^63Vtxh&6CmZgpMk*-NYDQ>QNo_{E(6nY1_q|>CKD4B0HF*B?*IS* diff --git a/resources/tables/CR_Unknown.bin b/resources/tables/CR_Unknown.bin index 83deb7c2108ea04c1b86c1ef5612dbbf96f17200..314cfce44fa3802e9ac66a0d3e9893eba01247af 100644 GIT binary patch delta 904 zcmXZaUr3Wt7{~GFY)z*&x0!#ysY51MxsuTSDSAK_YgeWh&RerK3}1dzbFCca$c0nzt;G->_m?({X!J#iC=| z+{#fXQdFiF97lCk#zSvRq}UMgokRM6HbuF2q8jZ8;g&9O`LiyF@?68HZgRD#Bl@1pD5quN zFeYG#D)ONOLC~S7S-;BdaYaNG{{a=gY+dVqR#?WP-)pHS8_=#3?iyEERP}FAQQM|V zJe66)qPk5Jy2;bGKPf7*X5p|A6SbzH0QR8!|df1o?fJ=15v zS<)d~MK5k5j1QKNIRoAh_kCd~&*8=^M&i~gG=ncv{Vh9S163m{+D=|ujnfPF`c V*aI&lR|GcraUF)_sul4V#y?2V7&rg` delta 638 zcmXZXO=uHQ5C`!8OU!0#-R!0kQySM*w4{|_75qREEhyGQA)q~oLIa*W6x%~ZB=`Xy zJlZ%%3lS<7J*Z`oA_$2!2hn0}5Nr=x(259^1eBJpr0YK=habb6c{A_LNb13E9SHRR zfw7!^QPXTdvvZevqIp1n(eReBJW(7BsH3tsn3PQLoc#sZw9v4~_=Bnqf8-AYKAIA(W18&&ws$W)ri$_~e8}hmQgxX+ znG0vtS?SaJwR{c8`|@1hX%vBR4jX?@f8DB{Q0-H|zcNtkCeE&nP>#4vtwL+$yB!-Z zC^aOnniFoN`Lr^8D6@mQ=)CkAPSX&Sb%Um4*hs76QZoDX8F4G`gp{tZ7wtIKzEBP& diff --git a/resources/tables/CR_Upper.bin b/resources/tables/CR_Upper.bin index d87ae018864196e8ff3022297a9446cc3d0c850a..21717eb843083c67e716fa227f9ae86ac238fbf0 100644 GIT binary patch delta 118 zcmZ3W@j!!vfq_+=fq|)eBS$|kqyFX@yvnSm2N)QZgYY3JJ_4kV1Mx{Hz5t{__!<=7 n0Ma)mUl3A~V=Z7{WUT_?8X)ch;vOKL1jJK-cF|oU zT~)u)U{S$rv6sKUVmJj5f>4iWVY-~jR{-~=Wxi78ZY4|7h=N@?8s zD{5~;Z(D}Ufm!THQ?e7mGopd>n8VWzre=@nptB>8)s84{MTblwXtZK}1j{iIO#~1^ z7W;7!^h_KvH$y$$>5^!=C7PkMKMh*+=gsp_a!XP4DfO*U7 zq7^Pzd$6l5M;-?MuI9}|IBP9Zve<_VhMZdXs9JUQ>TzsG$^;@QtHE*O6fSQtdm_o* zCDG-(V2tJ8q92z)erjL^O?<`|d_@cEP9ZX)opo`|in#9YHMQ=YwmX~?cd{&&3ReFE DrK_a? delta 337 zcmXZYKS%;`6bJD4j{95PA3Hk-GYbbRN{)~Qp$J-n1SJZbS|6^7MP_6-_c0(tO)ByAgcF7*ui#Wlm zgbS3H)3hT8_(p9xj$h(O))1f1)ey}gfSARiY@D{W0y=cBk36*Lephmrcym<#uZ?Px#Ej9-qBu@oEZJsT$4HmF1QL(1cv$?ZJ zS^A&PS)`7gG(tdUm)(%#gt#d7oE%asa)eDCK}{&4f~du!M#SQ`km17*?mhRMb4vrYj3p9qM7+VO zHKpNE5o-dMa0R#A`+D1>JIn!Jzkftz?T9J*j_Nz}*4M4eZp#-`ou3VyReww*o-kv< zed?H3!KsdUk#50WQ?w4d@2w#<={3L2K!_>5@i0_N~^m1#Mrb;vy)%4s0ZtoX2*4jZkQY^2;HqKOb9$YCdTgPw_l zrWxt$N|!{_OQIP{vuV>QF8Mxo%YS#1qu;%xsKK4wfk_FXJcvf_=*?q7@!j`>>@g zPwof*t`8NMWHH delta 358 zcmXZYPbfnH90&04@3r@5w!J;u>ru?eVMuF-MXg9VQkE#EwQ_J=NpW+aIMUBS?XcZ; zWZt4&yf_fKu!9TvQ?84mhJ&AS`1I}9_ww!MrM8j=pq>HBQ`IO^YZ)+V;!vE6Ten6f zg+_SBm*6#DKK1|v|2&Ep@hTePO}rndI?=UjXv-7|0&S+SMK`bOQ)F>nFZw;817d<# zjGPv00@2v)U!HVwyMYjC*6x5oeq}UUYg?5A@u0FPvfW-$SX$FOSk}wD;>K0VXwm0T*#r A!vFvP diff --git a/resources/tables/CR_XID_Start.bin b/resources/tables/CR_XID_Start.bin index 6dfc537b9227df209cad7c92d1952880f91d8437..52e49f81a5d25a5faeade01e65ded9e8dc0d8f8a 100644 GIT binary patch delta 525 zcmXZZODIH97zgn0yVo6eYM5)p$b=fnqp6W+l2^(~8cNyBb`~T<*~o&0JVOoqg^cNQm9d|j#%Db+;MdRU$1EI*Mt3DYnS z0XWkGEK7=)$l?_Nxs`AAxLhwO8ASF1;WBM;yB;wuuozI^h0olXcTTh&feX0&cZIxx z5B=1flo}O3u`&XqFavY21k11jtFQ@M5C$Fg;Si3*i6u8Xb&NQ50wy5@yKtaiTO4d` zw~mWMnj>wHSQ~<2gHY4^lqOOLY4T=f2gZAwzc5=f@$xV* zi1PulAP_4|Hep-L=)L&{TR$VO9s`4p0T9Olal+&jj!&%f|1dBtm>kR*!n>b=Vfi5- zJ_W>IHy`2r$26IVS7NgfuO#E-U_Ob-)qEL~U-R9ce2IT1O=C3C zV_W%L0fUfH-clhhP!k2B6SJIUo)I;-JkR1eF-&9sHx7h5ZeN= g9|S)-z`*$E_2vp;bwyoAE@WVo`wqlE7#QXML$C@^T%~041Xd3K;gl9X diff --git a/resources/tables/CaseFold.bin b/resources/tables/CaseFold.bin index ab9dee67e687c47c5af326ea335b62ec0412afe2..347026af758b21999ba7cf2e0da664fca6246c3f 100644 GIT binary patch delta 509 zcmXxc%PvDv0EOYblkVtw15<;}ni_W6p~O4z3Z?GBaj!}_Rm81sQI0#!p-4O64VbvR zijkH2&AvY?S;T?GZ@5+O?A`js`c^L1@Bltib#fS1(%f59-igAWx zc>-7ENqi#v_*9<4p*)Sx*KfPAu8E)i7d@C35oxFr=auG-J jGQO8r@Pi!Sx?IAK@+wX|DaypNyp9|425v^xOncieU4>32 delta 34 qcmbO;nQ>1)BMSoq>!pn>{d$|{>lJWJmNxg;+-@Gtxw*|rj2!^Xi3?l+ diff --git a/resources/tables/CaseUnfold_11.bin b/resources/tables/CaseUnfold_11.bin index db9b182c38f0f71abb39cdd517b797565fe17577..6724aeb5c5c156cb13067963baa073b8a968f870 100644 GIT binary patch delta 509 zcmXZR$u0z87)IgmPwJP{U62q-M`F_(SJStEMmIr~Zu6`|%u@_yrc=hS;11XrcH%lL zylH3moSZmz-(?q=`Fu4fWWtb;SrTx)Z?RtM)~X%m&r$tL$%Hb1la#RdSr#|#Sq diff --git a/resources/tables/Transcoder_SingleByte_ByteArray.bin b/resources/tables/Transcoder_SingleByte_ByteArray.bin index a6846f658340dadddcc1edbe66c205f236b7fa59..284b334d4fc0ef9f56d1eb17dc9d9ef5fb36bb40 100644 GIT binary patch delta 376 zcmY+AO-lk{6otKx^Ijci-tlWbbVf&KR4S-#h?GG=gdnu4R`~;3^bd5^y5TN^vQ=wo z(XNlJn{wHo5QSC+)jKYN4&2LKT%L0{vsd_e2NsK+eZ>YeJ{pcMx;?5n*J-z0@v1dH zs5e}iOUK~Sv=`9#7PCMIlPLft9i5G{A9M|tt73?zWz6U3#+AW{;A3#zCgM;$Ym#T@3bfCidqp^Zf>p@S}#v4S2} zv4%bd5kc?;3;u$F1{`$AKo)Y4hXNR2f(14dOAaji0#TS;2WT{DvD*wswj^TEtvaEX Q{X!g*^w8SA|LA?%zh?hR3jhEB delta 30 mcmex=lkweoMm7e9^j8e^lLfOHHnw^DO`d6?w3#L3w*&ymmJDzJ diff --git a/resources/tables/Transcoder_SingleByte_WordArray.bin b/resources/tables/Transcoder_SingleByte_WordArray.bin index 61364d9d53b21e01b0963ff119adc02f92f8d26c..9ccb6072774a907e89a10ec33ce9aa715e83e0a3 100644 GIT binary patch delta 4002 zcmaKve^AuN6~OntC*K%LS~^XrWm1N=*4l)gI@g9*sN@>34EL*V3xcyfn=2M7ldjiAiLHehLDtTi;HN?T2A^Q)ibzT^yJ`p1WT z`*z>%dvD)&Z|N;E+id1JLOj0j_?*WIEH0l}ob;J1^R5ORgyOQRLD?l&gL0q?>YxQ| z-~lV-LkU!XXuDuOgq_%T(JYR$RyTC{%z69KH6wd{=9Au=K^-83xZg|L1@2DzcAwcI zj{3|wr|2AJa-Gkdi`jIRmBOMib3Jk+w15lRzzU_%4kw@*D&aWTIbtDJ4+~KcDJ(+Vr_MzPyCy_09ELjh z6O_X^I3OD&?1l;`g%Wt?q7a3VtYNJ4Cb~bvLz~d=28sWE(H1~H9DqW28S-F1yaF$2k!(S9hzAe|%72xs9OG{I}o4Cmn} z3_&Xl!!h~E(_gi8A-xXWa0zCya(^Xf8f7R2?wDX4ne|Z4tAH} zq{{O+ed?_kIia35f-#eSyfBl4%tdCbuwn^+THq{3b5SmWDC7ZJ4yu@O5exB<#A5HD zTk4J~n5SvQc`|Ens7xqaqCfj4^yjN5l7bnOBI8Lqx%B`dZfg3jLIH*%s>S+W9u; z%5htmW!?LTDj9|Y>U&xLBXo&=orB~!CXh*JEln*6t;ONmRObDjHUp)RNIRmP1UVjt z7)U~aont5DBO8gW%|nicSn;J#OLcuWi&?3(0{LpigYIu1+Gf&f$ECGqMc4)p*Shk- z@KJr|D~Y^5$~{@5o3#2EX#0w0Q}3es!(~|OB6+!S zU~%gt(~Y>)&6v8AOZ-kicLAM>S6#`er-X0?%aNu>!cvLCr4ov1CqpwO?@A&8kH}@s z!TQE!Ov#k-%?mB6lwC*svt4%TYyz3sYiV2@&E2)?Qq^GOp!FKgP^&I-;fe^)KUEuj*r_8?`6C<;p{OT zE5|6!_UP#l=C$?en?4ZYWQ-hX3)MIOScr~AaP@nZ|aLpSf@3e>OTX^w#NLwVA2sOqk9%x`i)GeL-SFQz7d#Ucmd#IKjogWnpQ<<6j>j| z)fYow*)Y$S3pV;jHu|q2e>NK;gMIoZ)fzMZ461+nta7+>k2~}9uT9!Ol)Tn^LErWg zr?ph2Mc;OgCuxWb_T^Xx)38(-xrdj7R{~xR;`zP29GuHi$&48uo~1wA!|h+-)f-~i z-@m)#N>C2$fn4_kKV4(`;)|s8Z2ZgyviJMpx+#uVa+ljWz!9IDkhU`iwDY&zk%RM0 zmLZZdb13R5tnS%ik}#uFFV@vhqpS1lhF!FTH~URA+=1Rm{Ln7u=YdK#bJJ8o7$FUh TAV)(i#0!E+5+ZXBlSlstvql#m delta 2801 zcmaJ@ZA_C_6h3{?S7a>X2dk`c3sHxRv5AD4Zi$8&V>;&e5L6JviiplE8(WN$$X2G# z@B>}vML;RiGDK(*DlcHG6l+E7Hs+cPoO4VY;uf|M!yMaivXAG|x3(d=A5YG?=i}b< zoO|EX8Vn)MPeNu9B`!HLYw002v^R-4wy34Qj~r77hvHfBM@rUKnIxuuN%XOrMZBwI z|5TPM)1JVxoQM>_9Oz|4`bErGlql%qCC||?LC_bo;cAtbmO*r+lucFN5Yre`1G7H0 znjKb#vbba6y0jr8R!S89G*RJg-(D02+c42i$ZZCqqG%wCD19F6JVrkANF{V0y9*eE z9t$K8aWkm_4Ui6GV}BFuq0o8mTsn9)gwDD`Na{K^q!80{;9SM@wJBmoE>Tqi^VZ%G zs>+zhkRntUv-x$Z{OTSgf@rk|QZDR08_^ydm{AA&b$N5dRF(K*s&~NN30*F%dK|hM z2r4Y&7Gfru)7By_Ke0t2)Fd%ueUZ5K8qx7&Hs1COi!%<0nNe7_vMFPXn7NUt*1%#- z3sN)DoLV>b!j3avAQ^KnEZJSwF&mJ>dTawsri} zNuSM70=)uy6eQmZT{eJ49V%V76EYk=`Pz@eUyD1gbpoTn6fN;3&PP%L0|1KHRNMb;%r-Ud9-x-vG_xKg$LQ=)o)woLgNYFoV&wn0gAQd9`_qb$AYpkN$l z#a0!&+Y}|P|AELdu^Wl~z$L&6Y*>six6f~Ch6Fj26Y%=TZFm#nRXwSi@{BYsG8?HfFO3bG|D3Hq@XJ zzd~6#F+?XLS-JU+n6m?FEGxC72u<^+>5W*TbU9|CCV2b}VMuyj37gSpYpQ`njZNq! zzoeWo==_<>JQ|y^Yq&4wWHfw{fEH_+N0S@68qfggKsM3F7ZKxut{`^VrjsUH4=RLH zk*ut3r6YvPl%|M^; zzIdK_0(qf`iv<#(*FdTP4Ui6G``)0%2wg$aW!rWI^PUc6&WpM)%dEr?Fr?MKpC z{D4n8>gRmg4?qTS%KHtr3XCy_bg%0Th0s1cJ-dp|Iu~sEndr=@d_Ja48*1tW`1R$- zV@3=xjV)$v{@YM_SWrnF=xm1LDyiwe-$?V)%d&lE%eQ}XO%sk z7Cv|^cHU<-fKB|5f6EGNR4heZ2oqxLHrVANkE6f~fB~ojP5=cj5uNX2nu{Z1!5*mN zEWx!=EU**xc$nU$R5=m?8yrPK6|gE1zfKzFbg5JhZNSZkSS|2+Kis8k!u5*asALJ3 z^2LJtuy|PIr9@q?+yQ=rj%;8TPyx8{Wa9yBxOF)sCnn$Ic`qs(#Tq$1h;zgO$yh`3 z3D8>(sRlFv?;!Tws)Jn*T~Ss!GJ79T0qEIt7xqi;zTFC;caSCbUlj{?6FI$LohlaE zh%R=bU?uzD%3C^DD6)C$aO%uTUHCTrmAX*9SMjS51o$QM(8=-HM!8G>14jy_Hvj+t diff --git a/scripts/generate.rb b/scripts/generate.rb index ca45ea0b..84f0971f 100644 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -8,7 +8,7 @@ else ;["rdata", ""] end -UNICODE_VERSION = "13.0.0" +UNICODE_VERSION = "15.0.0" SRC_DIR = "../src/org/jcodings" DST_BIN_DIR = "../resources/tables" INDENT = " " * 4 diff --git a/src/org/jcodings/Config.java b/src/org/jcodings/Config.java index 09bf0c70..28dcd8fb 100644 --- a/src/org/jcodings/Config.java +++ b/src/org/jcodings/Config.java @@ -62,12 +62,12 @@ public interface Config { final int ENC_CASE_FOLD_MIN = INTERNAL_ENC_CASE_FOLD_MULTI_CHAR; final int ENC_CASE_FOLD_DEFAULT = ENC_CASE_FOLD_MIN; - final String UNICODE_VERSION_STRING = "13.0.0"; - final int UNICODE_VERSION_MAJOR = 13; + final String UNICODE_VERSION_STRING = "15.0.0"; + final int UNICODE_VERSION_MAJOR = 15; final int UNICODE_VERSION_MINOR = 0; final int UNICODE_VERSION_TEENY = 0; - final String UNICODE_EMOJI_VERSION_STRING = "13.1"; - final int UNICODE_EMOJI_VERSION_MAJOR = 13; - final int UNICODE_EMOJI_VERSION_MINOR = 1; + final String UNICODE_EMOJI_VERSION_STRING = "15.0"; + final int UNICODE_EMOJI_VERSION_MAJOR = 15; + final int UNICODE_EMOJI_VERSION_MINOR = 0; } diff --git a/src/org/jcodings/transcode/TranscoderList.java b/src/org/jcodings/transcode/TranscoderList.java index 9b6f2f72..235fa14d 100644 --- a/src/org/jcodings/transcode/TranscoderList.java +++ b/src/org/jcodings/transcode/TranscoderList.java @@ -101,6 +101,7 @@ static void load() { TranscoderDB.declare("", "universal_newline", "Universal_newline"); TranscoderDB.declare("", "crlf_newline", null /*Crlf_newline*/); TranscoderDB.declare("", "cr_newline", null /*Cr_newline*/); + TranscoderDB.declare("", "lf_newline", "Lf_newline"); TranscoderDB.declare("US-ASCII", "UTF-8", null /*From_US_ASCII*/); TranscoderDB.declare("UTF-8", "US-ASCII", null /*To_US_ASCII*/); TranscoderDB.declare("ASCII-8BIT", "UTF-8", null /*From_ASCII_8BIT*/); @@ -175,6 +176,8 @@ static void load() { TranscoderDB.declare("UTF-8", "IBM862", null /*To_IBM862*/); TranscoderDB.declare("IBM863", "UTF-8", null /*From_IBM863*/); TranscoderDB.declare("UTF-8", "IBM863", null /*To_IBM863*/); + TranscoderDB.declare("IBM864", "UTF-8", null /*From_IBM864*/); + TranscoderDB.declare("UTF-8", "IBM864", null /*To_IBM864*/); TranscoderDB.declare("IBM865", "UTF-8", null /*From_IBM865*/); TranscoderDB.declare("UTF-8", "IBM865", null /*To_IBM865*/); TranscoderDB.declare("IBM866", "UTF-8", null /*From_IBM866*/); @@ -223,7 +226,7 @@ static void load() { TranscoderDB.declare("UTF-32", "UTF-8", "From_UTF_32"); TranscoderDB.declare("UTF-8", "UTF-16", "To_UTF_16"); TranscoderDB.declare("UTF-8", "UTF-32", "To_UTF_32"); - } + }; static final GenericTranscoderEntry[] GENERIC_LIST = new GenericTranscoderEntry[] { new GenericTranscoderEntry("Big5", "UTF-8", 57100, "Big5", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), @@ -359,36 +362,38 @@ static void load() { new GenericTranscoderEntry("UTF-8", "IBM862", 35228, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM863", "UTF-8", 35752, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM863", 36132, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM865", "UTF-8", 36656, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM865", 36968, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM866", "UTF-8", 37492, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM866", 37948, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("IBM869", "UTF-8", 38440, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "IBM869", 38956, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACCROATIAN", "UTF-8", 39480, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACCROATIAN", 40312, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACCYRILLIC", "UTF-8", 40836, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACCYRILLIC", 41540, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACGREEK", "UTF-8", 42064, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACGREEK", 42764, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACICELAND", "UTF-8", 43288, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACICELAND", 44004, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACROMAN", "UTF-8", 44528, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACROMAN", 45012, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACROMANIA", "UTF-8", 45536, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACROMANIA", 45912, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACTURKISH", "UTF-8", 46432, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACTURKISH", 46788, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("MACUKRAINE", "UTF-8", 47312, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "MACUKRAINE", 47536, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("KOI8-U", "UTF-8", 48060, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "KOI8-U", 48844, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("KOI8-R", "UTF-8", 49368, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "KOI8-R", 49900, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("TIS-620", "UTF-8", 50264, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "TIS-620", 50308, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("CP850", "UTF-8", 50832, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), - new GenericTranscoderEntry("UTF-8", "CP850", 51380, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM864", "UTF-8", 36644, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM864", 37504, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM865", "UTF-8", 38028, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM865", 38340, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM866", "UTF-8", 38864, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM866", 39320, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("IBM869", "UTF-8", 39812, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "IBM869", 40328, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACCROATIAN", "UTF-8", 40852, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACCROATIAN", 41684, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACCYRILLIC", "UTF-8", 42208, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACCYRILLIC", 42912, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACGREEK", "UTF-8", 43436, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACGREEK", 44136, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACICELAND", "UTF-8", 44660, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACICELAND", 45376, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACROMAN", "UTF-8", 45900, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACROMAN", 46384, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACROMANIA", "UTF-8", 46908, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACROMANIA", 47284, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACTURKISH", "UTF-8", 47804, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACTURKISH", 48160, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("MACUKRAINE", "UTF-8", 48684, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "MACUKRAINE", 48908, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("KOI8-U", "UTF-8", 49432, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "KOI8-U", 50216, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("KOI8-R", "UTF-8", 50740, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "KOI8-R", 51272, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("TIS-620", "UTF-8", 51636, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "TIS-620", 51680, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("CP850", "UTF-8", 52204, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), + new GenericTranscoderEntry("UTF-8", "CP850", 52752, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("CP852", "UTF-8", 29992, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "CP852", 30608, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("CP855", "UTF-8", 31132, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), @@ -416,6 +421,7 @@ public static Transcoder getInstance(String name) { case "Eucjp2sjis": return Eucjp2sjis_Transcoder.INSTANCE; case "Sjis2eucjp": return Sjis2eucjp_Transcoder.INSTANCE; case "Universal_newline": return Universal_newline_Transcoder.INSTANCE; + case "Lf_newline": return Lf_newline_Transcoder.INSTANCE; case "From_UTF8_MAC": return From_UTF8_MAC_Transcoder.INSTANCE; case "From_UTF_16BE": return From_UTF_16BE_Transcoder.INSTANCE; case "To_UTF_16BE": return To_UTF_16BE_Transcoder.INSTANCE; diff --git a/src/org/jcodings/unicode/UnicodeCodeRange.java b/src/org/jcodings/unicode/UnicodeCodeRange.java index 6277ffa2..8ff37faa 100644 --- a/src/org/jcodings/unicode/UnicodeCodeRange.java +++ b/src/org/jcodings/unicode/UnicodeCodeRange.java @@ -450,6 +450,18 @@ public enum UnicodeCodeRange { KITS("kits", "CR_Khitan_Small_Script"), YEZIDI("yezidi", "CR_Yezidi"), YEZI("yezi", "CR_Yezidi"), + CYPROMINOAN("cyprominoan", "CR_Cypro_Minoan"), + CPMN("cpmn", "CR_Cypro_Minoan"), + OLDUYGHUR("olduyghur", "CR_Old_Uyghur"), + OUGR("ougr", "CR_Old_Uyghur"), + TANGSA("tangsa", "CR_Tangsa"), + TNSA("tnsa", "CR_Tangsa"), + TOTO("toto", "CR_Toto"), + VITHKUQI("vithkuqi", "CR_Vithkuqi"), + VITH("vith", "CR_Vithkuqi"), + KAWI("kawi", "CR_Kawi"), + NAGMUNDARI("nagmundari", "CR_Nag_Mundari"), + NAGM("nagm", "CR_Nag_Mundari"), WHITESPACE("whitespace", "CR_Space"), WSPACE("wspace", "CR_Space"), BIDICONTROL("bidicontrol", "CR_Bidi_Control"), @@ -550,6 +562,8 @@ public enum UnicodeCodeRange { AGE_12_0("age=12.0", "CR_Age_12_0"), AGE_12_1("age=12.1", "CR_Age_12_1"), AGE_13_0("age=13.0", "CR_Age_13_0"), + AGE_14_0("age=14.0", "CR_Age_14_0"), + AGE_15_0("age=15.0", "CR_Age_15_0"), GRAPHEMECLUSTERBREAK_PREPEND("graphemeclusterbreak=prepend", "CR_Grapheme_Cluster_Break_Prepend"), GRAPHEMECLUSTERBREAK_CR("graphemeclusterbreak=cr", "CR_Grapheme_Cluster_Break_CR"), GRAPHEMECLUSTERBREAK_LF("graphemeclusterbreak=lf", "CR_NEWLINE"), @@ -584,6 +598,7 @@ public enum UnicodeCodeRange { INSAMARITAN("insamaritan", "CR_In_Samaritan"), INMANDAIC("inmandaic", "CR_In_Mandaic"), INSYRIACSUPPLEMENT("insyriacsupplement", "CR_In_Syriac_Supplement"), + INARABICEXTENDEDB("inarabicextendedb", "CR_In_Arabic_Extended_B"), INARABICEXTENDEDA("inarabicextendeda", "CR_In_Arabic_Extended_A"), INDEVANAGARI("indevanagari", "CR_In_Devanagari"), INBENGALI("inbengali", "CR_In_Bengali"), @@ -751,7 +766,9 @@ public enum UnicodeCodeRange { INOSAGE("inosage", "CR_In_Osage"), INELBASAN("inelbasan", "CR_In_Elbasan"), INCAUCASIANALBANIAN("incaucasianalbanian", "CR_In_Caucasian_Albanian"), + INVITHKUQI("invithkuqi", "CR_In_Vithkuqi"), INLINEARA("inlineara", "CR_In_Linear_A"), + INLATINEXTENDEDF("inlatinextendedf", "CR_In_Latin_Extended_F"), INCYPRIOTSYLLABARY("incypriotsyllabary", "CR_In_Cypriot_Syllabary"), INIMPERIALARAMAIC("inimperialaramaic", "CR_In_Imperial_Aramaic"), PALMYRENE("palmyrene", "CR_Palmyrene"), @@ -778,8 +795,10 @@ public enum UnicodeCodeRange { INHANIFIROHINGYA("inhanifirohingya", "CR_In_Hanifi_Rohingya"), INRUMINUMERALSYMBOLS("inruminumeralsymbols", "CR_In_Rumi_Numeral_Symbols"), INYEZIDI("inyezidi", "CR_In_Yezidi"), + INARABICEXTENDEDC("inarabicextendedc", "CR_In_Arabic_Extended_C"), INOLDSOGDIAN("inoldsogdian", "CR_In_Old_Sogdian"), INSOGDIAN("insogdian", "CR_In_Sogdian"), + INOLDUYGHUR("inolduyghur", "CR_In_Old_Uyghur"), INCHORASMIAN("inchorasmian", "CR_In_Chorasmian"), INELYMAIC("inelymaic", "CR_In_Elymaic"), INBRAHMI("inbrahmi", "CR_In_Brahmi"), @@ -807,22 +826,27 @@ public enum UnicodeCodeRange { INNANDINAGARI("innandinagari", "CR_In_Nandinagari"), INZANABAZARSQUARE("inzanabazarsquare", "CR_In_Zanabazar_Square"), INSOYOMBO("insoyombo", "CR_In_Soyombo"), + INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDEDA("inunifiedcanadianaboriginalsyllabicsextendeda", "CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended_A"), INPAUCINHAU("inpaucinhau", "CR_In_Pau_Cin_Hau"), + INDEVANAGARIEXTENDEDA("indevanagariextendeda", "CR_In_Devanagari_Extended_A"), INBHAIKSUKI("inbhaiksuki", "CR_In_Bhaiksuki"), INMARCHEN("inmarchen", "CR_In_Marchen"), INMASARAMGONDI("inmasaramgondi", "CR_In_Masaram_Gondi"), INGUNJALAGONDI("ingunjalagondi", "CR_In_Gunjala_Gondi"), INMAKASAR("inmakasar", "CR_In_Makasar"), + INKAWI("inkawi", "CR_In_Kawi"), INLISUSUPPLEMENT("inlisusupplement", "CR_In_Lisu_Supplement"), INTAMILSUPPLEMENT("intamilsupplement", "CR_In_Tamil_Supplement"), INCUNEIFORM("incuneiform", "CR_In_Cuneiform"), INCUNEIFORMNUMBERSANDPUNCTUATION("incuneiformnumbersandpunctuation", "CR_In_Cuneiform_Numbers_and_Punctuation"), INEARLYDYNASTICCUNEIFORM("inearlydynasticcuneiform", "CR_In_Early_Dynastic_Cuneiform"), + INCYPROMINOAN("incyprominoan", "CR_In_Cypro_Minoan"), INEGYPTIANHIEROGLYPHS("inegyptianhieroglyphs", "CR_In_Egyptian_Hieroglyphs"), INEGYPTIANHIEROGLYPHFORMATCONTROLS("inegyptianhieroglyphformatcontrols", "CR_In_Egyptian_Hieroglyph_Format_Controls"), INANATOLIANHIEROGLYPHS("inanatolianhieroglyphs", "CR_In_Anatolian_Hieroglyphs"), INBAMUMSUPPLEMENT("inbamumsupplement", "CR_In_Bamum_Supplement"), INMRO("inmro", "CR_In_Mro"), + INTANGSA("intangsa", "CR_In_Tangsa"), INBASSAVAH("inbassavah", "CR_In_Bassa_Vah"), INPAHAWHHMONG("inpahawhhmong", "CR_In_Pahawh_Hmong"), INMEDEFAIDRIN("inmedefaidrin", "CR_In_Medefaidrin"), @@ -832,23 +856,31 @@ public enum UnicodeCodeRange { INTANGUTCOMPONENTS("intangutcomponents", "CR_In_Tangut_Components"), INKHITANSMALLSCRIPT("inkhitansmallscript", "CR_In_Khitan_Small_Script"), INTANGUTSUPPLEMENT("intangutsupplement", "CR_In_Tangut_Supplement"), + INKANAEXTENDEDB("inkanaextendedb", "CR_In_Kana_Extended_B"), INKANASUPPLEMENT("inkanasupplement", "CR_In_Kana_Supplement"), INKANAEXTENDEDA("inkanaextendeda", "CR_In_Kana_Extended_A"), INSMALLKANAEXTENSION("insmallkanaextension", "CR_In_Small_Kana_Extension"), INNUSHU("innushu", "CR_In_Nushu"), INDUPLOYAN("induployan", "CR_In_Duployan"), INSHORTHANDFORMATCONTROLS("inshorthandformatcontrols", "CR_In_Shorthand_Format_Controls"), + INZNAMENNYMUSICALNOTATION("inznamennymusicalnotation", "CR_In_Znamenny_Musical_Notation"), INBYZANTINEMUSICALSYMBOLS("inbyzantinemusicalsymbols", "CR_In_Byzantine_Musical_Symbols"), INMUSICALSYMBOLS("inmusicalsymbols", "CR_In_Musical_Symbols"), INANCIENTGREEKMUSICALNOTATION("inancientgreekmusicalnotation", "CR_In_Ancient_Greek_Musical_Notation"), + INKAKTOVIKNUMERALS("inkaktoviknumerals", "CR_In_Kaktovik_Numerals"), INMAYANNUMERALS("inmayannumerals", "CR_In_Mayan_Numerals"), INTAIXUANJINGSYMBOLS("intaixuanjingsymbols", "CR_In_Tai_Xuan_Jing_Symbols"), INCOUNTINGRODNUMERALS("incountingrodnumerals", "CR_In_Counting_Rod_Numerals"), INMATHEMATICALALPHANUMERICSYMBOLS("inmathematicalalphanumericsymbols", "CR_In_Mathematical_Alphanumeric_Symbols"), INSUTTONSIGNWRITING("insuttonsignwriting", "CR_In_Sutton_SignWriting"), + INLATINEXTENDEDG("inlatinextendedg", "CR_In_Latin_Extended_G"), INGLAGOLITICSUPPLEMENT("inglagoliticsupplement", "CR_In_Glagolitic_Supplement"), + INCYRILLICEXTENDEDD("incyrillicextendedd", "CR_In_Cyrillic_Extended_D"), INNYIAKENGPUACHUEHMONG("innyiakengpuachuehmong", "CR_In_Nyiakeng_Puachue_Hmong"), + INTOTO("intoto", "CR_In_Toto"), INWANCHO("inwancho", "CR_In_Wancho"), + INNAGMUNDARI("innagmundari", "CR_In_Nag_Mundari"), + INETHIOPICEXTENDEDB("inethiopicextendedb", "CR_In_Ethiopic_Extended_B"), INMENDEKIKAKUI("inmendekikakui", "CR_In_Mende_Kikakui"), INADLAM("inadlam", "CR_In_Adlam"), ININDICSIYAQNUMBERS("inindicsiyaqnumbers", "CR_In_Indic_Siyaq_Numbers"), @@ -877,6 +909,7 @@ public enum UnicodeCodeRange { INCJKUNIFIEDIDEOGRAPHSEXTENSIONF("incjkunifiedideographsextensionf", "CR_In_CJK_Unified_Ideographs_Extension_F"), INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT("incjkcompatibilityideographssupplement", "CR_In_CJK_Compatibility_Ideographs_Supplement"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONG("incjkunifiedideographsextensiong", "CR_In_CJK_Unified_Ideographs_Extension_G"), + INCJKUNIFIEDIDEOGRAPHSEXTENSIONH("incjkunifiedideographsextensionh", "CR_In_CJK_Unified_Ideographs_Extension_H"), INTAGS("intags", "CR_In_Tags"), INVARIATIONSELECTORSSUPPLEMENT("invariationselectorssupplement", "CR_In_Variation_Selectors_Supplement"), INSUPPLEMENTARYPRIVATEUSEAREAA("insupplementaryprivateuseareaa", "CR_In_Supplementary_Private_Use_Area_A"), @@ -906,5 +939,5 @@ public int getCType() { } static final UnicodeCodeRange[]CodeRangeTable = UnicodeCodeRange.values(); - static final int MAX_WORD_LENGTH = 44; + static final int MAX_WORD_LENGTH = 45; } From 2bdca5b4bcf603df18e0ba5f42c7cc914a8699a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Thu, 27 Feb 2025 02:10:08 +0100 Subject: [PATCH 143/158] add lf_newline --- scripts/generate.rb | 1 + src/org/jcodings/transcode/EConv.java | 5 +++++ src/org/jcodings/transcode/EConvFlags.java | 15 ++++++++------- src/org/jcodings/transcode/TranscoderDB.java | 2 ++ src/org/jcodings/transcode/TranscoderList.java | 4 ++-- test/org/jcodings/specific/TestEConv.java | 12 ++++++++++++ 6 files changed, 30 insertions(+), 9 deletions(-) diff --git a/scripts/generate.rb b/scripts/generate.rb index 84f0971f..230b71db 100644 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -107,6 +107,7 @@ def generate_transcoder_list src, dst, tree_start, table_info, iul, max_in, max_out, conv, state_size, state_init, state_fini, *funcs = body tree_start = trans_src[/#define\s+#{tree_start}\s+WORDINDEX2INFO\((\d+)\)/, 1].to_i << 2 state_size = "24" if state_size == "sizeof(struct from_utf8_mac_status)" + t_name = "universal_newline" if t_name == "Lf_newline" generic = funcs.all?{|f|f == "NULL" || f == "0"} if generic diff --git a/src/org/jcodings/transcode/EConv.java b/src/org/jcodings/transcode/EConv.java index 1197127c..269b4da0 100644 --- a/src/org/jcodings/transcode/EConv.java +++ b/src/org/jcodings/transcode/EConv.java @@ -732,6 +732,11 @@ public void binmode() { if (entry.getTranscoder() != null) transcoders[n++] = entry.getTranscoder(); } + if ((flags & LF_NEWLINE_DECORATOR) != 0) { + TranscoderDB.Entry entry = TranscoderDB.getEntry(NULL_STRING, "lf_newline".getBytes()); + if (entry.getTranscoder() != null) transcoders[n++] = entry.getTranscoder(); + } + int nTrans = numTranscoders; int j = 0; for (int i = 0; i < nTrans; i++) { diff --git a/src/org/jcodings/transcode/EConvFlags.java b/src/org/jcodings/transcode/EConvFlags.java index bbd6f7af..51743e22 100644 --- a/src/org/jcodings/transcode/EConvFlags.java +++ b/src/org/jcodings/transcode/EConvFlags.java @@ -29,23 +29,24 @@ public interface EConvFlags { final int UNDEF_REPLACE = 0x00000020; final int UNDEF_HEX_CHARREF = 0x00000030; - final int DECORATOR_MASK = 0x0000ff00; - final int NEWLINE_DECORATOR_MASK = 0x00003f00; + final int DECORATOR_MASK = 0x0001ff00; + final int NEWLINE_DECORATOR_MASK = 0x00007f00; final int NEWLINE_DECORATOR_READ_MASK = 0x00000f00; - final int NEWLINE_DECORATOR_WRITE_MASK = 0x00003000; + final int NEWLINE_DECORATOR_WRITE_MASK = 0x00007000; final int UNIVERSAL_NEWLINE_DECORATOR = 0x00000100; final int CRLF_NEWLINE_DECORATOR = 0x00001000; final int CR_NEWLINE_DECORATOR = 0x00002000; - final int XML_TEXT_DECORATOR = 0x00004000; - final int XML_ATTR_CONTENT_DECORATOR = 0x00008000; + final int LF_NEWLINE_DECORATOR = 0x00004000; + final int XML_TEXT_DECORATOR = 0x00008000; + final int XML_ATTR_CONTENT_DECORATOR = 0x00010000; final int STATEFUL_DECORATOR_MASK = 0x00f00000; final int XML_ATTR_QUOTE_DECORATOR = 0x00100000; - final int PARTIAL_INPUT = 0x00010000; - final int AFTER_OUTPUT = 0x00020000; + final int PARTIAL_INPUT = 0x00020000; + final int AFTER_OUTPUT = 0x00040000; final int MAX_ECFLAGS_DECORATORS = 32; } \ No newline at end of file diff --git a/src/org/jcodings/transcode/TranscoderDB.java b/src/org/jcodings/transcode/TranscoderDB.java index e944b69d..e9c72d57 100644 --- a/src/org/jcodings/transcode/TranscoderDB.java +++ b/src/org/jcodings/transcode/TranscoderDB.java @@ -247,6 +247,7 @@ public static int decoratorNames(int ecflags, byte[][] decorators) { case UNIVERSAL_NEWLINE_DECORATOR: case CRLF_NEWLINE_DECORATOR: case CR_NEWLINE_DECORATOR: + case LF_NEWLINE_DECORATOR: case 0: break; default: @@ -263,6 +264,7 @@ public static int decoratorNames(int ecflags, byte[][] decorators) { if ((ecflags & CRLF_NEWLINE_DECORATOR) != 0) decorators[numDecorators++] = "crlf_newline".getBytes(); if ((ecflags & CR_NEWLINE_DECORATOR) != 0) decorators[numDecorators++] = "cr_newline".getBytes(); + if ((ecflags & LF_NEWLINE_DECORATOR) != 0) decorators[numDecorators++] = "lf_newline".getBytes(); if ((ecflags & UNIVERSAL_NEWLINE_DECORATOR) != 0) decorators[numDecorators++] = "universal_newline".getBytes(); return numDecorators; diff --git a/src/org/jcodings/transcode/TranscoderList.java b/src/org/jcodings/transcode/TranscoderList.java index 235fa14d..8d0ed16e 100644 --- a/src/org/jcodings/transcode/TranscoderList.java +++ b/src/org/jcodings/transcode/TranscoderList.java @@ -101,7 +101,7 @@ static void load() { TranscoderDB.declare("", "universal_newline", "Universal_newline"); TranscoderDB.declare("", "crlf_newline", null /*Crlf_newline*/); TranscoderDB.declare("", "cr_newline", null /*Cr_newline*/); - TranscoderDB.declare("", "lf_newline", "Lf_newline"); + TranscoderDB.declare("", "lf_newline", "Universal_newline"); TranscoderDB.declare("US-ASCII", "UTF-8", null /*From_US_ASCII*/); TranscoderDB.declare("UTF-8", "US-ASCII", null /*To_US_ASCII*/); TranscoderDB.declare("ASCII-8BIT", "UTF-8", null /*From_ASCII_8BIT*/); @@ -421,7 +421,7 @@ public static Transcoder getInstance(String name) { case "Eucjp2sjis": return Eucjp2sjis_Transcoder.INSTANCE; case "Sjis2eucjp": return Sjis2eucjp_Transcoder.INSTANCE; case "Universal_newline": return Universal_newline_Transcoder.INSTANCE; - case "Lf_newline": return Lf_newline_Transcoder.INSTANCE; + case "Lf_newline": return Universal_newline_Transcoder.INSTANCE; case "From_UTF8_MAC": return From_UTF8_MAC_Transcoder.INSTANCE; case "From_UTF_16BE": return From_UTF_16BE_Transcoder.INSTANCE; case "To_UTF_16BE": return To_UTF_16BE_Transcoder.INSTANCE; diff --git a/test/org/jcodings/specific/TestEConv.java b/test/org/jcodings/specific/TestEConv.java index 326c73f3..69f3bfe7 100644 --- a/test/org/jcodings/specific/TestEConv.java +++ b/test/org/jcodings/specific/TestEConv.java @@ -63,6 +63,18 @@ public void testCrNewline() throws Exception { Assert.assertArrayEquals("foo\rbar".getBytes(), dest); } + @Test + public void testLfNewline() throws Exception { + EConv econv = TranscoderDB.open("".getBytes(), "".getBytes(), EConvFlags.LF_NEWLINE_DECORATOR); + + byte[] src = "foo\nbar\r\nbaz".getBytes(); + byte[] dest = new byte[11]; + + econv.convert(src, new Ptr(0), 12, dest, new Ptr(0), dest.length, 0); + + Assert.assertArrayEquals("foo\nbar\nbaz".getBytes(), dest); + } + @Test public void testXMLWithCharref() throws Exception { EConv econv = TranscoderDB.open("utf-8".getBytes(), "euc-jp".getBytes(), EConvFlags.XML_ATTR_CONTENT_DECORATOR | EConvFlags.XML_ATTR_QUOTE_DECORATOR | EConvFlags.UNDEF_HEX_CHARREF); From a4358db3392db83c71620b4856ab7ddd016be194 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 27 Feb 2025 13:22:49 -0600 Subject: [PATCH 144/158] [maven-release-plugin] prepare release jcodings-1.0.62 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a5c947ae..37430b1c 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.62-SNAPSHOT + 1.0.62 JCodings Byte based encoding support library for java From 464eadb2ce87e858291608c2cd19fba3a1f1bc3e Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 27 Feb 2025 13:22:52 -0600 Subject: [PATCH 145/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 37430b1c..3a3d3bff 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.62 + 1.0.63-SNAPSHOT JCodings Byte based encoding support library for java From 1f0ff9664d77d52d23e2b5ac96531007bbc40306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Wed, 5 Mar 2025 23:56:42 +0100 Subject: [PATCH 146/158] fix kddi --- src/org/jcodings/transcode/TranscodeFunctions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/jcodings/transcode/TranscodeFunctions.java b/src/org/jcodings/transcode/TranscodeFunctions.java index fe13390f..c892d698 100644 --- a/src/org/jcodings/transcode/TranscodeFunctions.java +++ b/src/org/jcodings/transcode/TranscodeFunctions.java @@ -945,7 +945,7 @@ else if (s0 == EMACS_MULE_LEADING_CODE_JISX0208_1978) else newstate = G0_JISX0208_1983; - oStart = iso2022jp_put_state(sp, o, (int)sp[0], G0_ASCII, oStart); + oStart = iso2022jp_put_state(sp, o, (int)sp[0], newstate, oStart); if (l == 1) { o[oStart++] = (byte)(s0 & 0x7f); From 536fd52a82c98e83973900d0d7d5d30c31880323 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 6 Mar 2025 21:48:14 -0600 Subject: [PATCH 147/158] [maven-release-plugin] prepare release jcodings-1.0.63 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3a3d3bff..d151c2af 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.63-SNAPSHOT + 1.0.63 JCodings Byte based encoding support library for java From b557648ca3b85b09108c8d3abf94d6ad922608da Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 6 Mar 2025 21:48:16 -0600 Subject: [PATCH 148/158] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d151c2af..5646fe4d 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.63 + 1.0.64-SNAPSHOT JCodings Byte based encoding support library for java From 7a8e1aecfe67963091e7cba78ebb5b590c080e45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Rosick=C3=BD?= Date: Thu, 19 Feb 2026 15:45:22 +0100 Subject: [PATCH 149/158] unicode 17.0.0 --- resources/tables/CR_Age_15_1.bin | Bin 0 -> 5728 bytes resources/tables/CR_Age_16_0.bin | Bin 0 -> 5920 bytes resources/tables/CR_Age_17_0.bin | Bin 0 -> 5952 bytes resources/tables/CR_Alnum.bin | Bin 6184 -> 6464 bytes resources/tables/CR_Alpha.bin | Bin 5864 -> 6096 bytes resources/tables/CR_Arabic.bin | Bin 472 -> 456 bytes resources/tables/CR_Assigned.bin | Bin 5664 -> 5888 bytes resources/tables/CR_Balinese.bin | Bin 24 -> 24 bytes resources/tables/CR_Beria_Erfe.bin | Bin 0 -> 24 bytes resources/tables/CR_C.bin | Bin 5704 -> 5936 bytes resources/tables/CR_Case_Ignorable.bin | Bin 3504 -> 3720 bytes resources/tables/CR_Cased.bin | Bin 1264 -> 1272 bytes .../tables/CR_Changes_When_Casefolded.bin | Bin 4984 -> 5048 bytes .../tables/CR_Changes_When_Casemapped.bin | Bin 1056 -> 1056 bytes .../tables/CR_Changes_When_Lowercased.bin | Bin 4880 -> 4952 bytes .../tables/CR_Changes_When_Titlecased.bin | Bin 5016 -> 5072 bytes .../tables/CR_Changes_When_Uppercased.bin | Bin 5024 -> 5080 bytes resources/tables/CR_Cn.bin | Bin 5664 -> 5888 bytes resources/tables/CR_Common.bin | Bin 1392 -> 1416 bytes resources/tables/CR_Cyrillic.bin | Bin 88 -> 88 bytes resources/tables/CR_Dash.bin | Bin 192 -> 200 bytes resources/tables/CR_Diacritic.bin | Bin 1568 -> 1768 bytes resources/tables/CR_Digit.bin | Bin 520 -> 584 bytes resources/tables/CR_Egyptian_Hieroglyphs.bin | Bin 16 -> 24 bytes resources/tables/CR_Emoji.bin | Bin 1216 -> 1216 bytes resources/tables/CR_Emoji_Presentation.bin | Bin 656 -> 656 bytes resources/tables/CR_Extended_Pictographic.bin | Bin 632 -> 1256 bytes resources/tables/CR_Extender.bin | Bin 272 -> 352 bytes resources/tables/CR_Garay.bin | Bin 0 -> 32 bytes resources/tables/CR_Graph.bin | Bin 5704 -> 5936 bytes resources/tables/CR_Grapheme_Base.bin | Bin 7008 -> 7240 bytes .../CR_Grapheme_Cluster_Break_Extend.bin | Bin 2920 -> 3080 bytes .../CR_Grapheme_Cluster_Break_Prepend.bin | Bin 128 -> 128 bytes .../CR_Grapheme_Cluster_Break_SpacingMark.bin | Bin 1328 -> 1272 bytes .../tables/CR_Grapheme_Cluster_Break_V.bin | Bin 24 -> 40 bytes resources/tables/CR_Grapheme_Extend.bin | Bin 2912 -> 3072 bytes resources/tables/CR_Grapheme_Link.bin | Bin 456 -> 472 bytes resources/tables/CR_Gurung_Khema.bin | Bin 0 -> 16 bytes resources/tables/CR_Han.bin | Bin 176 -> 176 bytes resources/tables/CR_IDS_Binary_Operator.bin | Bin 24 -> 32 bytes resources/tables/CR_IDS_Unary_Operator.bin | Bin 0 -> 16 bytes .../tables/CR_ID_Compat_Math_Continue.bin | Bin 0 -> 152 bytes resources/tables/CR_ID_Compat_Math_Start.bin | Bin 0 -> 112 bytes resources/tables/CR_ID_Continue.bin | Bin 6152 -> 6400 bytes resources/tables/CR_ID_Start.bin | Bin 5280 -> 5480 bytes resources/tables/CR_Ideographic.bin | Bin 168 -> 176 bytes resources/tables/CR_InCB_Consonant.bin | Bin 0 -> 616 bytes resources/tables/CR_InCB_Extend.bin | Bin 0 -> 3024 bytes resources/tables/CR_InCB_Linker.bin | Bin 0 -> 168 bytes resources/tables/CR_In_Beria_Erfe.bin | Bin 0 -> 16 bytes ..._In_CJK_Unified_Ideographs_Extension_I.bin | Bin 0 -> 16 bytes ..._In_CJK_Unified_Ideographs_Extension_J.bin | Bin 0 -> 16 bytes .../CR_In_Egyptian_Hieroglyphs_Extended_A.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Garay.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Gurung_Khema.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Kirat_Rai.bin | Bin 0 -> 16 bytes ...CR_In_Miscellaneous_Symbols_Supplement.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Myanmar_Extended_C.bin | Bin 0 -> 16 bytes resources/tables/CR_In_No_Block.bin | Bin 416 -> 416 bytes resources/tables/CR_In_Ol_Onal.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Sharada_Supplement.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Sidetic.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Sunuwar.bin | Bin 0 -> 16 bytes ...ymbols_for_Legacy_Computing_Supplement.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Tai_Yo.bin | Bin 0 -> 16 bytes .../CR_In_Tangut_Components_Supplement.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Todhri.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Tolong_Siki.bin | Bin 0 -> 16 bytes resources/tables/CR_In_Tulu_Tigalari.bin | Bin 0 -> 16 bytes resources/tables/CR_Inherited.bin | Bin 240 -> 248 bytes resources/tables/CR_Kannada.bin | Bin 112 -> 112 bytes resources/tables/CR_Kawi.bin | Bin 32 -> 32 bytes resources/tables/CR_Khitan_Small_Script.bin | Bin 24 -> 32 bytes resources/tables/CR_Kirat_Rai.bin | Bin 0 -> 16 bytes resources/tables/CR_L.bin | Bin 5280 -> 5480 bytes resources/tables/CR_LC.bin | Bin 1152 -> 1160 bytes resources/tables/CR_Latin.bin | Bin 320 -> 296 bytes resources/tables/CR_Ll.bin | Bin 5272 -> 5320 bytes resources/tables/CR_Lm.bin | Bin 576 -> 640 bytes resources/tables/CR_Lo.bin | Bin 4088 -> 4304 bytes resources/tables/CR_Lower.bin | Bin 5376 -> 5424 bytes resources/tables/CR_Lu.bin | Bin 5176 -> 5248 bytes resources/tables/CR_M.bin | Bin 2488 -> 2624 bytes resources/tables/CR_Math.bin | Bin 1112 -> 1136 bytes resources/tables/CR_Mc.bin | Bin 1464 -> 1552 bytes resources/tables/CR_Mn.bin | Bin 2776 -> 2928 bytes .../tables/CR_Modifier_Combining_Mark.bin | Bin 0 -> 80 bytes resources/tables/CR_Myanmar.bin | Bin 32 -> 40 bytes resources/tables/CR_N.bin | Bin 1104 -> 1176 bytes resources/tables/CR_Nl.bin | Bin 104 -> 112 bytes resources/tables/CR_Ol_Onal.bin | Bin 0 -> 24 bytes resources/tables/CR_Other_Alphabetic.bin | Bin 1928 -> 2048 bytes resources/tables/CR_Other_Grapheme_Extend.bin | Bin 208 -> 400 bytes resources/tables/CR_Other_ID_Continue.bin | Bin 40 -> 64 bytes resources/tables/CR_Other_Lowercase.bin | Bin 232 -> 232 bytes resources/tables/CR_Pd.bin | Bin 160 -> 168 bytes resources/tables/CR_Po.bin | Bin 1504 -> 1560 bytes resources/tables/CR_Print.bin | Bin 5680 -> 5904 bytes resources/tables/CR_Punct.bin | Bin 1536 -> 1600 bytes resources/tables/CR_S.bin | Bin 1864 -> 1944 bytes resources/tables/CR_Sc.bin | Bin 176 -> 176 bytes resources/tables/CR_Sentence_Terminal.bin | Bin 648 -> 712 bytes resources/tables/CR_Sharada.bin | Bin 16 -> 24 bytes resources/tables/CR_Sidetic.bin | Bin 0 -> 16 bytes resources/tables/CR_Sm.bin | Bin 520 -> 544 bytes resources/tables/CR_So.bin | Bin 1480 -> 1552 bytes resources/tables/CR_Sunuwar.bin | Bin 0 -> 24 bytes resources/tables/CR_Tai_Yo.bin | Bin 0 -> 32 bytes resources/tables/CR_Tangut.bin | Bin 40 -> 40 bytes resources/tables/CR_Telugu.bin | Bin 112 -> 112 bytes resources/tables/CR_Terminal_Punctuation.bin | Bin 872 -> 936 bytes resources/tables/CR_Todhri.bin | Bin 0 -> 16 bytes resources/tables/CR_Tolong_Siki.bin | Bin 0 -> 24 bytes resources/tables/CR_Tulu_Tigalari.bin | Bin 0 -> 96 bytes resources/tables/CR_Unified_Ideograph.bin | Bin 136 -> 136 bytes resources/tables/CR_Unknown.bin | Bin 5648 -> 5872 bytes resources/tables/CR_Upper.bin | Bin 5216 -> 5288 bytes resources/tables/CR_Word.bin | Bin 6168 -> 6424 bytes resources/tables/CR_XID_Continue.bin | Bin 6208 -> 6456 bytes resources/tables/CR_XID_Start.bin | Bin 5336 -> 5536 bytes resources/tables/CR_XPosixPunct.bin | Bin 1496 -> 1560 bytes resources/tables/CaseFold.bin | Bin 18844 -> 19504 bytes resources/tables/CaseUnfold_11.bin | Bin 16864 -> 17524 bytes scripts/generate.rb | 3 +- src/org/jcodings/Config.java | 8 +-- .../jcodings/transcode/TranscoderList.java | 4 +- .../specific/Lf_newline_Transcoder.java | 34 ++++++++++ .../jcodings/unicode/UnicodeCodeRange.java | 59 +++++++++++++++++- 128 files changed, 97 insertions(+), 11 deletions(-) create mode 100644 resources/tables/CR_Age_15_1.bin create mode 100644 resources/tables/CR_Age_16_0.bin create mode 100644 resources/tables/CR_Age_17_0.bin create mode 100644 resources/tables/CR_Beria_Erfe.bin create mode 100644 resources/tables/CR_Garay.bin create mode 100644 resources/tables/CR_Gurung_Khema.bin create mode 100644 resources/tables/CR_IDS_Unary_Operator.bin create mode 100644 resources/tables/CR_ID_Compat_Math_Continue.bin create mode 100644 resources/tables/CR_ID_Compat_Math_Start.bin create mode 100644 resources/tables/CR_InCB_Consonant.bin create mode 100644 resources/tables/CR_InCB_Extend.bin create mode 100644 resources/tables/CR_InCB_Linker.bin create mode 100644 resources/tables/CR_In_Beria_Erfe.bin create mode 100644 resources/tables/CR_In_CJK_Unified_Ideographs_Extension_I.bin create mode 100644 resources/tables/CR_In_CJK_Unified_Ideographs_Extension_J.bin create mode 100644 resources/tables/CR_In_Egyptian_Hieroglyphs_Extended_A.bin create mode 100644 resources/tables/CR_In_Garay.bin create mode 100644 resources/tables/CR_In_Gurung_Khema.bin create mode 100644 resources/tables/CR_In_Kirat_Rai.bin create mode 100644 resources/tables/CR_In_Miscellaneous_Symbols_Supplement.bin create mode 100644 resources/tables/CR_In_Myanmar_Extended_C.bin create mode 100644 resources/tables/CR_In_Ol_Onal.bin create mode 100644 resources/tables/CR_In_Sharada_Supplement.bin create mode 100644 resources/tables/CR_In_Sidetic.bin create mode 100644 resources/tables/CR_In_Sunuwar.bin create mode 100644 resources/tables/CR_In_Symbols_for_Legacy_Computing_Supplement.bin create mode 100644 resources/tables/CR_In_Tai_Yo.bin create mode 100644 resources/tables/CR_In_Tangut_Components_Supplement.bin create mode 100644 resources/tables/CR_In_Todhri.bin create mode 100644 resources/tables/CR_In_Tolong_Siki.bin create mode 100644 resources/tables/CR_In_Tulu_Tigalari.bin create mode 100644 resources/tables/CR_Kirat_Rai.bin create mode 100644 resources/tables/CR_Modifier_Combining_Mark.bin create mode 100644 resources/tables/CR_Ol_Onal.bin create mode 100644 resources/tables/CR_Sidetic.bin create mode 100644 resources/tables/CR_Sunuwar.bin create mode 100644 resources/tables/CR_Tai_Yo.bin create mode 100644 resources/tables/CR_Todhri.bin create mode 100644 resources/tables/CR_Tolong_Siki.bin create mode 100644 resources/tables/CR_Tulu_Tigalari.bin create mode 100644 src/org/jcodings/transcode/specific/Lf_newline_Transcoder.java diff --git a/resources/tables/CR_Age_15_1.bin b/resources/tables/CR_Age_15_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..493f1ed7324c40ca23c157f07a8ee6d69b086619 GIT binary patch literal 5728 zcmXZg3v^Z0nE>Fu69UOS=iY>SArMGR9Pu$C8q}(&)wH$R;xMK@Y8i{BQ>zYCNgW5B z87rCTLwukqt+iA~VX!=_1Y50EbTVzJuMwiW)M^QBmqo2Hq9P=c%$M8iTA%;A=dt(y z|9hX4vk0N$?hwkJ55@n=uMeU8-&n}Exs}^X?hu!=B7}9X?l2z zcljWM(PkKvrJ9+{Vgua_a4>|*X*6>NEnLE-C2itd+L23TC+4dBQ3zGv;ycK-N)A=d zRehh;tfh;GOCA*;XCuEsu2s*V2UVNdS@N3rI=lEIZ!i=>CQ?oX8Pt=hp}2Ln&v*p&X4IS6gnBd2qTb94^py09>ddG!^BxBn4k1x*qTWQkNs4+C^(N{~)SIX` zQE#H&M7@c66Llu)OwK}miTV=tCF)Bq;$qa6%;7S=iuw}!FZoZ@m#8nf6>FVzvV^-> z%8$9X9weo`>{H`~zw$vTsxMrRq!PqsG)eP1TjED^*u2=Ty$A^-3Q> z-swi{&s5&2yi<9n@=mw21A8<5J=QJ#Bl1t*#oDFshmciARvlS&WYv*XM^@fhd1vLF zm3Q_$E<}D=`DGVke`UXg{%3!PUS~HTx9k%-1Cd+q>G2KruoM(XI}nA_GI3CdHLt{EU#aM8mv=cJQFc?!Ptcx=|JvKnSJ}6YFT=23$9B zEnS%3sZe(a&eu()nbT+~vDfOZrk(3>f89FVU+4W(*Mq*-*~612W2{M+(uR5`E#wwD zS;{gV#Ql@3nOnl-zoV6#F#hEC`8b67laWikwXe5k_12}{IQ75eNvv^w4+9}I7^hLc z8Wr5=M`IJ8#hN#|x6$~G7c;x$5^=q6>Ho0J6^|g(C9g6 z{D6H7gkqvR=cgP&3-;!ewh*RTQz zi@QTOMn8@@5W=*>IkIG$IHH*=nNK_VJ?)1qV$I#3S+_(CAI@p9-R=aL>ZwPBH zz`Cxn57#)q<^{Ik{2Dc`846)-;3Qg@MJu!UGM??V)_m>05Y|OTQ$>!k)Y8Ne9L2H7 zYu!BBd53-ugz!`I?DQVo*@e1yKF?qX+8qY2#`Od8awrU%XRyEo8j#=MDV)w3B`u=f z4}J#E=-}DNcTm3$-pLZ4M!iFIG;ux`as^i*&mr>;*{eef_!w(AVpzSyPhreq;|yDq zVPg%y#7;c(!>`fH8|MH)ixZ^CjB2pKjjZZT5wj1l;G_GWv#$ ziEEQKL5f(e#HwVJ>nkvIS``PKpcA_)^zMSw6Xws zjNQd<^gi#p{8;ob|0$f$f0soi_LA?7n7%g z3f0tL+`>^DO*6-H0(xE0pTcRJg&Yg|SvVJU7FtW}o5F}W*yn{S_&V)e7vebcj=Kcs z$9)C)k9(RPUI}r$-{T+QFV+0e$a=EUSn5DxA-3Vc-Ybqr?`H~HMC=Wr*wpP_-8^q&OFEIceC>+UKHY4;@SFm zl{i=Jb6dESHvS1?%zcV(o~4I(=;y-_{fUY5^lM%#@|kB3&9i^z*< z$05#l{rs7n$IUo5-?K2k7wa|OxbxM~?z)>l3UQHm`}PnQi;MMoz4Pne$K2}&Iml3m zUCwX#8;&oL&xZ3+W6|ZJo^NOm@nQFEbp1xX-{|+o8|h#Xo#@|2@2HI{Li8swZka|i z`n08$Ux(P^c#j->!o(Mk;BR>=M1MZxOZxFrH(TjNzW!{-tzV>#8$#UX_qGdhY@4~Z z-G@GGvqy`5BCf<9*!EK%;&GlRc~X?ewoM^!uV4%rvW%madJbU*r*Q@?cy70=rN~-r zSJQUA+F{Net3&kd5_fJ6@zvY72YJ1^ob@5@lJ_oS?mC>KL-ctNdq-n!dM7fOLph8o z=uPj)b^6zPHP(B?Zujjz2FG`MPIk*{_viV0&I|Dmov8T_-5kKa9`UCh{Qh$z7b#HAGy5bN^vgUS$)@X9oO@(*x!9Om2`-=a2xlqoE2F6zBR1l3G}hgbJ(vR z{ZnbiyQzN})}?;~|HJ>Xg%|NWyyyD&9>m)0Eu)6hXyJ3{|6VokZR2YpzVG^dJ9&-2 zVBUQnhxn1>A1&bDd4*oy#`zKZo!_5OgZ}PsMbGxPaWkFBV}BQN^@$z_F2H%;p$q69UP-=O*D^2m}%nM|@O7gKyMoTCKJ?)YL~UwP>9BDilc_2kne4 znd!r~rdaDxtwOOtpi0ncwW5=0#kUaUr4E*$)uPrIK@k!q^WW?3_x)YpJ&(QDT6>?v zi6N9d9YV>Qq42-bt3oLKcjoa^Zs4Y(Tf{{y4x#KYCi6|E1NTHroH8~FAV466bBRGnq zIhHA$P^8AxmpP5EayojF`bLqyroMyv3oa4o@}HP@RRt=_ac)9Os0g8I_xORF!fzVtbqi`vpNxPb4XzO?<9{x8&*R$uxCtaZAB`P|L| ze$8D)cZ>J1n0wKKv>v4IN8RZs_%l!O49}tNw7LtdcREkqY5P!#A@P4nCF)GFs54P# zqOL?;iMo=Qux}IfCF)D&pvJ^LP1KdBD^XV>=S0ql^-3N> z-pOk0&qUsdyc2mR@=i9g341g7E7mP}6Zt0}VC|BfA!O8%QAb7{8FggTk&$;s-Whpk zowxzH6}%#DMP3~_ zP-#C^9>+;|zAMdFY0WEtTJ&@A2K15Osa%WotbCO%n72y( zRrX%h*Z4j^;0_j`w^jB<)eE?{>a`HGC{(Y(^HHGJ)p^Fv>Q`33veRh6I%lnOfwj(B z>uf96A@}UfbkM~ESkvqym@_N?0(&xRzO4MSdY09%Ts77yH=3~+J7?_NHMAr5+(JHP zH=l(tDuhsT7mn9BHpcHU?jO^@(KK@wt?0v;%W2~Z{*`uKrFc$56;(4q>1BcF0$8ZXVb=&xW9G9=*32zo{6F(`cJgTmb;lrwI%{5Mt?H~ro%`$l#N$}oI`h^Igi!DP27PK! zXoDXOjeG@b-QeDa7S3gQ(RpItjG_y~AJNVqco_S#!MfojXD} zL_ZGM6T+nZIk0GwnAgOm%%Kf^p7bjgvV>*aPZtmK2v5+>Q`oPQ^nX$hn|Ou4(i_5| zdUI$y*6Ywak;h?yjr51mbP`{}d`+%t8VX@@87`VU8TC)@;4Sp*@O@|u;oh5Y{9g0l zYu+XH+mdEJ31O-6m%fPOOJ8DrkvW%cLEo1hLK9PP-?FP{XANpu_A0$0be@HE?X>?o zo$oYm=Q^D4RAcAf5S9myrkQE9FrDw$#^yg zPes0i`t{kZ%;#y;ySJ7`&g5(^;WFg8*Sve})xC516l<6_q~4(?Fy@ePhMvP%Loc%# z&-&07dU>1e^sy(zkS4;)z!y1*X|yndb_PN;U5q7+;0TW47CN|#g+)E$XCaoj zuf*{Z$4eY5>18m)(!hR9Vk+kG4IE2dU-}#F;V(SH#t?_OewgFK7Sc%<>v;v^+0L=- zK$`e2b1+`nHQc~W%;%Tf&K)dbF{^lxM|q6Zbh9(W;l>?tG|iktE0@yF&$t%3jCg=Q zg;?(T@-oVcQsPnQQ~9x+P^7=*#w$OUyIIOgdfCB8e2m&E#?!zQ+*e@!ia#RPigmmk zqVMDA`#7eClaOOHW2i+QzK3J#IE>@_H>UJG^(|Vthi=~HJ$8kd4!F;^W%Lah)2>Zl z!PWeN1>A)-Ny|TRz3;P_w4*19@e=hU10iOtPsaLWjFoBTV!nqyX6&KNtsz#n@?+dz zY0SzM+=m`lTBpiC^CX{!SY^B_<5f+kjq7n;)${Zs|LTB!Tzw}0#ypJS8{>05;&%Gk z6Qb8e9C;+xeB^1gFc^Et)_h(cF=yR!)-7kva#d7g+}uGNOcRH51lA&_f4Sp11v%#QJ9j$j%(WERSGl|y zcph?>@O|3268YxzD|cg&{^#;KcnEtd*Nt8ktP%5`<~d$qBb#{zeaXEM;wbfuIuG-X zx)Ae>a?hw9UJY@y-=mE``Vn3a(W^PusG~;SHPdNDo;9wkd6aIR#r-vJhUirr$Bd(% zi8OI)h+`cet0!X@V!w?Y3bA%L6-9bmtEaW2sbMTfaSX@e-df|-%A-~uwZ^Gk%5v1` zn<>`*EyQu=8K>vtTsQ8wbg?_c@s5u-*Z6MqVthY)LacMVuACJ1RGqo%zJmMf)LGYt zJyJIx^VN0oaESgniS_cYcW=FM>(jWu-m_caJyQQgPC`EQ#;ccieJdApDVH%5>ssG| z=e7Pe{+orEYoA`^-(bFmYOC&U-UwGW24PFy#MCiHP#3x5f*$MGIH z`2>qE9l#fOH$?yZ$Cvf#` z?G-n#4e>SasMqd9Uau`;Wr$nlz15go_vhdcecr_0;aIEQv5aS5_G1Ei)0@9e|9WR* z{qwfDZ`&a_zRmNrOvx7p5n z*t>u4qo2JYZa3fdCwZDpA-?1HJEzmabk6635dZN5{t)8(5qbG!i+!c&abE*!>$C6r z)K+kym}mX_?8Uw#@owwW^8$VE%lmTCX=0vQ3*^w3Hw|_7eFJOJXKxgoE9S|u;5;#J zMvPv zJ`M2`$3L0NfAA{3yod97yPe;irW*a--GZL&Zsl4!kjL&W)U&%Ax%$&14xEMS{GAc~ zoe>B0XP_N@8L(Feo?8raG^^yB^Q?~yn-pI@>k#G$>RWXaZ0vebWO{^JyyL&+oc zG=`G3i|7g^@Ac9jN~~dtyh{e0cVB64DlMUOzm=gh|9faC3=@ZmWn!5)TpTWr5J!mR rV!2o$R){GvC8ou+n23p(5i???za~D{D9-!*KTpLELZ$Q7Lqq=$%Lv9c literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Age_17_0.bin b/resources/tables/CR_Age_17_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..d2299a72e04aad583a108f85b2225097566be8b3 GIT binary patch literal 5952 zcmXZg3wV^(nE>E(5(3H0Ka(&6fj~myikFIL@QzwdtJM~lnp&-;7L8kPg(9izdfCU8 z?DnGKrKz@csjlK;KW`dQ<96sWP@RRt=_bH z)9OsCGkrShORF!fzO?$%=W#x2OHbz_zK8nK&RzOHQD0hp>A5&>>2~hm*UaO$+*5R~ zcpnRR06j?SLHc3ToqmQt@mHSX1=O8Z_aOV7E>L&c`BP#@{42?#&LoFA6Llu)O4OC8 zD>(yoB~wsWqOQbqkbIl(puR+XiSwGMFHv7I8#N}*X`-$~U5UC9IVW;X>{s#_@=jLb zd?xZv|62{@=rd*-X*(3$fzTuj*L1o>d2@gBkzp7GxE;JJ99SY zBEO9MGIMagGCx88GrvKvGs}@%<|&>o>J;Uck=LL#;(FvZXtTH#d1d64*@fpn>pW#o zhEd(tJRjcrP4ASeW0`undE2m$%sWfAsbM|?Vz0TR^TnjfL z_uOr?)4?Oy)7%QInUnt@XEJBKocwcomea3%74|7VlF^tuZ|?jJv?2HWd_HC`pM@|Y zgiw7Cu2;J@%I8t;A63tBH1SPZ(1%f1(#lo*D{Z_^H}BEQz7Q-QM%U25br?5#2_0D9 zSD|JczOR`;BPY>R)l)5%=t_!xIIu($Pp<8?d-^`3+JkJv+h z2$l;Cmv9-*XoFrg+>U%3>}$h({)l`VdP6wC_ycai_v61n6VB%NmJlY`&k5IraJW7k zzAuD{2XRQzM6sZe%b86p`aJPBSZCscEaG80c$^hHLnmsQ=)6u`O&1&4%o}uvaD<*5 z(T4px;%?+|WMBimAvB)Km#|)=F^vNuOe({mNt00bq;}p$uZ|i=LkJJtit7(p{{ibh zIDsZU31Ol67j9u^2#XGwU1Cp{>8Djf&q06JcC*Xp5+DfXkaay@azt3p_}czOAq@(3~4eP%%Pmf$$XJh znMyO$X`?Sh%f(p2FplPUZl|4lm|xT-eimYh`$}9dalOQ~l5X~gSQ%z=pW_+J4xy3nF&p!h-N0OKtpFE69KC?y_?K9!%q$wm5GZocyK zxtE13qnllP#K)+uVl4Gc#(fpjuztn=BG-yFtPRooZuGtzQ$tC}Gm=r%AP?`iF?Ay5 z@je?<`kwkWE!;;Z+u6aM5Yqwoc~^|y31iyW^i^EPFPXQIs6-QFqe0S&zZ04U3%FUqMwI2{21*0@H1)V8ss&6E8DO~ zIpcD}(d*oo@O|#*+*IW3dC!PBwdI`OoF3=Y<((tu-p6`5>-o8edHa{Qe|dYCucQj| z<`3mC8aaxiu_t+b%%8;R$T6?)`Lj@GzPZTx$`?$>bCJJ{AJEFx$TzQF`CE$YL%yJ$ z$8g5-o#@q|RbqiX$iKi#Y+w`iBd;&{H$xnuo)H&d-4PdKoe}OC(Z#DFj`Vq?`A4qc z^$`6O$7*#{%e#6SEy%Olxaue9iZ&Ioa|>!bB#^n9GV(E}mY z45gw-Z)^0lW+c^&=2(vB1l(I=o*H@7$fL$QH49mS8odj}n!krQ#yVs4e2j5p{)Z0s zhB(&svDO;f!sT?LCu4ir7h#EUw2}W-<7&Aaw_twGhdzj>*P^)DRQa1f*IJ~x^_Ijb$9Y#%*R@F9sG@M z-V1S@I8I&lfhuxXv;GvmgYknp#hvK)f%8HfZ~XWxX~j7k-xlIQr-gWAJNBi~_s5(^ zONgiSg?PHpXXyLI;>D9gyh5CzH#3^JkQTm=IcGdWC(qNx2lVoBi2hRUdxZr-&y9Jb$y6eidX)Y`K;h6)`d9RJhP{8HaFs)*`D3m-Pr%x)|8}o z?b%A7SKfg6SKdTB`n=L_@5%)szGU1>pN9CdxcX6^q>FBPLtNwfnu#=`&ug0bbBJB8 zcggV;@s)%50`G_D^&zg+$F-g4$J%bxv(EK(-=c-wmVc)q$vGnNB5kn!kEcVV3V zbfB44k9 zv8NQh@2N-4JS3{ z^*A$w&KC>hIOqbgV0w|9dkQY*U$~^`a&ZQJGkdP$YCPXP*K-3uE@~5R<`(Yeeiq=2 z^ekp6Poa-Je!qJ4qjv(0+{t|GU+;4Mk3X`8SFk@jjoq7vNuG3*TnsI@GG3xf&NhP z;MP#$@4Au|bu@&M)eq4TN_KS98%pe9iTq3Yd~bYdehST@^qA{IY2ow0Ko}wp5zE9f zai};{93~DE%f)iBLaY!|VoFSlX)zHKF(YQgtiMt|*C5XM{C{J`4@1`XRRaV64~II^ AHvj+t literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Alnum.bin b/resources/tables/CR_Alnum.bin index 83f5220e70cfa9170cef7eb6ea2a643c7086952b..a378a6d413a92b19642b03596c2e642d7f47bd2a 100644 GIT binary patch delta 509 zcmXZWO(;ZB6bJBg-gwhY7$0wXVT`P>Lb9MKP0?&wDWZHNDIXIXB4%S@e0LXQB`Jg& zJu+o8DJcz&UP_T(X+)wy6bb*)EPnm(J)L{*SuYKhS%}QFM5e-d%K*3UjJVi3OJrGy z(}Mgcag$h0>f~!JMb=I17ly^fx|VAlmgH-qwHIwS`A#y+A!7MWEZT(ZCbl++qO_H& zR2)+~pevydIZkZz!3J!?76f1i4&fNS;9E1&`ng^~uQCCX2{XvJIoN}J2m#*yJ3_`` zj&cHFIEC{B9jS}Dj3u)gAy#k2ea4CEXd!lV0wy^Oh{2}_WFFd_Sk8F`C_5j7S82;D zM|U-LtRZ5Lhqx8lS`4L7DK3@9f*v<@??P|`2E4-${Az>hDCY#7Bn9(HI@^W- SNsk7^NP2D-=~=2&KJ*8>?UoEo+Z`B~cE|#;0t3^zg+RQ4f$8-F2Bsej W3{1ad8JHP>z7qBV;s6F_<@EqqB}g{_ diff --git a/resources/tables/CR_Alpha.bin b/resources/tables/CR_Alpha.bin index 117fdc9cfe8352ab5b3962dab42a59d8e52595b4..2fd5a36d9737984285010e484070f4a8a4fe65c3 100644 GIT binary patch delta 456 zcmXZWPbfrD6vy#%E^m60hk2P|n#oEwD9ui3GLo#U6cLkzFlJ$6WeN-b=`NI&h4R1X zB~vz1QvOV%mlBiSf=P+|i6R-lVHTghi+j(#=e{IbrV=S{MB;N!?cw(A0Uu|~5UKM? zMwm|oH_MUqR*o6B>BDI}F1yqUHjO29SST@~l_D4cLNhIDjMgf^VZfyNMfg+||cmB4rv)nuQ(M1$?e!_Rk@j zgm?5~IE6DfPcc!`Sjj18&Dlom>;%j^EqR%{W^-W`*R>4Un;agT`mjkg5!ciZ`%!xLHDK~`R)d=cWTyz&DzI%k{fAM|d n_zhU_4nL4EYV!hI5O$FW7m|oEZcpz delta 229 zcmcbh|3a68fq``=0|V2Yi5%IC1shA885#RFA7DJq#27odhb5lz?&dcv&CHA)lM6Vk z8J}-n!_mwndy0W!`2`@p2*j76_$rXT3B;c^n{c0Fn#{#Faq?om>63%_B{o;_M=);I z5;S0(oF%kkvXpQHn+pR2qnq304q+#@JO>8Gy!y#6g!LsqGB6eZCEC9;Fm?dxo~sOu zy+FE`W3z$CEym48VmXXP+btQGwmUE|?T`gx1qP;b3xRk81JmmV3`{?O-uNZUz|6qF Oz%1+q!~qP<%Ig837DU_t diff --git a/resources/tables/CR_Arabic.bin b/resources/tables/CR_Arabic.bin index b7a3b8482dbda641617a20c484f02a20f015099d..7430735222e19b7b89e259e7bd6a7eaf4569cbe8 100644 GIT binary patch delta 71 zcmcb?e1e&Sfq|hAh%F{^gv(B3VBnYz#1Db^F%bV}VE7%t!0^`=h#e-*Q5QVKz{qzT Qh%W%~4Iuut@rVc`0AZpMhyVZp delta 87 zcmX@Xe1n;Tfq|hEh^;1agxmHpFmOx&;)y^!1Bf32@nazV&%p3I0EiC(@nr^vzqUZ^ Z0L1-3JPC-81M&HZHR_CiH*OJO1OUOU8fgFk diff --git a/resources/tables/CR_Assigned.bin b/resources/tables/CR_Assigned.bin index 3eeb82e7479387d150372845c7402ff775989287..bb6f787012ccee088a630414381fedd0b348043e 100644 GIT binary patch delta 693 zcmXZaT}V@57zgnGbL7lJwY72DsX4YLg(*c8coRfOhF8&LA7Z3|L>G#5r8lvgE>f%6 z8!V&?@gi@Ej6)<9IHfOQu0cdW%bkizW#sx=^DMIe!iyizIlS-xdEWPM#&*Pa8h}0x zX!#N2mOcU)$=eT;nslg+niG<1p+z7JI!K39+7p&R_0cmOngL>2DgyOf zuOFfWu(e60YArQidsUq^n)Cv&dr93ew(B`y;+y@`s1v(k%{B4pDTw|q&9iC1ZE+=CzPev3cS6Fah@HaR5iZiQ>RUhVi%dcyZ^)rf z%J1JS?P`~Qztzl4s|z^*NLw4Ei?wTy>i3_F_Ow8H1|Yqxy`wZnQ*@tRD967oRD$#| zFwCP3uRtzDDNf&2EN~{8=2H3(WR5js(>>yGGY%E)L|{}J3Vbhceu43-g%r&b_bmLP zzqDdEn$IQ3iH3o+4Xp-YelKcH1#1)qb59}mn7bC`+LB(7V4rw=fT!`5{E zAYcvAFpbT8j2n5ZEm=?Gm-8;mHK7!633Q(x(rb#)0i6JsZ_q8eM-M2fY44oOYa+YU zz6Ml=sfpTv;0x-a7{zrpd)!;=0(H=*R?zbY2<_^q6|`4?xD6PT$Z7Ez=igJ7+?)H#a5?T9&t<`*~O7)Tzv`7yWRdRm%$!`ki|Hwmi~=|F-uo zAdQWB=x_ISgdrW{+Fe+6aSzhTMqdUJW%jQ_2ABhu&K5p*nu^B6@fEL$y#e{ZO*^zp zCy)&1GF|jicS`Q`%s`G+TT@e`BV8!z7vSZ&Da$)}{&=UuqI2^%mw|TIT}+b9GvO2CB~hValWV diff --git a/resources/tables/CR_Balinese.bin b/resources/tables/CR_Balinese.bin index 96460d260c2226a9915d035d82bb5c2536d1a923..18811308436613e85e045cd47c02c6a5e69a4e67 100644 GIT binary patch literal 24 acmZQzU|?lnU|?ckkOorHK0xdT#Pt9Ov;mC( literal 24 acmZQzU|?lnU|?ckkOorHK0q7*#B~4&y#bB@ diff --git a/resources/tables/CR_Beria_Erfe.bin b/resources/tables/CR_Beria_Erfe.bin new file mode 100644 index 0000000000000000000000000000000000000000..781066966a53464f729f4f6077f18bf561a444b7 GIT binary patch literal 24 bcmZQzU|?lnU|?ck%v%7&JAimM5MKrWA(;fK literal 0 HcmV?d00001 diff --git a/resources/tables/CR_C.bin b/resources/tables/CR_C.bin index 3a41f40f8ea591ca27873e8a68b7431f5740065c..089f7a14cb863954a581483f95118aab8dc1dd0c 100644 GIT binary patch delta 797 zcmXZZUr3Wt7{~GFdDm$D*>WtUoX(;s%8~?$Fk%-%ff`)}lF>>cx=4+v8zI(J7dg>5 zR8SX!McqUelPC!!i!zjrD1tC`{h39Ue@Nz>)Z15iFFyP(&iS49IqwyJ{Mme!j~u80oDQ!baQd{m@x48LHD1P?l9$pw+3J*Y%AYSC)eE>G_4 z7uk@+3}|hPp{?@Xah+b2~pG8f2g#(+0m_3ORFUO;=fQ zw`lPvjNzwfhz!lc7A^5R_LBQhZ%*b_7gR(y@InibcF-DI46KyL&6o1T7|GCg0OGAG_CVD_Q@fKs4i4Xa^bW56h zrTKoEIuE1cePDe_hNS;p;%5R$&F6S=NHg)+`(PyGrirIc}V3wU(TQpaP z2%6B0i-@8XJWcMk;|)245sYF2lb8qREEora+O}ACQy`y&P$Jgu!~?Ms-C|9A#*|o- d$HbarLyip;T!9)K5?4iw_{0{UPD`F`{|DqK@>Bo- delta 549 zcmXZX-%C?*7zXg?J%_Dh<~&OgT&*?=yjVgNl$Ew4j?1nMO3***HDIEx{3xuN&Xw3MBSX_|==5b}UimuZ5sEq|CUaC(r2C`FfOR=bat2HpY@ZblA> z+tE4V1LylFN#m3TVz=lvJwBqg^~B%b0Qx=MuwuTSK%%NURxG>?tn=LZ$Cl5`BVXyj zvD!k?Pc`#YbRx%>MBlV8%7{*$c&G7>s5G3L9ZAtz;F@0TT-8o{MYrs* zT-UOl@{f9ui(@(*obqRqkj%2a4)*o_hD@{Z;E7oWl?K7+CQ14fMlbvC$Qc8${n%yXLvz(YXxVSCn8 z0f^m!IFx}gQ4WYTfmj!a^(QCrNb%(YrE{HtI2(v_CRgw%vE_eaV9ftKc?Qoby{GRO h7@xjpV0`u%ik|^#5C)1r1Briy;{QPU|KtW<0{|RDPx=4= delta 101 zcmeB>-5|}uz`&f%z`(e5BS$hLd^JW`XTcoil)@xGWG#is`V DekU97 diff --git a/resources/tables/CR_Cased.bin b/resources/tables/CR_Cased.bin index daa2be21a300f2de65133d1b7cfd7635327316e3..1830b3bcbfb639676ff9bcfc599b5b1e8ea13903 100644 GIT binary patch delta 90 zcmeys`Gb>#fq~JMfq`M(M2=v_X%k}(Gj?rOU|i0~dWV5w`Nzpmn9k|(1~4%4rUG#R k5VtZgN-O~4`wWbE4nSNF#6W)D4j|qQ#FsZ8U^ZX`0BVgGe*gdg delta 82 zcmeyt`GJ#zfq~JQfq`M}M2=v_sS{%kGj?oNU|h~9dy0W!`2`@p2*j76_$rXT3B;c! bpJ6)3C$WHmQQ|%WW1a&L*Ka<-Y`_QrJ5m~} diff --git a/resources/tables/CR_Changes_When_Casefolded.bin b/resources/tables/CR_Changes_When_Casefolded.bin index f2dfd97e4c986bd7fe6f266ee106a362d52c349b..a172d11e333b3a8e595d6752814a4fb5974c630a 100644 GIT binary patch delta 136 zcmeyNwnLqRfq~^M0|QgpMvm(ojGdbwaBy?Eo@QWJeg=roLGcA34Z@e8_zI8);cHNQ y14x7LEhxSNr0+};PEz9yU|{4;Wnh$80L1$l81o!}I39?B{Jb3uj4v60SP=jlVk)`- delta 73 zcmdm?{zHv}fq~^N0|QguMvm(oj2)XFaBy>pUSMEY4#L-<_y&-^G1)*kNlan^1Ea)# R2F5%GAdY8Xe8~XBiU3Pe70dtt diff --git a/resources/tables/CR_Changes_When_Casemapped.bin b/resources/tables/CR_Changes_When_Casemapped.bin index d78583379894e3118255f85aa5c86539d234a0ca..b4cdefd59b1e244cb73bd567953166b6be9c8d75 100644 GIT binary patch delta 81 zcmZ3$v4CTO`$YeUjq3#%8M`(gV4Tj#cxQ43^CC0e00u_hR3I(@;#LMmi3LD>pMf#Y Z0f_5?7|74t0mQq3_%Z|IO9miz1^~Rb76SkP delta 77 zcmZ3$v4CTOJL@b42F5uPU7}f&85o#SH_j1eWbD|yfpI#c;3)=%N&0F1*I3IG5A diff --git a/resources/tables/CR_Changes_When_Lowercased.bin b/resources/tables/CR_Changes_When_Lowercased.bin index 61fc097ba11143017d39351aaf668135411c28b2..eb4d936a973107cb69f385647b3f67fa360bc23a 100644 GIT binary patch delta 141 zcmbQBc0-MWfq~^J0|QgmMvmDWtep%DGM$?jaQxUz_1*IuR-w*Abn%<3n4Eti3JRd68jk# Q^BjOUo`LZt0}v|$04{VD?EnA( diff --git a/resources/tables/CR_Changes_When_Titlecased.bin b/resources/tables/CR_Changes_When_Titlecased.bin index 74f386d00dcc53f0ee33cf0b8209695b5eac8414..8202ee00c7259a6dab255df87079d0504834a7c0 100644 GIT binary patch delta 146 zcmbQCenFjsfq~^S0|Qg#Mhuw LGcdkX0%B(X`l>AR delta 89 zcmcbhK0}>@fq~^I0|QghMhZ)b^SVUy`%V36tBEWr7j)AlR_!*UQl z55*UOGzedY;;TR!gs(&KO&|@zw?TNaf^e1^Zvg`%Zz}_%!~r0_&%l_M0L1k`yc>uw LGcdkX0%B(X3F9pm delta 89 zcmcbizCfLWfq~^Y0|Qg>Mh@A81(MLJi|8UJgxw5cU3HNY zs{;u}6a^IoNi4!buvYYfG6^CKUuNYDvZm6QbEDQ*c`iQuF3$O#=YP&~r~cAjyNEd~ zVx+IxADP!h>^Gjg>@!rmZnK5eL}JiZG8(2uD%1FdvWWk%B}bM-s+!P@gE)k4J-cpr zPf}#-7?wb5TO7S2HMIz#6=9LOE?m&#>-%-ozT2D=X~^n__BwM)j7LN7I;JfZ}wwrv&H>*dT_q<_Ieg^V0t^XSqP}Ju(-E~$E zh^n4M8b5V~E66L?yY~4S>9mwk7PbF?sFUQWX5HmF9q0&&>WGSpkdd3XjpulQPkPd| zYs<2zP6}}bi~keV6GRMubd~#jV1%X7zaUdjK{@piX)Gn;?tZm1!}J-xpP|n4tGQvY zz9vu7{~?JQ&zSOZ?fe9OgRA9P%9pjv+Y%cRRiIc%f&&ZeER;nR+Ym+sow$e?y1@@9 zzO#HFM=^zI%p;2xa85~E7_?j#`4Fs delta 527 zcmXZU-z%MQ90&0C=X>&aH0Cg@(V4@Piz9Ne8#hN&Tu64|Vy)GYKj5fkDK*EP6k#8Y zP_&D=*o7a@iYv1zDLHCsX*-2-VaY@q&O?v)sdMq_UEk09`|hirt+IiPe!#4c+Fx>p z0XyXbjW4c@8+oHIeGy4G3qIEr?f}IeP|`xJ6id-Ht3(DgVSRi49SE`$JSX@vA^f;nN)<%h5Iaqg_{iXNb<{9 diff --git a/resources/tables/CR_Common.bin b/resources/tables/CR_Common.bin index a78a02bd205ebaf0ea1d505379efb0a326d66360..7c2cb54193746bbffdbd258a46e8f84f1aa2e41c 100644 GIT binary patch delta 230 zcmXZUArAp@7zXg?ML3LUBvge-swOC!Wa9(aRGW?FCJ6pMfRDhg5xC7va3)@`Q55Aa zo;w?lP5A8z@AJHFOpj}TbO0<@T1~`M4XH>$>5@x)fFcjY7Ep54Uh2^YPe7<7bYvhSv1B4^*~m_ga+a&yMa#hp U)C&x!GLyY158p_Fe`(#}4|)hk{Qv*} diff --git a/resources/tables/CR_Cyrillic.bin b/resources/tables/CR_Cyrillic.bin index eebdc4ce0e8504e6f7562a148039719cbf32ec8f..e2e957ae4b6975487558999658fe1cae72e1361a 100644 GIT binary patch delta 9 Qcma!um>|#CHBrF=01o2<)Bpeg delta 9 Qcma!um>|#CF;T$+01n#%(f|Me diff --git a/resources/tables/CR_Dash.bin b/resources/tables/CR_Dash.bin index 8c9eded56154b3ad70287dc5c1c2fef259b2d78e..54a68db48979dfa4990ae22f53687efaeb5194f5 100644 GIT binary patch delta 31 gcmX@Wc!H6Gfq}sgh$SX+Y~th1V_*bfzO^6>09!K!qyPW_ delta 23 dcmX@Xcz}_Efq_9Eh{Y#zY+~bE%fQID763MU1fc)` diff --git a/resources/tables/CR_Diacritic.bin b/resources/tables/CR_Diacritic.bin index 55d9214e304ab8db7050e549cdf9fad1ff6eee4e..5f74947e59fe07e2dd15b06512e5fc62c516d514 100644 GIT binary patch delta 402 zcmXZVO(+C$7{~G7vv#z}&SekU(UL8>Y;l+sJ0cQN++3ViO4*m%gK~Fr-1R@YY&lRa z>*#>IB^P8%DQc2HXJAWAWbP6^4V-15{^?BP5TzvJVgI>sdR8YX+a_b zH04`hb5x)ux}Yn%rYb$qqpAhh24lAnSNkxH(5%NChnO>vxo%J94U+kSWP7L=lFw33 Zt!gW6_6x**g*g1++(4d2X^bXl@((SYT($rJ delta 166 zcmaFCyMTv-fq}7|fq~)hM2>RSg$xX=izn7dGalKvK$vmzZpIa&Cm9&TF9Y#i2$r;D zV34$)+`*(Yc^8wyN3RSpIYJ3+BVTPZ=1wo-r`;Dgm+jm)G~cLqk2PzJ`V4?z5dfic?vh|MN@ur*D-#3lv+pQ9?n diff --git a/resources/tables/CR_Digit.bin b/resources/tables/CR_Digit.bin index a8aac6ed99f963e2768bd9c5513b0dad64200f92..85c73ea50ae8761d05dc87fa5852fc96cb716350 100644 GIT binary patch delta 140 zcmeBRIl;ogz`!sOh&?uPSTVBkIxsNudQNs=^imVMz`!W>n1NB;0EjIa7$qJ6@k<6q z$p9dZWMGv30K`8hFJP1slLbo20;S}EQu08lM4*;L%gF~ArTB6S7#MRa85qw1RiF7e d`39qs*wc>;j8A_tFunw;ehF0l8z}YrCjb-KB!>V1 delta 119 zcmX@X(!s*Pz`)Q5#10!dtQaSIF?#rk8!#}6TQV?8JOJXC42+TiKpe@yCB$rdc}nq3Txzxsgq7!aR;;ENd6eXes-qd@wiIl0J2BnBXg)kwaXk(CBs~)r~&~`=8TN5*S zK+y|)v}jc+q7VpcB7&?%lheI(XKJ$lcjqjA{F!0CZ_al_tSusP3y)PlMOmF{ zqOjK}es3FH=mqEOCnDt~C`FY@P-7M;1jve1jOJBxrt&GCs}XAa!9Nj)F`NP{Rm-Tc z0xMChR#T%)F{e`wE(ooq#(LCXGve5$wo{`Kd(eu5IHV5Kb{th_sL_E=Ttg4oMW~Om zPv@H+eqe^X{8?i$*P-B;BrUpB6_hO%7Z*Cj9!CqW;5aQjgF`QS;-PM~! zqRbjygi@?Ri{j2GYHL+JMT|Q`>^s&gRSU7#0nMRimD)4Pucc%+8tGrUlvbPUs&!AE?;XZ3{|-_%cP zFn5TV{oOc=aZKP1-hsXOv+4)sy*}rB-j@CV8WbXeMsQDX0PHU~kIP{H!2p;y7zXnO g3A_jAGn~)F!TvKl(Ez^B?g#f|kAcsB+3S4nKV$YeDgXcg delta 178 zcmaFC`GbXnfq`Kz5c^H!2xjeIU{LOu7~w9<%D|w;4#Yx0ECR%>KsV;@0+ x^9SMvAO>puUIN7RKzwy_35&KOP~;~M5L*GU4G_Bmu{#6fFQE7zpb7u~0svWUGh6@w diff --git a/resources/tables/CR_Extender.bin b/resources/tables/CR_Extender.bin index 372b01c35ca32f1d7f672a4152e7c0d26c674dd7..0e26e7cad6549503ea1d4217276b2824f8e8f332 100644 GIT binary patch delta 161 zcmbQh^ni(jfq@|$h_xqjDDiO>GBAMgZy^19qQfksF08lulkUr8Afz5k%B-7+D#Xk zeb^f;tc&4AUImLoIO;~F52?9?3WZj#Vp0jYisE>T)?;|_62u@0fL`nl~Bwaj98ucmkEnNKg;GBETfjfP1sm201qkvf&wR53i zz$S?WJ2|sBVWeH}2Oh|l`#ul|)TM!Qpqq4yo>CwErDLG1o-R=nYjb`9b)GKTcyt*^aWJ(;-%hPFztbOg-<}o6 zUjTgePDW^qzR*{MZzUA<8_r6xS3v*D=R)79{m z;59&6TC_UyFxc4)>3pGYBNs~dAYE+qXCVpZ;5uZ8Ib?M^^4RSuniRLOctxTckbj%B zOCB9VvV52Ard};`u0ETA9I|qBn>y$bb*qXZ@C1AU~=l%^k)p>5*kqXUS~J^mOy tr)6T@KZN1Wnm0dTQp~vqYKEDQQaMas`ZY{?8fGV>p5vJF@6?u5{|DYWqPYM7 diff --git a/resources/tables/CR_Grapheme_Base.bin b/resources/tables/CR_Grapheme_Base.bin index 7322ed20fbf2ae276e3489b49ea1970ce929e2e6..75a8e5f3a400489839297d109d58896ca5917f5d 100644 GIT binary patch delta 914 zcmXZaT}YE*6bJBg-nsmquH`#%%|2FEW}skS5VfehsF9-^DH0|UmE;oYMiCrQV1A@@ zf+D&w2&Jg7-lA0(xs0;XnMgQDa%Edzl*=OKjO@SI#gG5R^E~G{=Y8Jbx`7QTM9D@X zUGuG!3g!;Y#V-}!FGWe^Mjuf|Tt7U4aqUvlu#&on$Xo(zwZ`Nvyk;|zWh?9e2keF# zI1Wv40xm;0^hh+tCbrat+#>eWx%drB2wI_&XxS=prm5mi>k>7+L?0q5nG#3(F8w%B z&kwniUd?+XH)DnV5z$qjwkcyDYd15m@H~AVvHqtxv(EEg`IL2A&9oC|9soC-f-}$| z7qXWc43CKo&)^jV#G5^ga%}X;N#lCyH(o#NAT~J@Dv{OTfz!~MfO4j|PPhyA67C}( zz>9=IX~SG?bHwfFxZMNOa!75+AH>q& zAL1dTUjuv|KZf)NAtFK5rmrC$Iih8o8@MclmC!ec0J;pJU|hHl-U3dA-@^w8!AHRU zF!qOk!C#ounsdjP1LDdvOH-b`3H?S>*lzBvYDN4T*{dz61rW1uk7u-+>Pw&gI;559e}bkE9QqiA>8x zTh2_GL(DggPM%lXAqR?1c@sn>&*3G!g4Zw$b1)BIjG>|hWp@xc3*1l(e&cj;JqL~v zRTTsv2#s(8S|AJ;;0g@D7{p*49u&x;*{5Z3`Yjo=nhKa^IRM+R(fC1m$&b;MxY#<|KA zyOxPpKf@0|r`5m2IlRnWgiF$1)p&J^cnz8LHt2*N=!45}4I(fCPvIHNKoUMd8omKK zum2&&MmQgZ+b{>n=hsMKk1F<+6gI9NAB6@|(=PCkvLweyCF7*Nr=@0>u6&dK0lG%T AlK=n! diff --git a/resources/tables/CR_Grapheme_Cluster_Break_Extend.bin b/resources/tables/CR_Grapheme_Cluster_Break_Extend.bin index 4448efa3b3d1c09ad76267ac9ceaa571b4b4f45d..e225c28ecbd5a66f17f7d4551408105f732dbb88 100644 GIT binary patch delta 403 zcmXZXze_@46vpv$(yRAc7A0yZb&Vi0h@^z3LgYd&PSVm;89{^CpWs$&oxq0XLTU+z zf)+7Ki->9u`hg+@SxAdC^jy2chwsbbz~OE9wg*)r8xwJEN4@0y>0Ob%C8D0P$F&6=0UKMm1cdu8OADDVOwL_q=@L}3o%U`WHROP>-5-XL~ohzzy8P z13Xz?(Kkt`NA5FX|BywOUv)-iwX`p|Ox&@GuEDxV_O*OCPOLBei^hmM7SKiFm0<|O vBuq)dHQ~s95of<;)1@o;+G9ozT!&+|PvTmWxc+XbqbAJj=KRMbvF`CdZx>{H delta 267 zcmeB>cp=8Yz`%5qfq^k+BFACI85_@RW)$7ez`%0|ijM(l5I(bc3R5y8rw9XsxDgN= zPhvT)c#eTVngNKJf!G9yt$^4Dik*P8)8rQ{@~kU?tksiQSd|$+PS#-kJXx7dVX`;d zcP_rw42*nhfcWp^5cc-TkJ)8dO&A!3%qIU~cNYz3U=#-7G$76a;sPKpnY@5wIqy~m zMzQS>EG|1agwvSShJjJiZgLA}+GHlKsge#1jPgzpYyxD1u{)3soqT{xYw{;9S>99z V#*67doC(BvlSR0fO@73!1^|%kJwE^d diff --git a/resources/tables/CR_Grapheme_Cluster_Break_Prepend.bin b/resources/tables/CR_Grapheme_Cluster_Break_Prepend.bin index eedc129782406b1e5c7e8fcbe101681afaabfeb3..79f2af13fe48a8370052915fd712f6ea5a290097 100644 GIT binary patch delta 53 rcmZo*Y+#%aq$hllff0ly?V;EaNCUA{3lMiQFv_|?usjn3qdXG;0`v!y delta 53 qcmZo*Y+#%aq$g?5zzD{UKpKdptf06BNOv+Y%DO?YJQD+>JQD!ZGX`@2 diff --git a/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin b/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin index 9035da46d0f966bffde3b9962d02ba2ad1cce2bb..d98b581b086bbbf2651babc6156042e2b2267723 100644 GIT binary patch delta 192 zcmdnM^@Edxfq~JMfq`M(M2_3M2N@W6K=?2aADP71J$W``0;?SZgS6vh0Ve6m#!TXq zgP2?ygC@^ll4smMc?Z*c$^8tBg6AMuNQZ$@NDqjOfY^9)1+%`Q4+Eoc5)dZ?@lGJ# z1;nSI_zaLfJ9z_h6Pvgk1EaXyWD6GU$=NLSV$z8Wj9{D!q(L|xgeR|HN#aY?Vqi=J KT9Y3L#O(lFGbs%K delta 263 zcmeytxq*v=fq~JRfq`M^M2_3C2N)Q54g&FEAU*=b$AS0+5T63#(-S{*^NKPsh=Z^R z2v4qHOcu3fV2}o3TOf7>VrL+Bnf!oJT6GnW1;Wpv_!W?T1H|v3_!E%+JXwIroiTWF z1d}}Dfyot2^A!&;FbbZ7U?Cj_Mj<^QHUeT}AT|Zz$p*~&oW2ZMBK50uELs0_FVaJoLFD{7mX2j%%cm$%fk?c v37C|Gd)$%zB+h=xhFe$gwTF!CyAQ_dAH?-0apTp}Kuwr8%=x!TV%?!X+SO%W delta 267 zcmZpWcp%2Xz`%5!fq^l5BFACI85_@RW)$7ez`%0|ijM(l5I(bc3R5y8rw9XsxDgN= zPhvT)c#eTVngNKJf!G9yt$^4Dik*P8)8rQ{@~kU?tksiQSd|$+PS#-kJXx7dVX`;d zcP_rw42*nhfcWp^5cc-TkJ)8dO&A!3%qIU~cNYz3U=#-7G$76a;sPKpnY@5wIqy~m zMzQS>EG|1agwvSShJjJiZgLA}+GHlKsge#1jPgzpYyxD1u{)3soqT{xYw{;9S>99z V#*67doC(BvlSR0fO@72J2LOFPJtP1C diff --git a/resources/tables/CR_Grapheme_Link.bin b/resources/tables/CR_Grapheme_Link.bin index 5147819b2de11bc8c79c62a4275c499a25690b21..d30b17c7ccdadcfea00144f6f6881786b57fad8b 100644 GIT binary patch delta 37 ocmX@Xe1n;Tfq|hEh^;nqI5DybpJQMYzA)K?v4MkuF;O3c0hg->s{jB1 delta 21 bcmcb?e1e&Sfq|hAh%Gj9I5AERVypuIG-m|3 diff --git a/resources/tables/CR_Gurung_Khema.bin b/resources/tables/CR_Gurung_Khema.bin new file mode 100644 index 0000000000000000000000000000000000000000..2d20bf08fc87e4bfa7552aa74b7ec46bd7e38ac1 GIT binary patch literal 16 VcmZQzU|?ooU|?imOazjNmH-2b0RjL3 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Han.bin b/resources/tables/CR_Han.bin index 862a01edbaf34f7f3a169ec42281803aa8d7b3e3..f90d8a9352edc3e28149788055fd6612b5fc57a9 100644 GIT binary patch delta 72 zcmdnMxPfs(zT-CrCI$uure*gTn3e;x TCCk7JRL?Bz1;hai%qEop{HGH9 delta 72 zcmdnMxPfs(zT-y*CI$uure*gTn3e0D literal 0 HcmV?d00001 diff --git a/resources/tables/CR_ID_Compat_Math_Continue.bin b/resources/tables/CR_ID_Compat_Math_Continue.bin new file mode 100644 index 0000000000000000000000000000000000000000..30f23e5f5fe0104c1c1b55483cae8b00016d8449 GIT binary patch literal 152 zcmXZNu?;{_6a~=xHF}9wL}CPU7==PDT8%xlR7$Y}g;6x_eeV}12S5!Vqm6btT-gI= i;3G}6096vDTnZEJ6Yk~mxhF?34VO0RxXjVY<&qx?#3Rc9 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_ID_Compat_Math_Start.bin b/resources/tables/CR_ID_Compat_Math_Start.bin new file mode 100644 index 0000000000000000000000000000000000000000..2b75b00cf43ab9abbd216c1038597cd011d5c00c GIT binary patch literal 112 zcmZQzV31~DVBlq7P-22&b|4MHa$wAO?H~gL-v-hk{2PL=i!v~Ru_=%SVSgyj2ht$i N3B@acGzcFCVF27t9Yp{D literal 0 HcmV?d00001 diff --git a/resources/tables/CR_ID_Continue.bin b/resources/tables/CR_ID_Continue.bin index a83fbd3c6ce0718061d3cd69b5ce0b5e57b00236..ff57c7f0ef9d8bc38b91a2820e3a431334373e8c 100644 GIT binary patch delta 508 zcmXZZJxE(o7zW_?yYYsb+9c?aOEp||Ql~1#p>=RH17 zGnAoa+R!;wU;Yo`vheLD-9X+|Qj#w8qq0$dmTP3Myos_SsXWL*4mj^{g?1@Vf9aZT tJlF1#ri=q4Qw?MN3#DNk=jjZ_$x9fQfKhPZ1AkYwQwMyF34{c6`X9)ViPHc8 delta 276 zcmZoL>M-D7U|?fpU|?q0$g!M}wU2>;W5(t!jK`T6V<*?Jq%+>#{Dh^Onep7@3J!b5 zj>$VXc5klcOkrgG#lT?jXYw7cYS~i^49hP7@kJoM48>Q0^i3fCv^j?RIwND+W)ogL z#>rWH6DKqCub1L$U|{513B;>`cnuJ50OE~6{CD#k{yfIXs{{)sD+%qG{7GoRxlNW3Nn*=$U|`IvpS(asU-BaZV*ya2{W}9=2axW$%D~tQqoA}3B!jv~<%Qeof_jTr?Qw57H-<VCf(CRP_A0c*tFNjQcq=)<91$D{dTjm(5{qK{2q}crXvNnZCe0@mQ01 zoQOjq;wUm|mmFLf+a5?l%}Tls zd8BenTzQA;AG<(oKSCLv;2A3L0_d~RXV>8eT9#LzWPjcuk@u3gIe{#Rw=z^oe9Vz( S;0aBGBqEaZFiepYSosC%D0X=O delta 209 zcmaE%wLp`Dfq_+>fq`lAMvm!>jD4FIFmf|7#!gH-Y%m<~5vb%#(NVOq?9d+t0_>z`)425{Ned@y5*@d`66$i}(c? zCwB=XO#UPg!REri!06^SIYH2gEzg00F|U5|0YNRX0-$L7cLv4|Al-A7fw31z_i}9J t5L(2z`IWE_qttdw2Bz%}3`{#@fmnfo>D)pf-oU{0`oZJ?Q86av^#E_BJxc%p diff --git a/resources/tables/CR_Ideographic.bin b/resources/tables/CR_Ideographic.bin index 93db5105d9bbee5744b9234c1609feaa53deec73..0bc9ffe24096ccf29c9c4749584e34fcdb5b06e1 100644 GIT binary patch delta 83 zcmZ3%xPg&_fq_9Ah(#xIILYOIVqnbw#=uy>z`)pZ6^Q>cF!ss;aRU&4nwTIawL_MH fX@>#>)48=kyn%t~^#dUOz`*n_cH#svCX-44hUpll delta 111 zcmdnMxPp;`fq_92h(#uHIK>q(Ffg`%XJG6A(mhuh7<++qF9!qT#sUV$O}`nKfa;i* z-DhB04y3nR01u CNf_h+ diff --git a/resources/tables/CR_InCB_Consonant.bin b/resources/tables/CR_InCB_Consonant.bin new file mode 100644 index 0000000000000000000000000000000000000000..a2836c9ae277c7b261ef3b35211d5f5890458c1f GIT binary patch literal 616 zcmXZZ&npCB9LMp`L~5UTwuWu3**&b2r2HKs4obP;$U)xhb9nWsndkG&_jyLrp`-~Zmc$UIF^5g;-~h*naE=S-ioC`H z9`WRSke`yFXXqJvhMu8kF3|uz^VQ_@UB4H77(fn#$b)(OB4)u%|JF!YdX}E0XIW>N z+s;UFp2vr!fMW%`3r3s*IR(}P>=!IJi{uiPv5F1sqSlluNh#(|cVkk@_^?QTIWuG6 z{xW48;S^`M!L3xUpo%?k2lZ#X;1%!q#*Y-uV+EWoTE~{NP4XWideNJ7a)*0)MovH` zkVFb0^77hS(1THDoJ6983aU@~ literal 0 HcmV?d00001 diff --git a/resources/tables/CR_InCB_Extend.bin b/resources/tables/CR_InCB_Extend.bin new file mode 100644 index 0000000000000000000000000000000000000000..c218304a61e183f30aa8f09c3be7fcc78de69a2a GIT binary patch literal 3024 zcmXZedyJe_83*9=ZDDC=XLe`1x7pd*?h2F&cBO?Xaw*Vq4FXaKAQHJ$G0{R6p_q7W zS*b>d5lFP6fd&$4cgv-6M|-1E5u+@v6_ORwc4^lZ!9t3OLg@N@XU-o_e(Ci4-uJxc zoS8O+hJztw-wt6)U@(Nke#lQkIQ$+quqk;#ZsA3?@={%6IfTY4pXXX`PF|C5u#-Lf zlYP9+yCEFWn#_?Gu$p!J3u`*!tGJq#tm4n?=B*H>HE>FD zn#?WWd=_yfi}?z-C+lTyV`A=UW}fzXGA{Glhw2Jh2nBr#YDel97IGf?6zogkBJ_*w zPvM)~mgrj;LeEIQg8ePn-@>2Jub^MyLncFL(l64lDR(+&pl{RJT#mV#7Gtg^wIlO1 z85M zpMW}LYl!AcvzEVzyIj78>rlVEl%ZsW)T69^bibtS%Ul~m*K|5izsrnWmvR}ma4Y8P zdYWh1fHg%g%WeEEc~eqp!l6`J68$UsSBC4l`$OnHl39EbeIxtR?F_43*u$#tZRD<0 zbLOm?vFaS78{~~xWA%G1OZ*m8t)sdNzX{5Oo++5EXFdx#izRrsXF2Xf&qF-S8b)}8 zN0~_W$^E>W9FPY?sLkd?K8y3Iy~=iWU=6i#yj$~L^nuL%m;Z&(yP3%l`t4cd{r>kt zn63Wo_d^&kSESZ}=jI&8@wg{*eig#%L7dgCFmqR?6JR_gS-5uV*-ntRLwz3LzY7p&$D;X@4eHg)IBH zu3=Zma#Oy=cS7cOIV()za2hGn!sj@Jy-b9xbTqU0IyZ%^c`c9dA(J6%IhRWqVnxWx z>PG66{ayLy!K+o1sF~AATOVnx2Ek~VJHCi{aIeA(B zh0(g{$A@hCT)aR1Bu-Bj$lT84E%|oH+VpSBIF-}zd~~MFU6foYb6?{|%-LqXw&#-H zOKWN~SF}~;UcwsNUcnmMwkNygc*xrATl*O-<|ITMa*43Nz$=s35 z#JP1jw~BqQ*zd~8sM|d!v9H~Fbf1;%kgqewKiE}Qbq3V})>XA9Rqs`uMRgHZa1~c` zC%@pAbv@UGELtqTiu1|U^!MA9)zqr#Uo&5Hulx-on5|}?YWB8fuWIgAue;Ohy>~2@codjzn=#}HmdKa8l&DDb(gl?fba6Qo4AGV zGQP=l`kO_iD)Yy%w_l*1Z3MkRAMp R$r?*}JHGmB8X6Itb ucLIJ9IuR@4R^<;M?4rsM_#G^5r`lhDjNhxIff4DgiVjBD$yr&d2Jr!rco>ub literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Beria_Erfe.bin b/resources/tables/CR_In_Beria_Erfe.bin new file mode 100644 index 0000000000000000000000000000000000000000..db1e8bb2192b5f837ec5da6ef166432fa37e26bb GIT binary patch literal 16 VcmZQzU|?ooU|?im%v%7&_W=jF0%8CF literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_I.bin b/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_I.bin new file mode 100644 index 0000000000000000000000000000000000000000..865d23725f675055dda721879fd845d3feaf81d1 GIT binary patch literal 16 XcmZQzU|?ooU|?imdi{Zc>0LYk48a32 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_J.bin b/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_J.bin new file mode 100644 index 0000000000000000000000000000000000000000..c75ab3bae133f5d4b38a15e130c846a4b9345841 GIT binary patch literal 16 XcmZQzU|?ooU|?imR^GtCY*G&Z1&0BV literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Egyptian_Hieroglyphs_Extended_A.bin b/resources/tables/CR_In_Egyptian_Hieroglyphs_Extended_A.bin new file mode 100644 index 0000000000000000000000000000000000000000..6efc347a68caeb1b1ae8689094f7d320a2b3aa0c GIT binary patch literal 16 XcmZQzU|?ooU|?imG)Z7!bp8(j1m^+W literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Garay.bin b/resources/tables/CR_In_Garay.bin new file mode 100644 index 0000000000000000000000000000000000000000..d80fbc34e89ffcad9bf0643795af43f718f7035b GIT binary patch literal 16 VcmZQzU|?ooU|?im`hq literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Myanmar_Extended_C.bin b/resources/tables/CR_In_Myanmar_Extended_C.bin new file mode 100644 index 0000000000000000000000000000000000000000..0585a6a16ff8f8809d1cd751611b4bc58978b5ac GIT binary patch literal 16 VcmZQzU|?ooU|?im6uSV#{{aRG0s;U4 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_No_Block.bin b/resources/tables/CR_In_No_Block.bin index 9382881291d70e63d9de9198eb6e996f5a4bdf99..2befca5bd43ba159998c858e941c01f5eb87e04a 100644 GIT binary patch delta 222 zcmWNJyAHu{97eyd9Wb;*!{izXtHnlAli3@n$>8<~?GvE!0(}D#BMG~~Bh-Qoo5b?> z4JRi#ze{2#_PXw6&S1uX*_}wiTo8Awg*E67L2n>JFnpM;mjB6b9sIf>Wf6A;1b~W4esTG`f&$dV&gmaEBH`+ goWSR%L%;b7V0{g&Uk#Qqu-g$F*+nE|e&8DO2bIG;NB{r; literal 416 zcmWNMy-LGi7=_Q9B2{ZM)Sp(WRuJb7x+@6I-htgZ2<8%+8xVU3c5-dNQK7j4TiVUR zeEy-LCEWxOKA+*?;hgg(A(GmX_N1nRTowpAvVsFIn@a%~aS_iakjWMfp(9)D!9Z4` zFR?G30DYM~Je5_*74mWn>?=;TN?scQxyoL}HC(%rt+xQzah-l61-zNawlZ0RzR{QM za^Jj^?URq#k7HRIpLJ#D2ham@griJ$!QSWpZX~;}>$z{{RRv0-yi@ literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Todhri.bin b/resources/tables/CR_In_Todhri.bin new file mode 100644 index 0000000000000000000000000000000000000000..b3f00ebe11d6a2ff73979833677c3f87cf039288 GIT binary patch literal 16 VcmZQzU|?ooU|?imWIX`H{{aOt0nh*d literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Tolong_Siki.bin b/resources/tables/CR_In_Tolong_Siki.bin new file mode 100644 index 0000000000000000000000000000000000000000..763d166084abc7ddfc0aaaa5d1ce41af57078f07 GIT binary patch literal 16 VcmZQzU|?ooU|?iml-&Tt?*Rpo0pI`t literal 0 HcmV?d00001 diff --git a/resources/tables/CR_In_Tulu_Tigalari.bin b/resources/tables/CR_In_Tulu_Tigalari.bin new file mode 100644 index 0000000000000000000000000000000000000000..572462ecc2aa09af0ad78c5c1ff0f319cfd16b11 GIT binary patch literal 16 VcmZQzU|?ooU|?im6m9_G{{RGG0jvN3 literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Inherited.bin b/resources/tables/CR_Inherited.bin index 7dab441a33689484ac87d2b403bd902cea84bd34..1b78484927c4cf6cee7bdb98c99bbe84c0c11fb8 100644 GIT binary patch delta 29 icmeys_=Ayyfq}smh~*}7=yTp>V32wM#IGk>>;M2`PzQVf delta 21 bcmeyt_<@mwfq}sqh-D{o=rf+1=&%C-Ht_{( diff --git a/resources/tables/CR_Kannada.bin b/resources/tables/CR_Kannada.bin index ab48a13ea0511a58b040b062a0feb4fd7ad3f840..b1326d7d24ecd1eb71ca77aa39b0873e1265e5db 100644 GIT binary patch delta 34 hcmXRYm=G*`hk=3T9uPkO;>SSz42a(Y@kb#33;?S~32OiV delta 34 hcmXRYm=G*`mw|!j9uPkO;>SSz42a(Y@kb#33;?TS32XoW diff --git a/resources/tables/CR_Kawi.bin b/resources/tables/CR_Kawi.bin index fc7dfda4ddc2a13552a9c1816f54bc55502eaf34..cefc48f0149cc55a3314147590d8535f84eb2f94 100644 GIT binary patch delta 6 NcmY#Tm>|y>1powJ0ZRY? delta 6 NcmY#Tm>|y>2>=9M0ZIS> diff --git a/resources/tables/CR_Khitan_Small_Script.bin b/resources/tables/CR_Khitan_Small_Script.bin index 884336376f87bd7f19d419a72a70ddff277a3d39..b35b927126c862f44e9b0f2e3c4908fb1278bb31 100644 GIT binary patch literal 32 fcmZQzU|?rpU|?oo%zpyG-3$zjJy(JFKL`T=Q=JF7 literal 24 acmZQzU|?lnU|?ck%zpyG-3$zjJy!uE_5_{) diff --git a/resources/tables/CR_Kirat_Rai.bin b/resources/tables/CR_Kirat_Rai.bin new file mode 100644 index 0000000000000000000000000000000000000000..da70d0fd02c5b008b8c3e66376fd964be45e675f GIT binary patch literal 16 VcmZQzU|?ooU|?im%yj_bN&p3G0h#~+ literal 0 HcmV?d00001 diff --git a/resources/tables/CR_L.bin b/resources/tables/CR_L.bin index 328f5f7d2a34f4df19efc6a7663441004c1b8a67..667ee05a0dd88eba455fd4a92d65552792f3c8b6 100644 GIT binary patch delta 418 zcmXZZJxBs^7zXh7{U2vaY1%;qav}slP9f45Qeof_(IymV(3aZTluJY3(G86qEfE-K zMSXRRm9hlbAmf|s3*liyODyWi9Ajv8dRrzG%90aX1hqo@o)! z5^*R*97D!bt?8Wh#Dm1~HR1#^u?afl;1-Hn(B<F$~RR1nR#OK70U1i?@)mcK%a>|vjJ`B7+z(b{W+CH&P(Fq5;7#d%1|ZovrM9i RAGB1Gh)7bxus~8^;}2t&cD(=q delta 209 zcmaE%wLp`Dfq_+>fq`lAMvm!>jD4FIFmf|7#!gH-Y%m<~^MMm?j_MnK(I`x1W!%fq{{4B@k}_;*FaH_>34gSMdul zPM#!?F!`520GkT~1EZVUR-x(M?fOOAQ2F6|>-OI6= uLue7>=2yZ#j8fYz8JM;^Ffi?q1!4sTrgIB{cmo5|>j#qqM8%kt*8>0;**=m0 diff --git a/resources/tables/CR_LC.bin b/resources/tables/CR_LC.bin index 32f9d8efc5ca618b0a9268d0f82fc79d3981f170..c139e40ff753d46d9a4c7f677f61b9f7ec63ccf4 100644 GIT binary patch delta 85 zcmZqR?BL{JU|>{aU|^Uqk;9pB+C-n#j9nXl%x7f0GkF8kCOzH&21edgAT9vnRt83i e1weeCficeki0gqE$j{pW#Jhp`^5z0&0Y(6vq!q3J delta 77 zcmeC+Y~bWzU|^JIU|{H<$l=U5b)wH|#*U3Y<}*s3VqjQ)0f;XG@ntB!3Z!pNp24(< XPhtTBqr`m%#ykfguHRh2EWii=ilP_U diff --git a/resources/tables/CR_Latin.bin b/resources/tables/CR_Latin.bin index 8549fcb902258058909f680c43e8532b86c5c9c3..49871f34b9b5eec328ef4a58863345c1875c1883 100644 GIT binary patch delta 25 fcmX@Ww1SC)fq}sjh*c(X>}S2hz_9$|#3wNTN+$<| delta 49 tcmZ3%bbyJ2fq}svh}9=@?3X>oz_9!R5MKo1%TRn3NZ$nFPZQ6?002?N5L*BM diff --git a/resources/tables/CR_Ll.bin b/resources/tables/CR_Ll.bin index dc516c0032f2f996db90c7890389b0a993df34cd..b9cf5fa281d5015a40a02a21e25b26ac7b761dd1 100644 GIT binary patch delta 99 zcmbQCc|wzefq~VKfq`kpMviV4#%Y_Uu&}YP$#gL=$aHO088K-yZ`_I delta 56 zcmX@1IYX0!fq_+(fq`k#MviV4#;Kd9u&}XgUc?c|HJMphW3sVuIiJJ<21bed42*dR LKwQ80gfJrjk}D3M diff --git a/resources/tables/CR_Lm.bin b/resources/tables/CR_Lm.bin index 700200ca3f9049e4b9f8805faaacab6fe3078f4d..9673765fb4804d7ed5bd65603b3a0ba3c0bc48f8 100644 GIT binary patch delta 108 zcmX@W(!k2Wz`!sci2XNm6f-h@oLs}0XU6NtzzD|qKpKeojzX~PO$J5~&UOG|X9mVx nAf4+3#MwZcGx-Cf6kGl$2FCo)lR21-_@4b|UhfLyjck+p2!oLxDn z-6omiCUMh9N^F{Bh7wIU$N`^e_wed{`PB1#_t<@5qSjF&(OC`;@LqX%pLeQuOz@(t ziz%*~{VgR$3Dt;0pRy8J4^0q97UW>GFr-cst1~d$pyi3RL#RL%PT>sB;li|{BRm$z zCcX(`(Zo7-dyJ}b3+AT!?!hyx(F z0LX9u&cN6Kqv_lq%6&RS#Ed=5X3{0;d bFfjdKU|{+s%fQS4bgZx!5C&FK_-K%)tl%_re|0 delta 59 zcmdm>)u6?}z`$zHz`!(rBgbqO#;Kc^u*k7&KE;v9HQ8ENgYnbk9N~F<5(gL4{a;>~1WIIS(kOpC(_%o3B LR}h}OfKvhh+%!5O delta 94 zcmX>gvO}1Ifq^NPfq~I%BFACI85_?uGc%ss9KrI7k&ACN10&xWApSc!h3(tqN$dwE rM{#uUnK&>og0VZ04&B7b#3=US0t4fVYYdDpU4Yn&fsc^^h~EPM9bg)~ diff --git a/resources/tables/CR_Math.bin b/resources/tables/CR_Math.bin index 06a31e1acd4f1183a94820858055b09b7e103ca1..d6e2fb95e7cd951e901c5c4fc8b553dec5ec3cb0 100644 GIT binary patch delta 46 ycmcb?@qvSbfq_w)fq|iSBgZTzKHfeCM&5n~#&aJ)c=H0L9gG|dj6W^_@eKeP1rAdH delta 22 ecmeysaf5?{fq_w!fq|iGBgZVJ&6}9EF#-TUbOrPP diff --git a/resources/tables/CR_Mc.bin b/resources/tables/CR_Mc.bin index 8c7314908b65a15893932f765492ccc6aed95510..6a4a1481f46ac9c785abc30ef264cb4697aed454 100644 GIT binary patch delta 116 zcmdnNJ%NXVfq}7^fq~)RMh+tuJ>eY;jKaHs_z)By1=1jV9EeW=@fjdK3&iI^c(Mgc sGpif}qqyAU9V}I1(uoX=V4Mo1K{y?RCmXP4u_bCTFed6up24aB0G>z~EdT%j delta 33 pcmbQhvxA$1fq^lXfq`M$Mh+vE$yqFolRvYRPi|t(nEZ)V4giz+3Mc>o diff --git a/resources/tables/CR_Mn.bin b/resources/tables/CR_Mn.bin index ef3e77177a21c34f39414d22fe6c0330dec12f4e..3be2583394c19de13efc49dabe99a17646efc6f2 100644 GIT binary patch delta 226 zcmca1`az6?fr05Z0|R63M2^FZ(>I>k%*=V0fkEm45Wn8sz*5B|#GA>$$eYW+$hR7Z z*8uUa$t>*O)P#34FbW?4;&V`Z0Z4=JB`AIfq#sTG!9Jf=mVr@Re)1HKX=2g|42)o$ z1f)}dI1Pj+Yj7@7laFFx1Yr{gD0Tb_(X%GgAKLd$>1>wmDxFi6VRX$Jv delta 98 zcmew$c0-hdfq`i&0|R5!M2^FZGd7;t%*=Rha|cTm6BplV21dR$K>T;I2>Z9mMjUe| vU+0)SxruWDpNRtlBN)2_>Cnj@T(87lTwq{)agBlTr3(;yG4L@m0P%YO^!Od) diff --git a/resources/tables/CR_Modifier_Combining_Mark.bin b/resources/tables/CR_Modifier_Combining_Mark.bin new file mode 100644 index 0000000000000000000000000000000000000000..96d46d436d9bf4895becfd80fe5996ccd729a8be GIT binary patch literal 80 zcmZQzU=U_tVBln6U<(1_P#}(g;yXYZgdaokb0GbKfq~-`5T6F(vp{?vh%ZC&XCVC< E0I}{3`~Uy| literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Myanmar.bin b/resources/tables/CR_Myanmar.bin index 6f6a25590eede8b871f739d640a917bc62e822af..3dd0998ff6a256d04d05b38961bdfe52c1aff00f 100644 GIT binary patch literal 40 qcmZQzVBln6U|?Zj5CBpF^BEXcJ^3=FFhfViH4QS1T`KL!ACng|g9 literal 32 jcmZQzU|?rpU|?oo5CBpF^BEXcJ^3=FFhfVdt2IvNHo diff --git a/resources/tables/CR_N.bin b/resources/tables/CR_N.bin index 9bc3f81f72c931ca9dff9136d8402e34bc897856..048e6137d4a1d782b3945a5958a919b99f4a4afc 100644 GIT binary patch delta 139 zcmcb>F@uwXfq_w#fq`MtMvhlZY`hK(jJ%$cKQI-siCth|6ni{5fmupT`U3-_^iKvx znE)WpVPKR6(z202ya0$-0`UVNemQvpvlLsR0Rv;A<>VF2N^-dc42-#z42*dVKs=3s gG5-q?e`8=g^8tu|PQJiw#rE_g1LM607S oCb1>TF)$|TO%`B}l6&@;ff0%7{>AI8AA>HCLHt#@(pwng{Za3!2^ieLg)lM6P)*(ok>Sa_eGKExdAoYQ+7jk<<`_}@PaqI;{%^kj-3=6IkR=& z6xFh8QPkS5LrvFR&`ZqRf&NO3Y?PczNmH8k9sf=7H^xLEzlsWN1yk&~D{2OAPR-gq sQ?tP4mDrITn-s$z;BUs;b*nljj9}ydaVuo&$^J!o6uSC^+?dLj1! diff --git a/resources/tables/CR_Other_ID_Continue.bin b/resources/tables/CR_Other_ID_Continue.bin index 7c77add9ff1726462cbed5fa709966cc9b9d5845..12aa7eb3f04d00a69a1d38b6c503a7ab35c0da45 100644 GIT binary patch delta 39 ncmdOJ;9y{2;0I#%i5v08p<5H~;_u delta 23 dcmZ3%xPXy^fq_9Ch=nI|Ok(3(%fQID7630;1T_Ev diff --git a/resources/tables/CR_Po.bin b/resources/tables/CR_Po.bin index 71301e38a8acf30c97163447c88bfc517e83eff5..7643a30953d63f7eaa70392c42d5c8bdb7a041c4 100644 GIT binary patch delta 111 zcmaFBJ%fjXfq}7=fq~)BMvmKzqJ9hv(*8gk1;hzJTnohYn?EpiF|qMoU|{6CFu8&y zi%<9p1EcU&AifU7Hzq$|X=0Op$iOK5aB>1`6kBdC17mLf-8Qc4jC(g#6|3?Z;Ci=?PUQC%p~op-wlOwDF* zu#hgqi@XXJhft~uwGSia8blPdauyTH&{NWyXOjIFUi^5@%X$CL^S+0Z+MU?r0vyi( zZFayl>KFiA$%pBrCTG;es&kSvpI4Q&#!o;^p5}odsFhC860HDR_tPOdM#rf~S9Y_rvUSWfD3h<<~5*D#@1B=fjVphe3nzIoUa zNh8zW?r3DgWjU80o-V5ROD5Sj$(!ts>NJBJ6Pw1_( zygLI$NGAh*JX+r>nrT<$-i@1etoFTD47hxcMlshc)X@)9s>aeLnX z8n9y&r|G%RQ$`-^BVVulauTLnD!&fidi z*6E9TT=q^habZ%LwXtGVjlWLL-Mjw#qUnoWdgIc2J)}gXBi)*+d|DXas@f9gJLGhajwwe)NS<@~5gOHE z^}`o)kTX^aozzDIG(^v6jG`2yC0eF6%Fs_bpe%87;V*=T5-&k-DNU?*wJ_zG4=|Y&%A^v_B9>0dWEl*8*|p*;C5^EEi^g{+l>4%dWSfki-a~T+O^C#b6RpNX4pMepC JU&aA(JOFC8ABX?| delta 66 zcmX@W)4;>Qz`$6~z`(G7BL_DVZxjQAbOI390&(4D4W=R{HomnCjC^Y+Z(zxqti{?e Tc@t~IWFa;MwwG}Xj4$H>)h!S` diff --git a/resources/tables/CR_S.bin b/resources/tables/CR_S.bin index c14f8eb8b8b000116cec622d48935094e9eb25c6..8e9a5edda3d38f4b8e6301eac38df71d4a31e2ca 100644 GIT binary patch delta 265 zcmXZWA#Vav48ZaB4hRTtYS}kf0JSMB4zq;0*|}jzz$4HI4tNuM3m_zj%?z`gfQ3z+ zAOVBHu%K@5M%bTZ;+N*NeQg78aFG_#t%w}P>9V6UbMN??Hyfv7itde`Ow}!CsNe3- z%*gdGzeJ8DRM15afw@aey=+G`>x+7y2>Z#x^_=PRJuH4j7rZ|vc)=1Id{1)8C)Ln& zQ&(n~Dm7k3qc_YzQxuB+@XSaUahh7jsx_ F{{Rd8;ooH;i#F#ZIZ z{wsL01G~6o2aq)Zi1z~Vejq*y#OHwcHV{7m;uk>t0f>JvF#ZPW`aKDVrvULO0Mk1= AUH||9 diff --git a/resources/tables/CR_Sc.bin b/resources/tables/CR_Sc.bin index 63875fbe83b21c7a45412698b5a233d5c265e056..bfd9fecb9df4b8fe29930848e2dd00a55897cc5c 100644 GIT binary patch delta 11 ScmdnMxPfs(I^)5K86E%{3j|#N delta 11 ScmdnMxPfs(I^%(f86E%{2LxOI diff --git a/resources/tables/CR_Sentence_Terminal.bin b/resources/tables/CR_Sentence_Terminal.bin index a539433e88d82e9ff6695cc2996dea2fe4178d79..b4549583e9fc68222056b0835443c3916dbeffd5 100644 GIT binary patch delta 128 zcmeBRJ;BPsz`(E(h$AL)bg_wFVPFuyI&p$Bs~-b{wEx5n;)eAM3^LY0Yy-q~Kn&z7 zs6a7LOu-h2-GSJXfkEdd5dWU|qMBETf#DwrivqFO$iU0rr literal 16 VcmZQzU|?ooU|?im6l?(E`v3$n0f+zq diff --git a/resources/tables/CR_Sidetic.bin b/resources/tables/CR_Sidetic.bin new file mode 100644 index 0000000000000000000000000000000000000000..ccafc67abdf3ca973469416aec2b742cf5689b31 GIT binary patch literal 16 VcmZQzU|?ooU|?im_A@Y^`vAg|H!wzUFfjhO0K_){^=J)g delta 21 bcmZ3$(!s*Pz`)Q5#10!dRxwUK#25wuFXaUa diff --git a/resources/tables/CR_So.bin b/resources/tables/CR_So.bin index 9011f82be4092199651c69a48d4eac4e923d3dce..ccc0781acbcba8a64611841c0b13b323158865ff 100644 GIT binary patch delta 248 zcmXZWu};Ep5XbSm)=G_}aU)@3B5_iA0s01vtc1mw0O0``NZ1?{`}ajiH&|#)NCzkjMT}Ni{QPUd3E^ w;mtyHzeFPX#X`|W2Yn1N!Wg%>!wTuY4fP#ce1hY}UeuCfBRqncUM&@i)+%-;;oN3J{+H0L@W7 AF#rGn diff --git a/resources/tables/CR_Sunuwar.bin b/resources/tables/CR_Sunuwar.bin new file mode 100644 index 0000000000000000000000000000000000000000..b4f8779a6370baa0cdc57cd1ac53249c11e9b740 GIT binary patch literal 24 bcmZQzU|?lnU|?ckls*8&4}tgt5dQ=K8+il* literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Tai_Yo.bin b/resources/tables/CR_Tai_Yo.bin new file mode 100644 index 0000000000000000000000000000000000000000..edd0182dbb98441f9181ada0679580f816fea6eb GIT binary patch literal 32 gcmZQzU|?rpU|?ooe0Bhc?*Z`xApQ!(|A6>E0D7bf?$9^`C*UmjQ_7fVcsOKLG$n?$9{+)rbgMopu>pufyFOcr#002rs1-<|P diff --git a/resources/tables/CR_Telugu.bin b/resources/tables/CR_Telugu.bin index 03e903def3faa4491777fb51262f7140deb20ff6..756474ab72565d53f60dcf716fca0eb23856bed0 100644 GIT binary patch delta 34 gcmXRYm=G)*!@$533&aUPoD9TiK%5W6KI diff --git a/resources/tables/CR_Terminal_Punctuation.bin b/resources/tables/CR_Terminal_Punctuation.bin index 554c2ca0d54e965f056c4c6df04e330796af22a8..46da787ce4616c60dc5a0644a887b8721674bc69 100644 GIT binary patch delta 129 zcmaFCwt}65fq~&A5SL8kXlFHLVBj#H*wfDH$G{-%KUsiL+_0X3LB<-0?SZ%sh=F_s z6)3g=(zZbC4#b`e3_3r7`1fQF#>u=w3=IE3SQLoGCf{JZ#U^}(fl>JCPx<2_8(}Ky9n8g58Wf1fL diff --git a/resources/tables/CR_Todhri.bin b/resources/tables/CR_Todhri.bin new file mode 100644 index 0000000000000000000000000000000000000000..bf10c818ea6a96d77b45526629d65d27ad1fff22 GIT binary patch literal 16 VcmZQzU|?ooU|?imWIX`Hp8*9W0mJ|R literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Tolong_Siki.bin b/resources/tables/CR_Tolong_Siki.bin new file mode 100644 index 0000000000000000000000000000000000000000..34de63b6d61bf4d1de5a0a4efd4f6795ddd837fe GIT binary patch literal 24 bcmZQzU|?lnU|?ckl-&Ttw}JQp5WfTf8dC$* literal 0 HcmV?d00001 diff --git a/resources/tables/CR_Tulu_Tigalari.bin b/resources/tables/CR_Tulu_Tigalari.bin new file mode 100644 index 0000000000000000000000000000000000000000..6508b73ef5b12f2a0ff447fe291fbd87efebb139 GIT binary patch literal 96 zcmXZNu?m177=_W>?C8+zwu&IVOt^+1g0x1h^(1~jI2?|oRg%-|mS_r?o?tfoX>V1Jk*+K)iv0>GcC3{=mTWE|!6rfq{Wp*b9gQ7?@2e0eLbF AM*si- delta 49 zcmeBR>|mS_r?uUZfoZz~1Je#!AXZ>tI=2vrH!v{0e!#%Yz`(#P>;=RD49v>w0Z~{C AApigX diff --git a/resources/tables/CR_Unknown.bin b/resources/tables/CR_Unknown.bin index 314cfce44fa3802e9ac66a0d3e9893eba01247af..2989d7b010a9142f95f8d30fb8de4b903d31ebae 100644 GIT binary patch delta 787 zcmXZZUr3Wt9LDkAdBYgx`-}vLfDNE>#B>K zXdOr}A}FXJNMaFIf@RSklt~a#=$w@rWX(x3=SIDKmG|Pqb8*gd-rqTIUrn~wEn+?w zF;Z9E56o*K?(2_U^c$*8x4I%~GBM;T8gn>M`otthd zb3~N6tcN%EtK<4;$!M7;EXs2RXK@)l=+j$0yL>N2dEa3IU$B~J@PyT|m?-}hN1UYK z?{z#O*HB&eihPYXjxlo0CkMy+XYgHjdfQAsR5q)}y?06@q5=#QVA{YpETW*#ZMp5O z928YKg*1NZ5-Y?j*I4_@>ghBUVT)=$AnGJ}s!?}Zr-SWbQSDu#qGa?2Zs94O;iI0i z_H0`b)j=W7VDW#VdP0cdkFM~Y500@k{ugBOF(@ZLAdRI&+&7?h&oTWR-=Cw-^Q-w0 zu)Z!w(*GfeD*uEk<=VMP{03Lcv6Qp5RoWCA7L})%9|Z^I*_pRR6pbH6IxQGZw`U6G~BM5Q=7a=H) zKA};9;zAcL{J4Rx$`1%Z93dja1}bQwNPZz|bCv5En8l9+?{nUB^dNEH26B1`rft5cq?|dQYf83&au29@Osy2p&}FMa`ZQ&IdAI_E*a;mIdsY3! zxqHjN zwz~$nyk8|~h}J3TZ0C-P#&5opdM(ad)q}h$xpYGL5z$5e6D=*6(5-@T?Fj_ssg4C2 ztVR#g)U2n0=TX@pY)Fo z>5AApe@U-&x1=$?0J-2xx}BmFqfUBFaq6Q%`keKZxk)MdMSH~M^nc=xt63XNzPo9N z=fO<gqoGce{k0C7AJ1NnJ7HhTz5FaiL( CwJKNu delta 68 zcmZ3X`9On%fq_+=fq|)eBgbNn&6_z4xI`~7Ff0e*YfyXxNZ**OA?(E`v4DY5Vm||8 Oo&ylaZ=N75!3Y4Sm=lcv diff --git a/resources/tables/CR_Word.bin b/resources/tables/CR_Word.bin index 3684663611acdfc36906cbb9ea6dee7bf1499fa8..f7c8f6d8d4ecae24bb65d985087752dfdc5ffdef 100644 GIT binary patch delta 521 zcmXZZKS&%w6bA6`?Yhez$!*k?1wB@d6j~}`lWQXQr?3!9BMGP^sE|8FL=X$Fu~6e5 zn8NEKX+$)jF2N%ejNhuqRz@8p@J!|GwMdZ5;4A8-DD}}8#E#Pt1TkPR%QJQw?fDTo4(SYghK-?oWU-Z!pbwEPh#15e>ozt~y zD}HBt9LW1lJoZjhuDDX#RoIERwanD#Aq{{uH9i1b2Z_F>ej0|vxQ~s} zJSAy^cGXv>s`M|UpTRfZ=ms)XPI0AEJx4Dmf-8A%^aCzL(Ok6Ul7l!jwFU)YL*Q_caBHY7hYaFf?$*sE zNSczxTT^^=mu6gsc&Np7h$pMtl^Q2#J!YnA<=h$DE`T&(=IQ#-tq(^;F zRa!MX@ON!td_cB1QKn318LE?o>IPy4s&^(@P_Hjg-+=lFpdqilRj~#=*Mv(D?|*DR BPqP33 diff --git a/resources/tables/CR_XID_Continue.bin b/resources/tables/CR_XID_Continue.bin index 584b40ae9dba49c4e6c9413e2cfed7ae4baf00b1..aeb95a653f8d08147bfc0614f061bd7cba04e281 100644 GIT binary patch delta 515 zcmXZWODIHP6bJBguDRn5W<2h6!!()|J0uHiOwsJfme7pSP-aZBpcESmZ}lx$%Ekya zTr#n_DJe}-vhuo~h4PGIfj?RNI^Xy8{m(f@alAw!vepnK#9$e=UROGcP$Rs2(jVC3I8 z>aR&ygLNiOfBFB;a4lPQe>(=iK~g&=OYfF2Fk^Z+L9mg5{Eh<0=>jx+{67a198}d z1EDyJa^8s}2#y}YH}O~=48V)1b9Px1*dy_w8_qk&>K zJ0|bo*uA-$Gl!A&7XyRApUF?Ss%1|xFf6|S#2111G8A70(l>$l)8-Uzb|%KO%{jb! zjFT7fO`L4azkV{4fF$GJ%_;(UjFTS;7EF#3+Ac){db!m5mslSHi8To@P_-P|Sz zh$OM)IWREh)la@5qA&T8fw2H6(f*x*u>(l=TxDSF1=777lNCgZHqR1$!MJ&mcnqV} zc1s4P?G6k~J7j@afr07VLLlD2!1Ve71Je%%2Bu%K49pBb4-0z%aR39e@_Gh7Mg|~$ F4*&x{Q3?P6 diff --git a/resources/tables/CR_XID_Start.bin b/resources/tables/CR_XID_Start.bin index 52e49f81a5d25a5faeade01e65ded9e8dc0d8f8a..a2969818407e5a955b346af2c167a98ae66f91ad 100644 GIT binary patch delta 401 zcmXZVJxD@f6b9gP?&X>i*EGW+xzZF=i$pYvR2VcgR}^RvE%`InluJYZ;y1WTO9TbV zM|7b@B4`Ukf*=WrybV#9Nkc>SN)8Y2aNcvy!%%L-PNc08DY9VCG9StucPqRoPSt6y z$foL3c}KdsvWiwAI{uW`j-YDOip1JiMi*L$*fB5CdS+0cA=XzQ0b9h*6r4aF3UCEC zGTjD4FIFmf|7#!gH-Y%m<~5vl%#%OyOq|@!+t0_>z`)425{Ned@y5*#d`66$SMdul zPCg`%Fj-45g3X12fzi!v@(e*Iwmb(0#=QE;KLoYJ3V@>R-x(M?fOOAQ2F6|>-OI7r zL1+=~;0QMR`q5uE@ diff --git a/resources/tables/CR_XPosixPunct.bin b/resources/tables/CR_XPosixPunct.bin index b553250b3d01576c41ddd715d03b2bcb2afdd186..299d6684b2c28553145fcb23917afc6cf6b5ecbe 100644 GIT binary patch delta 127 zcmcb?J%fjXfq}7=fq~)BMvljfqJ9hv(*8gk1;hzJTnohYn}0ACF^Tc!F))HK-&!cX z0HiNWE?~*x6TZU0D0~%&uLJRo$v0S<*rXpaFiJn19KjmJmYd7Kn43R&1FI6>)Bg;N KAp9~8h~oi8upzbp delta 65 zcmbQibAy|Mfq}7(U&aFf`-Bl{ diff --git a/resources/tables/CaseFold.bin b/resources/tables/CaseFold.bin index 347026af758b21999ba7cf2e0da664fca6246c3f..99f6fe1220cd474e6a4393a29c0dc762828034bb 100644 GIT binary patch delta 707 zcmXZRw@$-Q0EOXuLxjTMks$)!fQ2b51BjL0JE087qIWPQ46tTFf`M*22@XY~_mZB# z0z5$8frTUcY~Qbc#VdVF(k?`Lp5NZ-%vcbPd?`fsqS592%P9<6X>$vqhb-%1I6_C^ z7#)WbbQ1ogzr5Y9tjurL56-V;xomh`9g3zDn=O?dA(axk7cQmy;4-=&E~f|J3VIN( zq=(=tdKj*zN8lQI6s|R`No5RC$1x7q(-Uw5Jqb6`Q*aZl!OiqE+(OU5t@JG1M$f@+ z+5@*c81qJ|z?P<|t5&O*LaJ-@6}(Pg!yEJsyh-1}Tl5{gP2a;h{Q&RKkMJ)21n-&F zr2355=Xik+=vVlVeuIzbclen8fPHij_R}Hwgbu?79f1RM6h6&m#1Ln696qNL@CBVT IQbhsz4~XD|kpKVy delta 68 zcmdlmgK^GeMivGJ)?XW0(j_;SOa72myuiTWz{tR`{2~xvgR-v!**Bo diff --git a/resources/tables/CaseUnfold_11.bin b/resources/tables/CaseUnfold_11.bin index 6724aeb5c5c156cb13067963baa073b8a968f870..cb09c68c107abcb32eac601c8dbabc7620a4a7aa 100644 GIT binary patch delta 736 zcmXZaH%miN00rQCH31V0h>L>}@&nv-6&y3#do*fXFZQlaje`0M1Q&ZW*7$5-?)`Ax=p-KAJHzFE=N|5MKK=5$Us{B)21Aw~t8G{amlPuKq5oPFEjAxxSdX*+#oL{O zW_Awfu}LWjo-5Xu_;EvD!?$z1p_go`H`IYf=RfPFT#sr}P|rM$g0N^a6ZAFT!DZ3C3((5_bs4oRU<_ nFeYTY>##X1saD`fGK*CNb7NAi!Pu7ZVI4O2Ce?=SP9Kv0j%kEq delta 58 zcmV-A0LB0Ghymb(0R#X51#__k_XV>D1{eghD+>D(voakq7YWe-03ZPX0H@HCoHQG= Q!!+jzqq05&v))3M0U`hsvj6}9 diff --git a/scripts/generate.rb b/scripts/generate.rb index 230b71db..6970aebc 100644 --- a/scripts/generate.rb +++ b/scripts/generate.rb @@ -8,7 +8,7 @@ else ;["rdata", ""] end -UNICODE_VERSION = "15.0.0" +UNICODE_VERSION = "17.0.0" SRC_DIR = "../src/org/jcodings" DST_BIN_DIR = "../resources/tables" INDENT = " " * 4 @@ -107,7 +107,6 @@ def generate_transcoder_list src, dst, tree_start, table_info, iul, max_in, max_out, conv, state_size, state_init, state_fini, *funcs = body tree_start = trans_src[/#define\s+#{tree_start}\s+WORDINDEX2INFO\((\d+)\)/, 1].to_i << 2 state_size = "24" if state_size == "sizeof(struct from_utf8_mac_status)" - t_name = "universal_newline" if t_name == "Lf_newline" generic = funcs.all?{|f|f == "NULL" || f == "0"} if generic diff --git a/src/org/jcodings/Config.java b/src/org/jcodings/Config.java index 28dcd8fb..c880f69f 100644 --- a/src/org/jcodings/Config.java +++ b/src/org/jcodings/Config.java @@ -62,12 +62,12 @@ public interface Config { final int ENC_CASE_FOLD_MIN = INTERNAL_ENC_CASE_FOLD_MULTI_CHAR; final int ENC_CASE_FOLD_DEFAULT = ENC_CASE_FOLD_MIN; - final String UNICODE_VERSION_STRING = "15.0.0"; - final int UNICODE_VERSION_MAJOR = 15; + final String UNICODE_VERSION_STRING = "17.0.0"; + final int UNICODE_VERSION_MAJOR = 17; final int UNICODE_VERSION_MINOR = 0; final int UNICODE_VERSION_TEENY = 0; - final String UNICODE_EMOJI_VERSION_STRING = "15.0"; - final int UNICODE_EMOJI_VERSION_MAJOR = 15; + final String UNICODE_EMOJI_VERSION_STRING = "17.0"; + final int UNICODE_EMOJI_VERSION_MAJOR = 17; final int UNICODE_EMOJI_VERSION_MINOR = 0; } diff --git a/src/org/jcodings/transcode/TranscoderList.java b/src/org/jcodings/transcode/TranscoderList.java index 8d0ed16e..235fa14d 100644 --- a/src/org/jcodings/transcode/TranscoderList.java +++ b/src/org/jcodings/transcode/TranscoderList.java @@ -101,7 +101,7 @@ static void load() { TranscoderDB.declare("", "universal_newline", "Universal_newline"); TranscoderDB.declare("", "crlf_newline", null /*Crlf_newline*/); TranscoderDB.declare("", "cr_newline", null /*Cr_newline*/); - TranscoderDB.declare("", "lf_newline", "Universal_newline"); + TranscoderDB.declare("", "lf_newline", "Lf_newline"); TranscoderDB.declare("US-ASCII", "UTF-8", null /*From_US_ASCII*/); TranscoderDB.declare("UTF-8", "US-ASCII", null /*To_US_ASCII*/); TranscoderDB.declare("ASCII-8BIT", "UTF-8", null /*From_ASCII_8BIT*/); @@ -421,7 +421,7 @@ public static Transcoder getInstance(String name) { case "Eucjp2sjis": return Eucjp2sjis_Transcoder.INSTANCE; case "Sjis2eucjp": return Sjis2eucjp_Transcoder.INSTANCE; case "Universal_newline": return Universal_newline_Transcoder.INSTANCE; - case "Lf_newline": return Universal_newline_Transcoder.INSTANCE; + case "Lf_newline": return Lf_newline_Transcoder.INSTANCE; case "From_UTF8_MAC": return From_UTF8_MAC_Transcoder.INSTANCE; case "From_UTF_16BE": return From_UTF_16BE_Transcoder.INSTANCE; case "To_UTF_16BE": return To_UTF_16BE_Transcoder.INSTANCE; diff --git a/src/org/jcodings/transcode/specific/Lf_newline_Transcoder.java b/src/org/jcodings/transcode/specific/Lf_newline_Transcoder.java new file mode 100644 index 00000000..94e1e85d --- /dev/null +++ b/src/org/jcodings/transcode/specific/Lf_newline_Transcoder.java @@ -0,0 +1,34 @@ +/* + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.jcodings.transcode.specific; + +import org.jcodings.transcode.AsciiCompatibility; +import org.jcodings.transcode.TranscodeFunctions; +import org.jcodings.transcode.Transcoder; +import org.jcodings.transcode.Transcoding; + +public class Lf_newline_Transcoder extends Universal_newline_Transcoder { + + protected Lf_newline_Transcoder() { + super(); + } + + public static final Transcoder INSTANCE = new Lf_newline_Transcoder(); +} \ No newline at end of file diff --git a/src/org/jcodings/unicode/UnicodeCodeRange.java b/src/org/jcodings/unicode/UnicodeCodeRange.java index 8ff37faa..111f5478 100644 --- a/src/org/jcodings/unicode/UnicodeCodeRange.java +++ b/src/org/jcodings/unicode/UnicodeCodeRange.java @@ -151,6 +151,9 @@ public enum UnicodeCodeRange { GRBASE("grbase", "CR_Grapheme_Base"), GRAPHEMELINK("graphemelink", "CR_Grapheme_Link"), GRLINK("grlink", "CR_Grapheme_Link"), + INCBLINKER("incblinker", "CR_InCB_Linker"), + INCBCONSONANT("incbconsonant", "CR_InCB_Consonant"), + INCBEXTEND("incbextend", "CR_InCB_Extend"), COMMON("common", "CR_Common"), ZYYY("zyyy", "CR_Common"), LATIN("latin", "CR_Latin"), @@ -342,7 +345,8 @@ public enum UnicodeCodeRange { INMEROITICHIEROGLYPHS("inmeroitichieroglyphs", "CR_Meroitic_Hieroglyphs"), MIAO("miao", "CR_Miao"), PLRD("plrd", "CR_Miao"), - INSHARADA("insharada", "CR_Sharada"), + SHARADA("sharada", "CR_Sharada"), + SHRD("shrd", "CR_Sharada"), SORASOMPENG("sorasompeng", "CR_Sora_Sompeng"), SORA("sora", "CR_Sora_Sompeng"), TAKRI("takri", "CR_Takri"), @@ -462,6 +466,28 @@ public enum UnicodeCodeRange { KAWI("kawi", "CR_Kawi"), NAGMUNDARI("nagmundari", "CR_Nag_Mundari"), NAGM("nagm", "CR_Nag_Mundari"), + GARAY("garay", "CR_Garay"), + GARA("gara", "CR_Garay"), + GURUNGKHEMA("gurungkhema", "CR_Gurung_Khema"), + GUKH("gukh", "CR_Gurung_Khema"), + KIRATRAI("kiratrai", "CR_Kirat_Rai"), + KRAI("krai", "CR_Kirat_Rai"), + OLONAL("olonal", "CR_Ol_Onal"), + ONAO("onao", "CR_Ol_Onal"), + SUNUWAR("sunuwar", "CR_Sunuwar"), + SUNU("sunu", "CR_Sunuwar"), + TODHRI("todhri", "CR_Todhri"), + TODR("todr", "CR_Todhri"), + TULUTIGALARI("tulutigalari", "CR_Tulu_Tigalari"), + TUTG("tutg", "CR_Tulu_Tigalari"), + SIDETIC("sidetic", "CR_Sidetic"), + SIDT("sidt", "CR_Sidetic"), + TAIYO("taiyo", "CR_Tai_Yo"), + TAYO("tayo", "CR_Tai_Yo"), + TOLONGSIKI("tolongsiki", "CR_Tolong_Siki"), + TOLS("tols", "CR_Tolong_Siki"), + BERIAERFE("beriaerfe", "CR_Beria_Erfe"), + BERF("berf", "CR_Beria_Erfe"), WHITESPACE("whitespace", "CR_Space"), WSPACE("wspace", "CR_Space"), BIDICONTROL("bidicontrol", "CR_Bidi_Control"), @@ -500,6 +526,8 @@ public enum UnicodeCodeRange { IDSB("idsb", "CR_IDS_Binary_Operator"), IDSTRINARYOPERATOR("idstrinaryoperator", "CR_IDS_Trinary_Operator"), IDST("idst", "CR_IDS_Trinary_Operator"), + IDSUNARYOPERATOR("idsunaryoperator", "CR_IDS_Unary_Operator"), + IDSU("idsu", "CR_IDS_Unary_Operator"), RADICAL("radical", "CR_Radical"), UNIFIEDIDEOGRAPH("unifiedideograph", "CR_Unified_Ideograph"), UIDEO("uideo", "CR_Unified_Ideograph"), @@ -515,6 +543,8 @@ public enum UnicodeCodeRange { OIDS("oids", "CR_Other_ID_Start"), OTHERIDCONTINUE("otheridcontinue", "CR_Other_ID_Continue"), OIDC("oidc", "CR_Other_ID_Continue"), + IDCOMPATMATHCONTINUE("idcompatmathcontinue", "CR_ID_Compat_Math_Continue"), + IDCOMPATMATHSTART("idcompatmathstart", "CR_ID_Compat_Math_Start"), SENTENCETERMINAL("sentenceterminal", "CR_Sentence_Terminal"), STERM("sterm", "CR_Sentence_Terminal"), VARIATIONSELECTOR("variationselector", "CR_Variation_Selector"), @@ -526,6 +556,8 @@ public enum UnicodeCodeRange { PREPENDEDCONCATENATIONMARK("prependedconcatenationmark", "CR_Prepended_Concatenation_Mark"), PCM("pcm", "CR_Prepended_Concatenation_Mark"), GRAPHEMECLUSTERBREAK_REGIONALINDICATOR("graphemeclusterbreak=regionalindicator", "CR_Regional_Indicator"), + MODIFIERCOMBININGMARK("modifiercombiningmark", "CR_Modifier_Combining_Mark"), + MCM("mcm", "CR_Modifier_Combining_Mark"), EMOJI("emoji", "CR_Emoji"), EMOJIPRESENTATION("emojipresentation", "CR_Emoji_Presentation"), EPRES("epres", "CR_Emoji_Presentation"), @@ -564,6 +596,9 @@ public enum UnicodeCodeRange { AGE_13_0("age=13.0", "CR_Age_13_0"), AGE_14_0("age=14.0", "CR_Age_14_0"), AGE_15_0("age=15.0", "CR_Age_15_0"), + AGE_15_1("age=15.1", "CR_Age_15_1"), + AGE_16_0("age=16.0", "CR_Age_16_0"), + AGE_17_0("age=17.0", "CR_Age_17_0"), GRAPHEMECLUSTERBREAK_PREPEND("graphemeclusterbreak=prepend", "CR_Grapheme_Cluster_Break_Prepend"), GRAPHEMECLUSTERBREAK_CR("graphemeclusterbreak=cr", "CR_Grapheme_Cluster_Break_CR"), GRAPHEMECLUSTERBREAK_LF("graphemeclusterbreak=lf", "CR_NEWLINE"), @@ -767,6 +802,7 @@ public enum UnicodeCodeRange { INELBASAN("inelbasan", "CR_In_Elbasan"), INCAUCASIANALBANIAN("incaucasianalbanian", "CR_In_Caucasian_Albanian"), INVITHKUQI("invithkuqi", "CR_In_Vithkuqi"), + INTODHRI("intodhri", "CR_In_Todhri"), INLINEARA("inlineara", "CR_In_Linear_A"), INLATINEXTENDEDF("inlatinextendedf", "CR_In_Latin_Extended_F"), INCYPRIOTSYLLABARY("incypriotsyllabary", "CR_In_Cypriot_Syllabary"), @@ -777,6 +813,7 @@ public enum UnicodeCodeRange { INHATRAN("inhatran", "CR_In_Hatran"), INPHOENICIAN("inphoenician", "CR_In_Phoenician"), INLYDIAN("inlydian", "CR_In_Lydian"), + INSIDETIC("insidetic", "CR_In_Sidetic"), MEROITICHIEROGLYPHS("meroitichieroglyphs", "CR_Meroitic_Hieroglyphs"), MERO("mero", "CR_Meroitic_Hieroglyphs"), INMEROITICCURSIVE("inmeroiticcursive", "CR_In_Meroitic_Cursive"), @@ -793,6 +830,7 @@ public enum UnicodeCodeRange { INOLDTURKIC("inoldturkic", "CR_In_Old_Turkic"), INOLDHUNGARIAN("inoldhungarian", "CR_In_Old_Hungarian"), INHANIFIROHINGYA("inhanifirohingya", "CR_In_Hanifi_Rohingya"), + INGARAY("ingaray", "CR_In_Garay"), INRUMINUMERALSYMBOLS("inruminumeralsymbols", "CR_In_Rumi_Numeral_Symbols"), INYEZIDI("inyezidi", "CR_In_Yezidi"), INARABICEXTENDEDC("inarabicextendedc", "CR_In_Arabic_Extended_C"), @@ -806,19 +844,20 @@ public enum UnicodeCodeRange { INSORASOMPENG("insorasompeng", "CR_In_Sora_Sompeng"), INCHAKMA("inchakma", "CR_In_Chakma"), INMAHAJANI("inmahajani", "CR_In_Mahajani"), - SHARADA("sharada", "CR_Sharada"), - SHRD("shrd", "CR_Sharada"), + INSHARADA("insharada", "CR_In_Sharada"), INSINHALAARCHAICNUMBERS("insinhalaarchaicnumbers", "CR_In_Sinhala_Archaic_Numbers"), INKHOJKI("inkhojki", "CR_In_Khojki"), INMULTANI("inmultani", "CR_In_Multani"), INKHUDAWADI("inkhudawadi", "CR_In_Khudawadi"), INGRANTHA("ingrantha", "CR_In_Grantha"), + INTULUTIGALARI("intulutigalari", "CR_In_Tulu_Tigalari"), INNEWA("innewa", "CR_In_Newa"), INTIRHUTA("intirhuta", "CR_In_Tirhuta"), INSIDDHAM("insiddham", "CR_In_Siddham"), INMODI("inmodi", "CR_In_Modi"), INMONGOLIANSUPPLEMENT("inmongoliansupplement", "CR_In_Mongolian_Supplement"), INTAKRI("intakri", "CR_In_Takri"), + INMYANMAREXTENDEDC("inmyanmarextendedc", "CR_In_Myanmar_Extended_C"), INAHOM("inahom", "CR_In_Ahom"), INDOGRA("indogra", "CR_In_Dogra"), INWARANGCITI("inwarangciti", "CR_In_Warang_Citi"), @@ -829,10 +868,13 @@ public enum UnicodeCodeRange { INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDEDA("inunifiedcanadianaboriginalsyllabicsextendeda", "CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended_A"), INPAUCINHAU("inpaucinhau", "CR_In_Pau_Cin_Hau"), INDEVANAGARIEXTENDEDA("indevanagariextendeda", "CR_In_Devanagari_Extended_A"), + INSHARADASUPPLEMENT("insharadasupplement", "CR_In_Sharada_Supplement"), + INSUNUWAR("insunuwar", "CR_In_Sunuwar"), INBHAIKSUKI("inbhaiksuki", "CR_In_Bhaiksuki"), INMARCHEN("inmarchen", "CR_In_Marchen"), INMASARAMGONDI("inmasaramgondi", "CR_In_Masaram_Gondi"), INGUNJALAGONDI("ingunjalagondi", "CR_In_Gunjala_Gondi"), + INTOLONGSIKI("intolongsiki", "CR_In_Tolong_Siki"), INMAKASAR("inmakasar", "CR_In_Makasar"), INKAWI("inkawi", "CR_In_Kawi"), INLISUSUPPLEMENT("inlisusupplement", "CR_In_Lisu_Supplement"), @@ -843,19 +885,24 @@ public enum UnicodeCodeRange { INCYPROMINOAN("incyprominoan", "CR_In_Cypro_Minoan"), INEGYPTIANHIEROGLYPHS("inegyptianhieroglyphs", "CR_In_Egyptian_Hieroglyphs"), INEGYPTIANHIEROGLYPHFORMATCONTROLS("inegyptianhieroglyphformatcontrols", "CR_In_Egyptian_Hieroglyph_Format_Controls"), + INEGYPTIANHIEROGLYPHSEXTENDEDA("inegyptianhieroglyphsextendeda", "CR_In_Egyptian_Hieroglyphs_Extended_A"), INANATOLIANHIEROGLYPHS("inanatolianhieroglyphs", "CR_In_Anatolian_Hieroglyphs"), + INGURUNGKHEMA("ingurungkhema", "CR_In_Gurung_Khema"), INBAMUMSUPPLEMENT("inbamumsupplement", "CR_In_Bamum_Supplement"), INMRO("inmro", "CR_In_Mro"), INTANGSA("intangsa", "CR_In_Tangsa"), INBASSAVAH("inbassavah", "CR_In_Bassa_Vah"), INPAHAWHHMONG("inpahawhhmong", "CR_In_Pahawh_Hmong"), + INKIRATRAI("inkiratrai", "CR_In_Kirat_Rai"), INMEDEFAIDRIN("inmedefaidrin", "CR_In_Medefaidrin"), + INBERIAERFE("inberiaerfe", "CR_In_Beria_Erfe"), INMIAO("inmiao", "CR_In_Miao"), INIDEOGRAPHICSYMBOLSANDPUNCTUATION("inideographicsymbolsandpunctuation", "CR_In_Ideographic_Symbols_and_Punctuation"), INTANGUT("intangut", "CR_In_Tangut"), INTANGUTCOMPONENTS("intangutcomponents", "CR_In_Tangut_Components"), INKHITANSMALLSCRIPT("inkhitansmallscript", "CR_In_Khitan_Small_Script"), INTANGUTSUPPLEMENT("intangutsupplement", "CR_In_Tangut_Supplement"), + INTANGUTCOMPONENTSSUPPLEMENT("intangutcomponentssupplement", "CR_In_Tangut_Components_Supplement"), INKANAEXTENDEDB("inkanaextendedb", "CR_In_Kana_Extended_B"), INKANASUPPLEMENT("inkanasupplement", "CR_In_Kana_Supplement"), INKANAEXTENDEDA("inkanaextendeda", "CR_In_Kana_Extended_A"), @@ -863,6 +910,8 @@ public enum UnicodeCodeRange { INNUSHU("innushu", "CR_In_Nushu"), INDUPLOYAN("induployan", "CR_In_Duployan"), INSHORTHANDFORMATCONTROLS("inshorthandformatcontrols", "CR_In_Shorthand_Format_Controls"), + INSYMBOLSFORLEGACYCOMPUTINGSUPPLEMENT("insymbolsforlegacycomputingsupplement", "CR_In_Symbols_for_Legacy_Computing_Supplement"), + INMISCELLANEOUSSYMBOLSSUPPLEMENT("inmiscellaneoussymbolssupplement", "CR_In_Miscellaneous_Symbols_Supplement"), INZNAMENNYMUSICALNOTATION("inznamennymusicalnotation", "CR_In_Znamenny_Musical_Notation"), INBYZANTINEMUSICALSYMBOLS("inbyzantinemusicalsymbols", "CR_In_Byzantine_Musical_Symbols"), INMUSICALSYMBOLS("inmusicalsymbols", "CR_In_Musical_Symbols"), @@ -880,6 +929,8 @@ public enum UnicodeCodeRange { INTOTO("intoto", "CR_In_Toto"), INWANCHO("inwancho", "CR_In_Wancho"), INNAGMUNDARI("innagmundari", "CR_In_Nag_Mundari"), + INOLONAL("inolonal", "CR_In_Ol_Onal"), + INTAIYO("intaiyo", "CR_In_Tai_Yo"), INETHIOPICEXTENDEDB("inethiopicextendedb", "CR_In_Ethiopic_Extended_B"), INMENDEKIKAKUI("inmendekikakui", "CR_In_Mende_Kikakui"), INADLAM("inadlam", "CR_In_Adlam"), @@ -907,9 +958,11 @@ public enum UnicodeCodeRange { INCJKUNIFIEDIDEOGRAPHSEXTENSIOND("incjkunifiedideographsextensiond", "CR_In_CJK_Unified_Ideographs_Extension_D"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONE("incjkunifiedideographsextensione", "CR_In_CJK_Unified_Ideographs_Extension_E"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONF("incjkunifiedideographsextensionf", "CR_In_CJK_Unified_Ideographs_Extension_F"), + INCJKUNIFIEDIDEOGRAPHSEXTENSIONI("incjkunifiedideographsextensioni", "CR_In_CJK_Unified_Ideographs_Extension_I"), INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT("incjkcompatibilityideographssupplement", "CR_In_CJK_Compatibility_Ideographs_Supplement"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONG("incjkunifiedideographsextensiong", "CR_In_CJK_Unified_Ideographs_Extension_G"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONH("incjkunifiedideographsextensionh", "CR_In_CJK_Unified_Ideographs_Extension_H"), + INCJKUNIFIEDIDEOGRAPHSEXTENSIONJ("incjkunifiedideographsextensionj", "CR_In_CJK_Unified_Ideographs_Extension_J"), INTAGS("intags", "CR_In_Tags"), INVARIATIONSELECTORSSUPPLEMENT("invariationselectorssupplement", "CR_In_Variation_Selectors_Supplement"), INSUPPLEMENTARYPRIVATEUSEAREAA("insupplementaryprivateuseareaa", "CR_In_Supplementary_Private_Use_Area_A"), From 7658cd317f91fe621f4d863aa54a5a26c3675a05 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 19 Feb 2026 13:51:57 -0600 Subject: [PATCH 150/158] Update CI setup-java and remove dead build --- .github/workflows/ci.yml | 27 ++++++++++----------------- .github/workflows/maven.yml | 23 ----------------------- 2 files changed, 10 insertions(+), 40 deletions(-) delete mode 100644 .github/workflows/maven.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a244c10..f5bd00cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,28 +10,21 @@ on: branches: [ master ] jobs: - jdk8: + test: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 8 - uses: actions/setup-java@v1.4.3 - with: - java-version: 8 - - name: Run tests - run: mvn test --file pom.xml - - jdk11: + strategy: + matrix: + java-version: [8, 11, 17, 21, 25] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v1.4.3 + - name: Set up JDK ${{ matrix.java-version }} + uses: actions/setup-java@v5 with: - java-version: 11 + distribution: 'temurin' + java-version: ${{ matrix.java-version }} + cache: 'maven' - name: Run tests - run: mvn test --file pom.xml \ No newline at end of file + run: mvn test --file pom.xml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml deleted file mode 100644 index eec35969..00000000 --- a/.github/workflows/maven.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Java CI with Maven - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 8 - uses: actions/setup-java@v2 - with: - java-version: '8' - distribution: 'temurin' - cache: maven - - name: Build with Maven - run: mvn -B package --file pom.xml From 4240f85d40fd20acf00f190a33228a1e8a51c7d9 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 19 Feb 2026 16:20:09 -0600 Subject: [PATCH 151/158] Add new sonatype release configuration --- README.md | 6 +++++ pom.xml | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 78e53a5f..3105f1ab 100644 --- a/README.md +++ b/README.md @@ -6,3 +6,9 @@ Java-based codings helper classes for Joni and JRuby ## License JCodings is released under the [MIT License](http://www.opensource.org/licenses/MIT). + +## Publishing + +Builds can be published using `mvn deploy`. + +See https://central.sonatype.org/publish/publish-portal-maven/#publishing diff --git a/pom.xml b/pom.xml index 5646fe4d..96cba9f8 100644 --- a/pom.xml +++ b/pom.xml @@ -6,11 +6,7 @@ 1.0.64-SNAPSHOT JCodings Byte based encoding support library for java - - org.sonatype.oss - oss-parent - 7 - + https://github.com/jruby/jcodings MIT License @@ -107,6 +103,15 @@ false + + org.sonatype.central + central-publishing-maven-plugin + 0.7.0 + true + + central + + @@ -167,5 +172,59 @@ + + release + + + + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + none + + + + maven-gpg-plugin + 3.2.4 + + + sign-artifacts + verify + + sign + + + + + + --pinentry-mode + loopback + + + + + + + true + + From 3b48cf537bd5643f9ef585047be418f24fb18b61 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 19 Feb 2026 16:32:06 -0600 Subject: [PATCH 152/158] Add automatic snapshot deploy --- .github/workflows/ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f5bd00cf..ddd06a5c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,3 +28,28 @@ jobs: cache: 'maven' - name: Run tests run: mvn test --file pom.xml + + + snapshot: + + needs: test + + runs-on: ubuntu-latest + + steps: + - name: checkout + uses: actions/checkout@v3 + - name: set up Java + uses: actions/setup-java@v2 + with: + distribution: 'zulu' + java-version: ${{ inputs.javaLevel }} + server-id: central + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + - name: Publish package + run: mvn -B deploy + env: + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + if: ${{ github.ref == 'refs/heads/master' && github.repository == 'jruby/jcodings' }} From 2ef0eb5a81d59ec26f8044fff6dc38b813b16bee Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 19 Feb 2026 16:53:02 -0600 Subject: [PATCH 153/158] Tweak deploy --- .github/workflows/ci.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ddd06a5c..f2f224c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,11 +42,9 @@ jobs: - name: set up Java uses: actions/setup-java@v2 with: - distribution: 'zulu' - java-version: ${{ inputs.javaLevel }} + distribution: 'temurin' + java-version: 11 server-id: central - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - name: Publish package run: mvn -B deploy env: From fcc23b206284bd2dc5a8570726402fcb878c719a Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 19 Feb 2026 16:55:05 -0600 Subject: [PATCH 154/158] Add back central repo username and password --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f2f224c5..000045f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,6 +45,8 @@ jobs: distribution: 'temurin' java-version: 11 server-id: central + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD - name: Publish package run: mvn -B deploy env: From c8eb7bf528ee93c5d3b3e031747c650f297ad2ff Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 19 Feb 2026 16:59:06 -0600 Subject: [PATCH 155/158] More release instructions --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 3105f1ab..1b7f325a 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,9 @@ JCodings is released under the [MIT License](http://www.opensource.org/licenses/ Builds can be published using `mvn deploy`. See https://central.sonatype.org/publish/publish-portal-maven/#publishing + +## Releasing + +The version in pom.xml should be updated to remove `-SNAPSHOT` when deploying a release and bumped to the next snapshot version after. + +The `release` profile must be specified with `mvn deploy -Prelease` to include sources, javadocs, and artifact signing required by Maven Central. From 996ae0f72c5cc6bb28ef92f29bbd5ef0f63d5250 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 19 Feb 2026 16:57:40 -0600 Subject: [PATCH 156/158] Release 1.0.64 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 96cba9f8..203fc02d 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.64-SNAPSHOT + 1.0.64 JCodings Byte based encoding support library for java https://github.com/jruby/jcodings From 36a489ec6716905a4145c53cb0766f9ad30f8198 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 19 Feb 2026 17:03:30 -0600 Subject: [PATCH 157/158] Bump version for dev --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 203fc02d..e76e262a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.64 + 1.0.65-SNAPSHOT JCodings Byte based encoding support library for java https://github.com/jruby/jcodings From 845b71fed5fd84fb6f0cfefbf5a00f30b88bbcd8 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 19 Feb 2026 17:57:06 -0600 Subject: [PATCH 158/158] Conditionally deploy snapshots --- .github/workflows/ci.yml | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 000045f1..f9f208ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,12 +27,32 @@ jobs: java-version: ${{ matrix.java-version }} cache: 'maven' - name: Run tests - run: mvn test --file pom.xml + run: mvn -ntp test --file pom.xml + version: + + needs: test + + outputs: + version: ${{ steps.version.outputs.version }} + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: 11 + cache: 'maven' + - name: version + run: | + echo version=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout` >> $GITHUB_OUTPUT snapshot: - needs: test + needs: [test, version] runs-on: ubuntu-latest @@ -48,8 +68,8 @@ jobs: server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD - name: Publish package - run: mvn -B deploy + run: mvn -ntp deploy env: MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - if: ${{ github.ref == 'refs/heads/master' && github.repository == 'jruby/jcodings' }} + if: ${{ contains('SNAPSHOT', needs.version.outputs.version) && github.ref == 'refs/heads/master' && github.repository == 'jruby/jcodings' }}