diff --git a/.github/workflows/build-debug-apk.yml b/.github/workflows/build-debug-apk.yml index 6f3fb94a..831f7042 100644 --- a/.github/workflows/build-debug-apk.yml +++ b/.github/workflows/build-debug-apk.yml @@ -20,7 +20,7 @@ jobs: distribution: 'temurin' java-version: 17 - run: ./gradlew clean && ./gradlew assembleDebug - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: app-debug.apk path: app/build/outputs/apk/debug/app-debug.apk diff --git a/CHANGELOG.md b/CHANGELOG.md index d3db9b70..9abff3a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,90 @@ ## [Unreleased] +## [v1.4.4] (70) Cursed be Android 16 again (2025-08-24) + +- Fixed keyboard height not immediately updating in Android 16 + + +## [v1.4.3] (69) Cursed be Android 16 (2025-06-29) + +### User + +- Fixed keyboard failing to spawn in Android 16 + +### Developer + +- Upgraded Android Gradle Plugin to 8.10.1 +- Fixed various Gradle-related deprecations +- Replaced `printStackTrace()` with logging +- Replaced `size()` and `length()` comparisons with `isEmpty()` check + + +## [v1.4.2] (68) 煮者 (2025-01-12) + +- Fixed candidate duplication when exact match is also a prefix match (者, 煮) +- Rewrote `addCodePointsToSet` as `toCodePointSet` +- Eliminated suffix Hungarian notation outside method names +- Improved Help > Miscellaneous table + - Put Function column before Action column in table + - Moved 'Retract keyboard' explanation into table +- Made minor edits to Privacy Policy + - English: added parenthetical "(English version)" + - Chinese: added parenthetical "(中文版)", reduced "不會" to "不", expanded "英文" to "英文版" +- Updated privacy policy button URL anchor for said minor edits + + +## [v1.4.1] (67) 不鏽鋼 (2024-12-29) + +- Updated stroke input data to [Conway Stroke Data v1.34.0] + - Adds phrases 喼汁, 矮瓜, 蜜棗 + - Adds phrases 縮骨, 縮骨遮 + - Adds phrases 生鏽, 不鏽鋼 + + +## [v1.4.0] (66) Cursed be edge-to-edge (2024-11-04) + +- Upgraded Android SDK to Level 35 + - Implemented keyboard edge-to-edge padding (bottom spacer) + - Opted out of Main Activity edge-to-edge (screw you Google) +- Fixed buggy key preview initialisation in landscape mode +- Changed Help/About link colour to blue + + +## [v1.3.1] (65) CMD v5.0.0 (2024-10-02) + +- Updated links for Conway-Markdown slug rename + + +## [v1.3.0] (64) 攀燓學覺里黑必 (2024-09-29) + +- Updated stroke input data to [Conway Stroke Data v1.33.1] + - Allows left-first order in 攀燓..., 學覺..., 興釁..., 與舉..., etc. + - Allows ㇑㇐㇐ instead of ㇐㇑㇐ in 里, 黑, etc. + - Allows ㇒ second-last instead of last in 必 etc. + - Adds phrases 審計署 and 統計署 (to complement -處 equivalents) + + +## [v1.2.10] (63) Cursed be BroadcastReceiver (2024-05-17) + +- Updated stroke input data to [Conway Stroke Data v1.32.0] + - Adds phrases 吖嘛, 拗撬, 詏撬, 揞口費, 幫襯, 搽𢰸, 鏨刺 + - Adds phrases 鐺底, 𥋇眼, 插贓嫁禍, 尋日, 黐鐺, 黐脷根 + - Adds phrases 長氣, 打冷震, 花紙, 家姐, 咁嚌, 腳趾尾, 乞人憎 + - Adds phrases 後尾, 後尾枕, 揦鮓, 垃雜, 老抽, 門棖, 生抽, 話齋 + - Adds phrases 矺住, 矺扁, 矺死, 㜺鬼, 爭在, 扎扎跳, 砧板, 枕住 + - Adds phrases 𠹻味, 𠹻𡃴, 陣間, 執笠, 執碼, 執生, 周時 + - Adds phrases 手㬹, 腳㬹, 鞋㬹 + - Adds phrase 輪候 +- Removed DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION (screw you Google) +- Upgraded Material Components For Android to 1.12.0 + + +## [v1.2.9] (62) Enter key fix (2024-02-27) + +- Fixed enter key to search not working in Google Play Store / crashing Aurora Store + + ## [v1.2.8] (61) 過海 (2023-12-03) - Updated stroke input data to [Conway Stroke Data v1.31.0] @@ -612,7 +696,25 @@ the actual functionality has not been implemented yet. [Unreleased]: - https://github.com/stroke-input/stroke-input-android/compare/v1.2.8...HEAD + https://github.com/stroke-input/stroke-input-android/compare/v1.4.4...HEAD +[v1.4.4]: + https://github.com/stroke-input/stroke-input-android/compare/v1.4.3...v1.4.4 +[v1.4.3]: + https://github.com/stroke-input/stroke-input-android/compare/v1.4.2...v1.4.3 +[v1.4.2]: + https://github.com/stroke-input/stroke-input-android/compare/v1.4.1...v1.4.2 +[v1.4.1]: + https://github.com/stroke-input/stroke-input-android/compare/v1.4.0...v1.4.1 +[v1.4.0]: + https://github.com/stroke-input/stroke-input-android/compare/v1.3.1...v1.4.0 +[v1.3.1]: + https://github.com/stroke-input/stroke-input-android/compare/v1.3.0...v1.3.1 +[v1.3.0]: + https://github.com/stroke-input/stroke-input-android/compare/v1.2.10...v1.3.0 +[v1.2.10]: + https://github.com/stroke-input/stroke-input-android/compare/v1.2.9...v1.2.10 +[v1.2.9]: + https://github.com/stroke-input/stroke-input-android/compare/v1.2.8...v1.2.9 [v1.2.8]: https://github.com/stroke-input/stroke-input-android/compare/v1.2.7...v1.2.8 [v1.2.7]: @@ -730,6 +832,12 @@ the actual functionality has not been implemented yet. [v0.1.0]: https://github.com/stroke-input/stroke-input-android/releases/tag/v0.1.0 +[Conway Stroke Data v1.34.0]: + https://github.com/stroke-input/stroke-input-data/releases/tag/v1.34.0 +[Conway Stroke Data v1.33.1]: + https://github.com/stroke-input/stroke-input-data/releases/tag/v1.33.1 +[Conway Stroke Data v1.32.0]: + https://github.com/stroke-input/stroke-input-data/releases/tag/v1.32.0 [Conway Stroke Data v1.31.0]: https://github.com/stroke-input/stroke-input-data/releases/tag/v1.31.0 [Conway Stroke Data v1.30.0]: diff --git a/PRIVACY-zh.md b/PRIVACY-zh.md index 64dc2152..429735e1 100644 --- a/PRIVACY-zh.md +++ b/PRIVACY-zh.md @@ -1,11 +1,11 @@ -# 私隱政策 +# 私隱政策(中文版) -**此應用程式(筆畫輸入法)不會收集任何個人資料。** +**此應用程式(筆畫輸入法)不收集任何個人資料。** 歡迎並鼓勵考察原碼,<>。 倘發現漏洞或私隱問題,請告諸 <>。 --- -[English version of Privacy Policy](PRIVACY.md#privacy-policy)
-(凡中英文有出入者,則以英文為主。) +[Privacy Policy (English version)](PRIVACY.md#privacy-policy-english-version)
+(凡中英文有出入者,則以英文版為主。) diff --git a/PRIVACY.md b/PRIVACY.md index 839f0138..927a341d 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -1,4 +1,4 @@ -# Privacy Policy +# Privacy Policy (English version) **This app (Stroke Input Method) does not collect any personal data.** @@ -9,6 +9,6 @@ please report to <>. --- -[私隱政策中文版](PRIVACY-zh.md#私隱政策)
+[私隱政策(中文版)](PRIVACY-zh.md#私隱政策中文版)
(If there be any discrepancy between the English and the Chinese, the English version shall prevail.) diff --git a/README.md b/README.md index c78ca4b4..a33bf001 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Uses [Conway Stroke Data]. [Get it on F-Droid.][f-droid] [ +**Copyright 2021–2025 Conway**
Licensed under the GNU General Public License v3.0 (GPL-3.0-only).
This is free software with NO WARRANTY etc. etc., see [LICENSE].
@@ -73,14 +73,11 @@ see [app/src/main/assets/about.html]. ### Miscellaneous -| Action | Function | +| Function | Action | | - | - | -| Horizontally swipe space-bar | Change language | -| Long press space-bar | Change to other keyboard | - -### Retract keyboard - -Use the system Back Button (or Back Gesture) to retract the keyboard. +| Retract keyboard | Use system Back Button (or Back Gesture) | +| Change language | Horizontally swipe space-bar | +| Change to other keyboard | Long press space-bar | ## Assets (for devs) @@ -88,7 +85,7 @@ Use the system Back Button (or Back Gesture) to retract the keyboa ### `*.cmd` (CMD) These are [Conway-Markdown (CMD)] files, -used to compile the HTML files by running Conway-Markdown +used to compile the HTML files by running `cmd --all` whilst in the root directory of this repository. ### `*.cmdr` (CMD Rules) @@ -123,4 +120,4 @@ This is the stylesheet for the HTML files that get served in the app. [app/src/main/assets/about.html]: https://htmlpreview.github.io/?https://github.com/stroke-input/stroke-input-android/blob/master/app/src/main/assets/about.html [Conway-Markdown (CMD)]: - https://github.com/conway-markdown/conway-markdown + https://github.com/conwaymd/conwaymd diff --git a/app/build.gradle b/app/build.gradle index 387e2fee..9903324f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,12 +9,16 @@ android { applicationId "io.github.yawnoc.strokeinput" minSdkVersion 24 - compileSdk 34 - targetSdkVersion 34 - versionCode 61 - versionName "1.2.8" + compileSdk 35 + targetSdkVersion 35 + versionCode 70 + versionName "1.4.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures + { + buildConfig true + } buildTypes { release @@ -38,8 +42,8 @@ android dependencies { - implementation 'com.google.android.material:material:1.10.0' + implementation 'com.google.android.material:material:1.12.0' testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + androidTestImplementation 'androidx.test.ext:junit:1.2.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b65dc375..9fe98f75 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,10 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" > + 关于 -

笔画输入法 (v1.2.8)

+

笔画输入法 (v1.4.4)

笔画输入法是自由开源软件,而恕无担保。

-© 2021–2023 Conway
+© 2021–2025 Conway
GPL-3.0-only 授权,见<https://www.gnu.org/licenses/>。

@@ -23,16 +23,16 @@

笔画输入法 (v1.2.8)

Apache-2.0 授权,见<https://www.apache.org/licenses/LICENSE-2.0.html>。

建件所倚靠的东西

-

Material Components For Android (v1.10.0)

+

Material Components For Android (v1.12.0)

-© 2023 Android 开源项目
+© 2024 Android 开源项目
Apache-2.0 授权,见<https://www.apache.org/licenses/LICENSE-2.0.html>。

笔画输入资料

-

Conway Stroke Data (v1.31.0)

+

Conway Stroke Data (v1.34.0)

sequence-characters.txt

-© 2021–2023 Conway
+© 2021–2024 Conway
CC-BY-4.0 授权,见<https://creativecommons.org/licenses/by/4.0/>。

@@ -59,7 +59,7 @@

Stroke Input Fon 以 Apache-2.0 授权,见<https://www.apache.org/licenses/LICENSE-2.0.html>。

diff --git a/app/src/main/assets/about-zh-Hant-HK.html b/app/src/main/assets/about-zh-Hant-HK.html index 51e94741..b2c89766 100644 --- a/app/src/main/assets/about-zh-Hant-HK.html +++ b/app/src/main/assets/about-zh-Hant-HK.html @@ -7,12 +7,12 @@ 關於 -

筆畫輸入法 (v1.2.8)

+

筆畫輸入法 (v1.4.4)

筆畫輸入法為自由開源軟件,而恕無擔保。

-© 2021–2023 Conway
+© 2021–2025 Conway
GPL-3.0-only 授權,見<https://www.gnu.org/licenses/>。

@@ -23,16 +23,16 @@

筆畫輸入法 (v1.2.8)

Apache-2.0 授權,見<https://www.apache.org/licenses/LICENSE-2.0.html>。

建件所靠者

-

Material Components For Android (v1.10.0)

+

Material Components For Android (v1.12.0)

-© 2023 Android 開源項目
+© 2024 Android 開源項目
Apache-2.0 授權,見<https://www.apache.org/licenses/LICENSE-2.0.html>。

筆畫輸入資料

-

Conway Stroke Data (v1.31.0)

+

Conway Stroke Data (v1.34.0)

sequence-characters.txt

-© 2021–2023 Conway
+© 2021–2024 Conway
CC-BY-4.0 授權,見<https://creativecommons.org/licenses/by/4.0/>。

@@ -59,7 +59,7 @@

Stroke Input Fon 以 Apache-2.0 授權,見<https://www.apache.org/licenses/LICENSE-2.0.html>。

diff --git a/app/src/main/assets/about-zh-Hant-TW.html b/app/src/main/assets/about-zh-Hant-TW.html index 6fa99ce0..644f5ab5 100644 --- a/app/src/main/assets/about-zh-Hant-TW.html +++ b/app/src/main/assets/about-zh-Hant-TW.html @@ -7,12 +7,12 @@ 關於 -

筆畫輸入法 (v1.2.8)

+

筆畫輸入法 (v1.4.4)

筆畫輸入法為自由開源軟體,而恕無擔保。

-© 2021–2023 Conway
+© 2021–2025 Conway
GPL-3.0-only 授權,見<https://www.gnu.org/licenses/>。

@@ -23,16 +23,16 @@

筆畫輸入法 (v1.2.8)

Apache-2.0 授權,見<https://www.apache.org/licenses/LICENSE-2.0.html>。

建體所靠者

-

Material Components For Android (v1.10.0)

+

Material Components For Android (v1.12.0)

-© 2023 Android 開源項目
+© 2024 Android 開源項目
Apache-2.0 授權,見<https://www.apache.org/licenses/LICENSE-2.0.html>。

筆畫輸入資料

-

Conway Stroke Data (v1.31.0)

+

Conway Stroke Data (v1.34.0)

sequence-characters.txt

-© 2021–2023 Conway
+© 2021–2024 Conway
CC-BY-4.0 授權,見<https://creativecommons.org/licenses/by/4.0/>。

@@ -59,7 +59,7 @@

Stroke Input Fon 以 Apache-2.0 授權,見<https://www.apache.org/licenses/LICENSE-2.0.html>。

diff --git a/app/src/main/assets/about.html b/app/src/main/assets/about.html index 8cdc1c2d..e8c2a631 100644 --- a/app/src/main/assets/about.html +++ b/app/src/main/assets/about.html @@ -7,13 +7,13 @@ About -

Stroke Input Method (v1.2.8)

+

Stroke Input Method (v1.4.4)

Stroke Input Method is free and open-source software with ABSOLUTELY NO WARRANTY.

-© 2021–2023 Conway
+© 2021–2025 Conway
Licensed under GPL-3.0-only, see <https://www.gnu.org/licenses/>.

@@ -26,16 +26,16 @@

Stroke Input Method (v1.2.8)

Licensed under Apache-2.0, see <https://www.apache.org/licenses/LICENSE-2.0.html>.

Build dependencies

-

Material Components For Android (v1.10.0)

+

Material Components For Android (v1.12.0)

-© 2023 The Android Open Source Project
+© 2024 The Android Open Source Project
Licensed under Apache-2.0, see <https://www.apache.org/licenses/LICENSE-2.0.html>.

Stroke input data

-

Conway Stroke Data (v1.31.0)

+

Conway Stroke Data (v1.34.0)

sequence-characters.txt

-© 2021–2023 Conway
+© 2021–2024 Conway
Licensed under CC-BY-4.0, see <https://creativecommons.org/licenses/by/4.0/>.

@@ -63,7 +63,7 @@

Stroke Input Fon Licensed under Apache-2.0, see <https://www.apache.org/licenses/LICENSE-2.0.html>.

diff --git a/app/src/main/assets/help-zh-Hans-CN.cmd b/app/src/main/assets/help-zh-Hans-CN.cmd index e5f4bc51..cb116d4a 100644 --- a/app/src/main/assets/help-zh-Hans-CN.cmd +++ b/app/src/main/assets/help-zh-Hans-CN.cmd @@ -73,28 +73,21 @@ OrdinaryDictionaryReplacement: #.boilerplate-properties-override '''' |^ // - ; 动作 ; 功能 + ; 动作 |: // - , 横扫 \space-bar-zh + , 收回键盘 + , 用系统返回按钮(或返回手势) +// , 转语言 + , 横扫 \space-bar-zh // - , 长按 \space-bar-zh , 转至其他键盘 + , 长按 \space-bar-zh '''' -## 收回键盘 - ----- -用系统__返回按钮__(或__返回手势__)来收回键盘。 ----- ----- -(若 Android~13+ __手势导航__不便,可考虑复还__“三按钮”导航__,并使用__返回按钮__。) ----- - -
此页的 [CMD] 源码: [cmd-source]
diff --git a/app/src/main/assets/help-zh-Hans-CN.html b/app/src/main/assets/help-zh-Hans-CN.html index 3db6b696..c87bcfbc 100644 --- a/app/src/main/assets/help-zh-Hans-CN.html +++ b/app/src/main/assets/help-zh-Hans-CN.html @@ -70,30 +70,27 @@

杂项

- + - + + + + + - +
动作 功能动作
横扫 ◀ 中文 ▶收回键盘用系统返回按钮(或返回手势)
转语言横扫 ◀ 中文 ▶
长按 ◀ 中文 ▶ 转至其他键盘长按 ◀ 中文 ▶
-

收回键盘

-

-用系统返回按钮(或返回手势)来收回键盘。 -

-

-(若 Android 13+ 手势导航不便,可考虑复还“三按钮”导航,并使用返回按钮。) -

diff --git a/app/src/main/assets/help-zh-Hant-HK.cmd b/app/src/main/assets/help-zh-Hant-HK.cmd index b67fcca8..2d7ceed3 100644 --- a/app/src/main/assets/help-zh-Hant-HK.cmd +++ b/app/src/main/assets/help-zh-Hant-HK.cmd @@ -74,28 +74,21 @@ OrdinaryDictionaryReplacement: #.boilerplate-properties-override '''' |^ // - ; 動作 ; 功能 + ; 動作 |: // - , 橫掃 \space-bar-zh + , 收回鍵盤 + , 以系統返回掣(或返回手勢) +// , 轉語言 + , 橫掃 \space-bar-zh // - , 長撳 \space-bar-zh , 轉至其他鍵盤 + , 長撳 \space-bar-zh '''' -## 收回鍵盤 - ----- -以系統__返回掣__(或__返回手勢__)而收回鍵盤。 ----- ----- -(若 Android~13+ __手勢導覽__不便,可考慮復還__三按鈕導覽__,並使用__反回掣__。) ----- - -
此頁之 [CMD] 源碼: [cmd-source]
diff --git a/app/src/main/assets/help-zh-Hant-HK.html b/app/src/main/assets/help-zh-Hant-HK.html index 6f1a2894..c6ea0f29 100644 --- a/app/src/main/assets/help-zh-Hant-HK.html +++ b/app/src/main/assets/help-zh-Hant-HK.html @@ -70,30 +70,27 @@

雜項

- + - + + + + + - +
動作 功能動作
橫掃 ◀ 中文 ▶收回鍵盤以系統返回掣(或返回手勢)
轉語言橫掃 ◀ 中文 ▶
長撳 ◀ 中文 ▶ 轉至其他鍵盤長撳 ◀ 中文 ▶
-

收回鍵盤

-

-以系統返回掣(或返回手勢)而收回鍵盤。 -

-

-(若 Android 13+ 手勢導覽不便,可考慮復還三按鈕導覽,並使用反回掣。) -

diff --git a/app/src/main/assets/help-zh-Hant-TW.cmd b/app/src/main/assets/help-zh-Hant-TW.cmd index 8d6e373c..4fc63856 100644 --- a/app/src/main/assets/help-zh-Hant-TW.cmd +++ b/app/src/main/assets/help-zh-Hant-TW.cmd @@ -74,28 +74,21 @@ OrdinaryDictionaryReplacement: #.boilerplate-properties-override '''' |^ // - ; 動作 ; 功能 + ; 動作 |: // - , 橫掃 \space-bar-zh + , 收回鍵盤 + , 以系統返回按鈕(或返回手勢) +// , 轉語言 + , 橫掃 \space-bar-zh // - , 長按 \space-bar-zh , 轉至其他鍵盤 + , 長按 \space-bar-zh '''' -## 收回鍵盤 - ----- -以系統__返回按鈕__(或__返回手勢__)而收回鍵盤。 ----- ----- -(若 Android~13+ __手勢操作__不便,可考慮復還__三按鈕操作__,並使用__返回按鈕__。) ----- - -
此頁之 [CMD] 原始程式: [cmd-source]
diff --git a/app/src/main/assets/help-zh-Hant-TW.html b/app/src/main/assets/help-zh-Hant-TW.html index f8f197a9..adb4df97 100644 --- a/app/src/main/assets/help-zh-Hant-TW.html +++ b/app/src/main/assets/help-zh-Hant-TW.html @@ -70,30 +70,27 @@

雜項

- + - + + + + + - +
動作 功能動作
橫掃 ◀ 中文 ▶收回鍵盤以系統返回按鈕(或返回手勢)
轉語言橫掃 ◀ 中文 ▶
長按 ◀ 中文 ▶ 轉至其他鍵盤長按 ◀ 中文 ▶
-

收回鍵盤

-

-以系統返回按鈕(或返回手勢)而收回鍵盤。 -

-

-(若 Android 13+ 手勢操作不便,可考慮復還三按鈕操作,並使用返回按鈕。) -

diff --git a/app/src/main/assets/help.cmd b/app/src/main/assets/help.cmd index 0b9c511b..a8c8b951 100644 --- a/app/src/main/assets/help.cmd +++ b/app/src/main/assets/help.cmd @@ -73,29 +73,21 @@ OrdinaryDictionaryReplacement: #.boilerplate-properties-override '''' |^ // - ; Action ; Function + ; Action |: // - , Horizontally swipe \space-bar-en + , Retract keyboard + , Use system Back Button (or Back Gesture) +// , Change language + , Horizontally swipe \space-bar-en // - , Long press \space-bar-en , Change to other keyboard + , Long press \space-bar-en '''' -## Retract keyboard - ----- -Use the system __Back Button__ (or __Back Gesture__) to retract the keyboard. ----- ----- -(If Android~13+ __Gesture Navigation__ is inconvenient, -consider reverting to __3-Button Navigation__ and using the __Back Button__.) ----- - -
This page's [CMD] source: [cmd-source]
diff --git a/app/src/main/assets/help.html b/app/src/main/assets/help.html index 6e47b068..e757c8d2 100644 --- a/app/src/main/assets/help.html +++ b/app/src/main/assets/help.html @@ -70,31 +70,27 @@

Miscellaneous

- + - + + + + + - +
Action FunctionAction
Horizontally swipe ◀ English ▶Retract keyboardUse system Back Button (or Back Gesture)
Change languageHorizontally swipe ◀ English ▶
Long press ◀ English ▶ Change to other keyboardLong press ◀ English ▶
-

Retract keyboard

-

-Use the system Back Button (or Back Gesture) to retract the keyboard. -

-

-(If Android 13+ Gesture Navigation is inconvenient, -consider reverting to 3-Button Navigation and using the Back Button.) -

diff --git a/app/src/main/assets/links.cmdr b/app/src/main/assets/links.cmdr index 0bc28d64..0ed8df0f 100644 --- a/app/src/main/assets/links.cmdr +++ b/app/src/main/assets/links.cmdr @@ -15,12 +15,12 @@ OrdinaryDictionaryReplacement: #.links.license-links OrdinaryDictionaryReplacement: #.links.software-properties - queue_position: BEFORE #explicit-links - apply_mode: SIMULTANEOUS -* \stroke-input-version --> v1.2.8 -* \stroke-input-years --> 2021--2023 -* \material-version --> v1.10.0 -* \material-years --> 2023 -* \stroke-data-version --> v1.31.0 -* \sequence-characters-years --> 2021--2023 +* \stroke-input-version --> v1.4.4 +* \stroke-input-years --> 2021--2025 +* \material-version --> v1.12.0 +* \material-years --> 2024 +* \stroke-data-version --> v1.34.0 +* \sequence-characters-years --> 2021--2024 * \stroke-font-version --> v2.0.1 * \stroke-font-years --> 2021--2022 @@ -40,7 +40,7 @@ OrdinaryDictionaryReplacement: #.links.link-definitions [Stroke Input Font]: https://github.com/stroke-input/stroke-input-font [2015 version of Noto Sans CJK TC]: \noto-cjk-url [2015 版 {Noto Sans CJK TC}]: \noto-cjk-url - [CMD]: https://github.com/conway-markdown/conway-markdown + [CMD]: https://github.com/conwaymd/conwaymd * \stroke-input-url --> https://github.com/stroke-input/stroke-input-android * \noto-cjk-url --> diff --git a/app/src/main/assets/phrases-simplified.txt b/app/src/main/assets/phrases-simplified.txt index c52f4cf1..60f7147b 100644 --- a/app/src/main/assets/phrases-simplified.txt +++ b/app/src/main/assets/phrases-simplified.txt @@ -481,6 +481,7 @@ 不配 不重要 不重视 +不锈钢 不错 不限 不限于 @@ -949,6 +950,7 @@ 九龙塘 九龙湾 乞丐 +乞人憎 乞儿 乞嗤 乞求 @@ -1057,6 +1059,7 @@ 争取 争吵 争啲 +争在 争夺 争执 争拗 @@ -5100,6 +5103,8 @@ 后土 后天 后妃 +后尾 +后尾枕 后年 后座 后悔 @@ -5149,6 +5154,7 @@ 吓死我 吕宋 吕氏 +吖嘛 吗啡 君主 君主制 @@ -5311,6 +5317,7 @@ 周年 周恩来 周旋 +周时 周期 周期表 周末 @@ -5346,6 +5353,7 @@ 命苦 命运 咀嚼 +咁哜 咁啱 咁啱慨 咁样 @@ -5679,6 +5687,7 @@ 喺处 喺度 喺边 +喼汁 嗅觉 嗍气 嗍水 @@ -6081,6 +6090,7 @@ 垃圾篸 垃圾袋 垃圾车 +垃杂 垄断 型号 型式 @@ -7393,6 +7403,7 @@ 审理 审计 审计处 +审计署 审计部 审订 审议 @@ -7456,6 +7467,7 @@ 家俬 家具 家务 +家姐 家属 家常 家常便饭 @@ -7595,6 +7607,7 @@ 寻人启事 寻宝 寻找 +寻日 寻桥 寻死 寻求 @@ -8163,6 +8176,7 @@ 帮忙 帮派 帮补 +帮衬 帷幄 常人 常任 @@ -9679,6 +9693,7 @@ 手踭 手软 手鈪 +手㬹 才会 才华 才可 @@ -9692,6 +9707,7 @@ 才貌双全 扎头发 扎实 +扎扎跳 扎花 扎营 扎醒 @@ -9720,6 +9736,7 @@ 打倒 打假波 打关斗 +打冷震 打出 打击 打劫 @@ -9821,9 +9838,12 @@ 执死鸡 执法 执照 +执生 执着 +执码 执笔 执笔忘字 +执笠 执行 执迷不悟 执骨 @@ -10232,6 +10252,7 @@ 拖走 拖车 拖鞋 +拗撬 拘押 拘束 拘留 @@ -10667,12 +10688,15 @@ 插秧 插花 插苏 +插赃嫁祸 +揞口费 握住 握手 握笔 握紧 揣摩 揣测 +揦鲊 揩油 揩花 揭发 @@ -10747,6 +10771,7 @@ 搭𨋢 携带 携手 +搽𢰸 摄取 摄影 摄影师 @@ -12763,6 +12788,7 @@ 枉顾 枋子 枓栱 +枕住 枕头 枕头套 枕头布 @@ -17698,6 +17724,7 @@ 生意人 生意兴隆 生手 +生抽 生擒 生效 生日 @@ -17751,6 +17778,7 @@ 生辰 生还 生铁 +生锈 生长 生面 生面孔 @@ -18884,6 +18912,7 @@ 矮凳 矮化 矮小 +矮瓜 矮细 石器 石器时代 @@ -18919,6 +18948,9 @@ 石阶 石雕 石龙 +矺住 +矺扁 +矺死 矽烷 矽肺 矽谷 @@ -18966,6 +18998,7 @@ 砖头 砚台 砥砺 +砧板 破产 破伤风 破例 @@ -20600,6 +20633,7 @@ 统计处 统计学 统计局 +统计署 统读 统领 绢帛 @@ -20771,6 +20805,8 @@ 缩短 缩紧 缩细 +缩骨 +缩骨遮 缭乱 缭绕 缮写 @@ -21026,6 +21062,7 @@ 老弱 老成 老手 +老抽 老挝 老旧 老朋友 @@ -21550,6 +21587,7 @@ 脚趾 脚趾公 脚趾头 +脚趾尾 脚趾甲 脚跟 脚踏 @@ -21558,6 +21596,7 @@ 脚踭 脚软 脚面 +脚㬹 脱光 脱发 脱口 @@ -22080,6 +22119,7 @@ 花粉 花粉症 花红 +花纸 花纹 花胶 花臣 @@ -22844,6 +22884,7 @@ 蜘蛛网 蜚蠊 蜜月 +蜜枣 蜜柑 蜜汁 蜜瓜 @@ -23450,6 +23491,7 @@ 言语 言谈 言辞 +詏撬 誊写 誊本 誊清 @@ -23801,6 +23843,7 @@ 话事 话事权 话剧 +话斋 话明 话说 话题 @@ -24885,6 +24928,7 @@ 转送 转速 轮休 +轮候 轮值 轮到 轮回 @@ -26158,6 +26202,7 @@ 鋭敏 鋭气 鋭角 +錾刺 鎅刀 鎅票 针头 @@ -26278,6 +26323,7 @@ 铅笔刨 铅芯 铅芯笔 +铛底 铜像 铜器时代 铜币 @@ -26474,6 +26520,7 @@ 长期 长枪 长毛 +长气 长江 长沙 长沙湾 @@ -26511,6 +26558,7 @@ 门市 门徒 门户 +门枨 门框 门楣 门槛 @@ -26736,6 +26784,7 @@ 阵线 阵脚 阵营 +阵间 阵阵 阵雨 阶层 @@ -27364,6 +27413,7 @@ 鞋袜 鞋跟 鞋踭 +鞋㬹 鞍马 鞑靼 鞠躬 @@ -28744,7 +28794,9 @@ 黐肺 黐胶 黐胶水 +黐脷根 黐脷筋 +黐铛 黐镬 黐餐 黐𣲷𣲷 @@ -28951,6 +29003,7 @@ 龟苓膏 龟裂 龟鉴 +㜺鬼 㨆庄 㨆班 㷛剧 @@ -28967,6 +29020,8 @@ 䲞鱼 𠝹刀 𠝹票 +𠹻味 +𠹻𡃴 𠺘口 𠺘口水 𠺘口盅 @@ -28981,6 +29036,7 @@ 𣲷𣲷 𤓓味 𤷪𤺧 +𥋇眼 𥹉𥹉 𦉘盖 𦧺嘢 diff --git a/app/src/main/assets/phrases-traditional.txt b/app/src/main/assets/phrases-traditional.txt index c263ed8d..f145621b 100644 --- a/app/src/main/assets/phrases-traditional.txt +++ b/app/src/main/assets/phrases-traditional.txt @@ -567,7 +567,9 @@ 不配 不重要 不重視 +不銹鋼 不錯 +不鏽鋼 不限 不限於 丐助 @@ -793,6 +795,7 @@ 九龍塘 九龍灣 乞丐 +乞人憎 乞兒 乞嗤 乞求 @@ -4179,6 +4182,7 @@ 向日葵 向西 向量 +吖嘛 君主 君主制 君子 @@ -4298,6 +4302,7 @@ 周圍 周恩來 周旋 +周時 周邊 味全 味精 @@ -4332,6 +4337,7 @@ 咀嚼 咁啱 咁啱嘅 +咁嚌 咁樣 咁鬼 咄咄 @@ -4678,6 +4684,7 @@ 喺度 喺處 喺邊 +喼汁 嗅覺 嗍氣 嗍水 @@ -5073,6 +5080,7 @@ 垃圾篸 垃圾袋 垃圾車 +垃雜 型式 型態 型號 @@ -5106,7 +5114,10 @@ 執死鷄 執法 執照 +執生 執着 +執碼 +執笠 執筆 執筆忘字 執著 @@ -6406,6 +6417,7 @@ 家人 家具 家務 +家姐 家屬 家常 家常便飯 @@ -6527,6 +6539,7 @@ 審理 審訂 審計 +審計署 審計處 審計部 審議 @@ -6645,6 +6658,7 @@ 尋人啟事 尋寶 尋找 +尋日 尋橋 尋死 尋求 @@ -7186,6 +7200,7 @@ 幫忙 幫派 幫補 +幫襯 干擾 干支 干涉 @@ -7654,6 +7669,8 @@ 後台 後園 後天 +後尾 +後尾枕 後年 後座 後悔 @@ -8569,6 +8586,7 @@ 手鎗 手頭 手頭上 +手㬹 才可 才子 才會 @@ -8581,6 +8599,7 @@ 才貌 才貌雙全 扎實 +扎扎跳 扎營 扎花 扎醒 @@ -8604,6 +8623,7 @@ 打倒 打假波 打傷 +打冷震 打出 打劫 打包 @@ -9030,6 +9050,7 @@ 拖走 拖車 拖鞋 +拗撬 拘押 拘束 拘留 @@ -9441,6 +9462,7 @@ 插秧 插花 插蘇 +插贓嫁禍 插電 插頭 揚名 @@ -9458,12 +9480,14 @@ 換衫 換褲 換言之 +揞口費 握住 握手 握筆 握緊 揣摩 揣測 +揦鮓 揩油 揩花 揭幕 @@ -9559,6 +9583,7 @@ 搶購 搶走 搶錢 +搽𢰸 搾取 搾汁 搾汁機 @@ -11447,6 +11472,7 @@ 枉顧 枋子 枓栱 +枕住 枕木 枕邊 枕頭 @@ -16338,6 +16364,7 @@ 爭取 爭吵 爭啲 +爭在 爭執 爭奪 爭拗 @@ -17201,6 +17228,7 @@ 生態 生態平衡 生手 +生抽 生擒 生效 生日 @@ -17258,6 +17286,8 @@ 生路 生辰 生還 +生銹 +生鏽 生鐵 生長 生面孔 @@ -18514,6 +18544,7 @@ 矮凳 矮化 矮小 +矮瓜 矮細 矯健 矯形 @@ -18555,6 +18586,9 @@ 石雕 石頭 石龍 +矺住 +矺扁 +矺死 矽烷 矽肺 矽谷 @@ -18591,6 +18625,7 @@ 研討 研討會 砥礪 +砧板 砲台 砲臺 破例 @@ -20199,6 +20234,7 @@ 統計 統計學 統計局 +統計署 統計處 統讀 統領 @@ -20438,6 +20474,8 @@ 縮細 縮緊 縮頭烏龜 +縮骨 +縮骨遮 縱使 縱容 縱橫 @@ -20848,6 +20886,7 @@ 老弱 老成 老手 +老抽 老撾 老朋友 老歌 @@ -21505,6 +21544,7 @@ 腳背 腳趾 腳趾公 +腳趾尾 腳趾甲 腳趾頭 腳跟 @@ -21514,6 +21554,7 @@ 腳踭 腳軟 腳面 +腳㬹 腸仔 腸子 腸炎 @@ -22069,6 +22110,7 @@ 花粉症 花紅 花紋 +花紙 花膠 花臣 花花 @@ -22899,6 +22941,7 @@ 蜚蠊 蜜月 蜜柑 +蜜棗 蜜汁 蜜瓜 蜜糖 @@ -23802,6 +23845,7 @@ 註音 註音符號 詆毀 +詏撬 詐取 詐欺 詐死 @@ -23891,6 +23935,7 @@ 話說 話説 話題 +話齋 該名 該死 該當 @@ -25393,6 +25438,7 @@ 輩出 輩分 輪休 +輪候 輪值 輪到 輪廓 @@ -27027,6 +27073,7 @@ 鏤刻 鏤版 鏤空 +鏨刺 鐘擺 鐘樓 鐘錶 @@ -27060,6 +27107,7 @@ 鐵飯碗 鐵餅 鐵馬 +鐺底 鑄模 鑄造 鑄鐵 @@ -27128,6 +27176,7 @@ 長期 長槍 長毛 +長氣 長江 長沙 長沙灣 @@ -27170,6 +27219,7 @@ 門徒 門戶 門框 +門棖 門楣 門檻 門牌 @@ -27558,6 +27608,7 @@ 陣綫 陣線 陣腳 +陣間 陣陣 陣雨 除了 @@ -28428,6 +28479,7 @@ 鞋襪 鞋跟 鞋踭 +鞋㬹 鞍馬 鞏固 鞏膜 @@ -30234,9 +30286,11 @@ 黐線 黐罉 黐肺 +黐脷根 黐脷筋 黐膠 黐膠水 +黐鐺 黐鑊 黐餐 黐𣲷𣲷 @@ -30526,6 +30580,7 @@ 龜裂 龜鑑 龜鑒 +㜺鬼 㨆班 㨆莊 㷛乾水 @@ -30541,6 +30596,8 @@ 䱽魚 𠝹刀 𠝹票 +𠹻味 +𠹻𡃴 𠺘口 𠺘口水 𠺘口盅 @@ -30555,6 +30612,7 @@ 𣲷𣲷 𤓓味 𤷪𤺧 +𥋇眼 𥹉𥹉 𦉘蓋 𦧺嘢 diff --git a/app/src/main/assets/sequence-characters.txt b/app/src/main/assets/sequence-characters.txt index d5366933..92bb5d3c 100644 --- a/app/src/main/assets/sequence-characters.txt +++ b/app/src/main/assets/sequence-characters.txt @@ -3,7 +3,7 @@ # Part of 'Conway Stroke Data', # see . -# Copyright 2021--2023 Conway. +# Copyright 2021--2024 Conway. # Licensed under Creative Commons Attribution 4.0 International (CC-BY-4.0), # see . @@ -307,6 +307,7 @@ 11112512433541 誚 11112512434525125121 譡 111125124345251254311214444 讜 +111125124345251254312114444 讜 1111251251 訊 11112512511 䛁 111125125111 詚詛 @@ -428,6 +429,7 @@ 11112513123453 誘 111125131234531 諉 1111251312511121 諥 +1111251312511211 諥 11112513132 䛂 11112513134 訞䚺 1111251313425125251 譑 @@ -715,6 +717,8 @@ 11112514535 訦 111125145351234 𧨾 1111251454 這 +111125145434 䛑 +11112514543425221 謐 11112514544 悥訫 111125145443 䛑 11112514544325221 謐 @@ -1034,6 +1038,7 @@ 11211113431234 瑧 1121112 玕玗 11211121 玨 +11211121112145434 璱 11211121112145443 璱 112111211234 琹 112111211515 琵 @@ -1046,6 +1051,7 @@ 11211121353134 璈 112111213535 琵 112111214 珏 +1121112145434 瑟 1121112145443 瑟 112111215215 琶 11211121533134 璈 @@ -1318,6 +1324,7 @@ 112125111535 琨 112125111553 琨 112125112 玾珅 +11212511211 理 112125112112112 㻫 1121251121123241112154 䨼 11212511243135 靗 @@ -1438,7 +1445,11 @@ 11213152134 琁 11213155414 珻 11213155441 珻 +112132111252511134 璵 +112132111253511134 璵 1121321113554 瑖 +11213211152511134 璵 +11213211153511134 璵 112132154 玳 1121322 玔 112132411121 琟 @@ -1719,6 +1730,7 @@ 112145341234 琛 112145351234 琛 1121454 迋 +112145434 珌 112145443 珌 11214554 迋 11215 匞玌 @@ -2089,6 +2101,7 @@ 112343134 祅 1123431341312343434 斄 112343134132511121 釐 +112343134132511211 釐 112343134132534 漦 112343134133112 犛 112343134133115 氂 @@ -2175,6 +2188,7 @@ 112344351523 祶 11234451251112 禈 112344525114134 䄙 +1123445434 祕 1123445443 祕 112345 礼 112345114554 祲 @@ -2214,6 +2228,7 @@ 11311222121 型 1131122511135 䙹 113112254311214444 䵤 +113112254312114444 䵤 11311232411121 雃 11311232511154444 鳽 113112333 形 @@ -2245,6 +2260,7 @@ 113225221 㿼 11322534 汬 1132254311214444 䵤 +1132254312114444 䵤 113232411121 雃 113232511154444 鳽 1132333 形 @@ -2299,6 +2315,7 @@ 113425351234 椝 113425351251254312 鬶 1134254311214444 䵡 +1134254312114444 䵡 113431112111 䨿 1134311121112154 㪪 113432511154444 鳺鴌 @@ -3255,6 +3272,7 @@ 121125444441431251112 騿 1211254444414312511121 䮵 12112544444143125111515111 䮾 +1211254444414312511211 䮵 12112544444143135111515111 䮾 12112544444143135411515111 䮾 121125444441432512251 䮰 @@ -3299,6 +3317,7 @@ 12112544444532411121 䮤 12112544444535 馾 1211254444454 遤 +121125444445434 駜 121125444445443 駜 12112544444554 遤 1211254444511112 䮇 @@ -3396,6 +3415,7 @@ 121132543112 揇 1211325431121344 擜 12113254311214444121 壥 +12113254312114444121 壥 1211331234312342121 壢攊 1211332511234 塬 12113344 坺拔 @@ -3831,6 +3851,9 @@ 121212342433541 䔠 12121234251 莕 1212123425111 葙 +121212343112521234453444445215333 䖇 +121212343112521234453444445235333 䖇 +121212343112521234453444445253333 䖇 121212343155414 䔦 121212343155441 䔦 12121234324111214444 藮 @@ -4516,6 +4539,7 @@ 121225111543341134 藈 121225111544331134 藈 121225111553 菎 +12122511211 荲 121225112112112 蓽 1212251122111 葺 12122511221111534 蕺 @@ -4720,6 +4744,7 @@ 12122535251 莔 1212254311214444121251 䕸 121225431134551 蔨 +1212254312114444121251 䕸 121225431415 菵 121225525251 萵 1212255252514454 薖 @@ -4816,8 +4841,12 @@ 121231234534 萟 1212312511121 董 12123125111214444 薫 +1212312511211 董 +12123125112114444 薫 121231254311214444 薰 12123125431121444453 蘍 +121231254312114444 薰 +12123125431211444453 蘍 12123134 芺 121231342344 菾 1212313425125251 蕎 @@ -4827,11 +4856,19 @@ 12123155441 莓 121231554413134554234 蘩 12123211 芢 +121232111252511134 藇 +121232111253511134 藇 1212321113554 葮 +12123211152511134 藇 +12123211153511134 藇 1212321121 荏 12123211212511 蒨 12123211212521 蒨 12123211213511 蒨 +12123211251125114512535113453 虋 +12123211251251511134 䕟 +121232112512515114512535113453 虋 +12123211251515114512535113453 虋 12123211511254 蓃 1212321151134 萸 1212321152 茚 @@ -5083,6 +5120,7 @@ 12123443521 莩 12123443531 荽 121234435332511121 薶 +121234435332511211 薶 121234435333251135 藐 12123443542554545 薍 12123443554134 蒵 @@ -5174,6 +5212,7 @@ 12123531234132511134 蘔 121235321511 萏 12123532511121 䔆 +12123532511211 䔆 1212353251214 葻 12123533 芴 12123533312 䓄 @@ -5369,6 +5408,7 @@ 121241431251112 蔁 1212414312511121 蕫 12124143125111515111 蘢 +1212414312511211 蕫 121241431251135 䔔 12124143125114544 薏 12124143125152 蔀 @@ -5458,6 +5498,7 @@ 121243452511523 撐 1212434525125121 壋擋 12124345251254311214444 攩 +12124345251254312114444 攩 121243452513112 撑 121243511 垱挡 1212435554444 蒍 @@ -5583,6 +5624,8 @@ 121244535445411234 䕓 121244535455 菀 12124454143112 䔂 +121244545434251214 藌 +121244545434252 蔤 1212445454425112 䔭 121244545442522112 薴 121244545443251214 藌 @@ -5623,6 +5666,7 @@ 12124535251354 蒬 121245354251 搁 1212454 芝 +121245434 苾 12124544 芯 121245443 苾 1212454445444544 蕊 @@ -5667,6 +5711,7 @@ 1212511154 捑 12125111553 堒掍 12125112 坤抻押 +1212511211 埋捚 12125112112112 𢳂 121251121251 喆 121251121251121251 嚞 @@ -6016,6 +6061,7 @@ 1212533121325114 蕏 12125331234132511134 蘔 12125332511121 䔆 +12125332511211 䔆 12125333312 䓄 1212533341253511 蕕 1212533431253511 蕕 @@ -6079,6 +6125,9 @@ 121254311214444 㩏 121254311214444534 䵧 121254311214444543 䵧 +121254312114444 㩏 +121254312114444534 䵧 +121254312114444543 䵧 12125431234 䅃 12125431252 堈掆 1212543341134 葵 @@ -6245,9 +6294,11 @@ 121312511121 堹揰 12131251113533 塲摥 1213125112 挿 +121312511211 堹揰 121312511354 㙏 1213125125221 塩 12131254311214444 壎 +12131254312114444 壎 1213132 抍 1213134 坆扷攻 12131342344 掭 @@ -6304,8 +6355,18 @@ 1213155441 挴㙁 12131554413134554234 㩯 12132 卉 +12132111252511134112 攑 +121321112525111343112 㩮 +12132111253511134112 攑 +121321112535111343112 㩮 121321113554 塅 +1213211152511134112 攑 +12132111525111343112 㩮 +1213211153511134112 攑 +12132111535111343112 㩮 121321121 拰 +12132113434511452511135 攪 +1213211343451145521 㙾㩭 1213211511254 搜 12132121 坵拞 12132121252 捳 @@ -6869,6 +6930,8 @@ 12141323544 掖 121413251112134121 㙻 121413251112135121 㙻 +121413251121134121 㙻 +121413251121135121 㙻 121413312154 㨩 1214133121554 㨩 12141332124 捬 @@ -6962,6 +7025,7 @@ 12141431251112 墇 121414312511121 墥撞 1214143125111515111 壠攏 +121414312511211 墥撞 12141431251135 境摬 12141431331121 摌 1214143135111515111 壠攏 @@ -7211,6 +7275,7 @@ 121445355 挖 121445355113251 㩈 1214453553 㙀 +12144545434252 㨸 12144545442522112 擰 12144545443252 㨸 12144551251 捾 @@ -7296,6 +7361,7 @@ 121453535544544 慤 1214535413554 䐨 12145354544 悫 +12145434 㧙 1214544 志抋 12145442511135 覟 12145443 㧙 @@ -7485,6 +7551,7 @@ 12154132511 瓸 12154132511121 甅 12154132511134 䪺 +12154132511211 甅 121541341251112 撪 1215413425121 㨧 12154134333 掺 @@ -7502,6 +7569,7 @@ 121542511121 瓼 1215425111515 㨢 1215425112 埇捅 +121542511211 瓼 121542511251211511 鼁 12154251135345 朅 1215425113535 㨢 @@ -7799,6 +7867,7 @@ 12211144545442522112 聹 1221114525114134 䏃 1221114535 耽 +12211145434 䎵 1221114544 恥 12211145443 䎵 1221115 耴䎲 @@ -8067,6 +8136,9 @@ 12212342433541 䔠 1221234251 莕 122123425111 葙 +12212343112521234453444445215333 䖇 +12212343112521234453444445235333 䖇 +12212343112521234453444445253333 䖇 12212343155414 䔦 12212343155441 䔦 1221234324111214444 藮 @@ -8376,6 +8448,7 @@ 122125112445512514544 䪀 122125112445531 鞍 122125112451251112 䩵 +12212511245434 䩛 12212511245443 䩛 12212511251111254 鞬 122125112511112554 鞬 @@ -8975,6 +9048,7 @@ 12225111543341134 藈 12225111544331134 藈 12225111553 菎 +1222511211 荲 12225112112112 蓽 122251122111 葺 1222511221111534 蕺 @@ -9187,6 +9261,7 @@ 1222535251 莔 122254311214444121251 䕸 12225431134551 蔨 +122254312114444121251 䕸 12225431415 菵 12225525251 萵 122255252514454 薖 @@ -9283,8 +9358,12 @@ 12231234534 萟 122312511121 董 1223125111214444 薫 +122312511211 董 +1223125112114444 薫 12231254311214444 薰 1223125431121444453 蘍 +12231254312114444 薰 +1223125431211444453 蘍 1223134 芺 12231342344 菾 122313425125251 蕎 @@ -9296,11 +9375,19 @@ 1223155441 莓 12231554413134554234 蘩 1223211 芢 +12232111252511134 藇 +12232111253511134 藇 122321113554 葮 +1223211152511134 藇 +1223211153511134 藇 122321121 荏 1223211212511 蒨 1223211212521 蒨 1223211213511 蒨 +1223211251125114512535113453 虋 +1223211251251511134 䕟 +12232112512515114512535113453 虋 +1223211251515114512535113453 虋 1223211511254 蓃 122321151134 萸 122321152 茚 @@ -9547,6 +9634,7 @@ 1223443521 莩 1223443531 荽 12234435332511121 薶 +12234435332511211 薶 12234435333251135 藐 1223443542554545 薍 1223443554134 蒵 @@ -9643,6 +9731,7 @@ 1223531354 莸 12235321511 萏 1223532511121 䔆 +1223532511211 䔆 122353251214 葻 1223533 芴 1223533312 䓄 @@ -9846,6 +9935,7 @@ 12241431251112 蔁 122414312511121 蕫 1224143125111515111 蘢 +122414312511211 蕫 12241431251135 䔔 1224143125114544 薏 1224143125152 蔀 @@ -10069,6 +10159,8 @@ 12244535445411234 䕓 12244535455 菀 1224454143112 䔂 +12244545434251214 藌 +12244545434252 蔤 122445454425112 䔭 12244545442522112 薴 12244545443251214 藌 @@ -10125,6 +10217,7 @@ 1224535451 莺 122454 芝 122454334 荧 +12245434 苾 1224544 芯 12245443 苾 122454445444544 蕊 @@ -10255,6 +10348,7 @@ 1225135124 尅 1225135132511 兡 1225135132511121 兣 +1225135132511211 兣 122513522 剋 12251352252 䓛 12251353 苨 @@ -10377,6 +10471,7 @@ 1225331344 获 1225331354 莸 1225332511121 䔆 +1225332511211 䔆 1225333312 䓄 122533341253511 蕕 122533431253511 蕕 @@ -10655,6 +10750,7 @@ 1234121225221134543 櫗 12341212312135 㮱 12341212312511121 㯵 +12341212312511211 㯵 123412123215 椛 123412123235 椛 1234121232411121321511 欍 @@ -10681,6 +10777,7 @@ 1234121251112321521512 櫹 123412125111235521512 櫹 12341212511134 槓 +12341212511211 榸 123412125112321521512 櫹 12341212511235521512 櫹 12341212513234 榬 @@ -10783,6 +10880,7 @@ 123412225221134543 櫗 1234122312135 㮱 1234122312511121 㯵 +1234122312511211 㯵 12341223215 椛 12341223235 椛 123412232411121321511 欍 @@ -11225,6 +11323,7 @@ 1234211225221134543 櫗 12342112312135 㮱 12342112312511121 㯵 +12342112312511211 㯵 123421123215 椛 123421123235 椛 1234211232411121321511 欍 @@ -11302,6 +11401,7 @@ 1234243452511523 橕 12342434525125121 檔 123424345251254311214444 欓 +123424345251254312114444 欓 12342434525135 𣗋 1234243511 档 1234244125441 㮓 @@ -11341,6 +11441,7 @@ 123425111535 棍 123425111553 棍 123425112 柙柛 +12342511211 梩 123425112112112 㮿 123425112141 椢 1234251122111 楫 @@ -11485,6 +11586,9 @@ 1234311222214444 橅 12343112251 梏 1234311234 株 +12343112521234453444445215333 鬱 +12343112521234453444445235333 鬱 +12343112521234453444445253333 鬱 1234311253134 楔 12343112533112 㮮 123431132411121 権 @@ -11514,8 +11618,10 @@ 1234312344334 楸 123431234531 㮃 1234312511121 㮔 +1234312511211 㮔 1234312511354 椱 123431254311214444 櫄 +123431254312114444 櫄 12343132 枡 1234313234 㭚 12343134 枖枚 @@ -11547,8 +11653,17 @@ 12343155414 梅 12343155441 梅 12343211 𣏴 +123432111252511134112 櫸 +1234321112525111343112 欅 +123432111253511134112 櫸 +1234321112535111343112 欅 1234321113554 椴 +12343211152511134112 櫸 +123432111525111343112 欅 +12343211153511134112 櫸 +123432111535111343112 欅 1234321121 栣 +12343211343451145521 㰒 12343211511254 㮴 1234321151134 楰 12343212134 梹 @@ -11787,7 +11902,22 @@ 123434341211121111534 櫼 123434341211121111543 櫼 123434341234 棥 +123434341234134 樊 +12343434123413413251 礬 +123434341234134132511134 䫶 +123434341234134251214 蠜 +1234343412341343112 攀 +123434341234134413534 䙪 +12343434123425221511211124 欝 +1234343412342522151154124 欝 +12343434123434112431 鐢 1234343412343434 㯤 +1234343412344334 燓 +123434341234453444445215333 鬰 +123434341234453444445235333 鬰 +123434341234453444445253333 鬰 +12343434123445511211124 欎 +1234343412344551154124 欎 12343434132511134 顂 123434341344 猌 123434341344121 㙬 @@ -12085,6 +12215,7 @@ 123441431251112 樟 1234414312511121 橦 12344143125111515111 櫳 +1234414312511211 橦 123441431251135 樈 12344143125114544 檍 12344143125115 槞 @@ -12238,6 +12369,8 @@ 12344454143112 榟 1234445432511154444 鶐 123444544 怸 +123444545434251214 櫁 +123444545434252 樒 1234445454425112 橣 123444545442522112 檸 123444545443251214 櫁 @@ -12272,6 +12405,8 @@ 123445341234 棎 12344535 枕 123445351234 棎 +123445434 柲 +12344543425221 榓 12344544 杺 123445443 柲 12344544325221 榓 @@ -12439,6 +12574,8 @@ 123454521234 㮊 123454523 柕 1234545231234 楙楺 +1234545231234121 壄 +12345452312344544 懋 1234545232534251 橘 1234545232535251 橘 1234545233134 㮘 @@ -12848,6 +12985,7 @@ 125111241352215353 轆 125111241431 𨋢 1251112414312511121 䡴 +1251112414312511211 䡴 1251112415334 輆 1251112415425113134 轍 1251112415435113134 轍 @@ -13302,6 +13440,7 @@ 12521111121225134 霙 1252111112124511353334 靀 125211111212511121 䨪 +125211111212511211 䨪 1252111112211 雸 12521111122111345 䨢 12521111122111355 䨢 @@ -13398,7 +13537,9 @@ 125211113155441 霉 1252111132151135 霓 125211113223134254311214444 䨹 +125211113223134254312114444 䨹 12521111322354254311214444 䨹 +12521111322354254312114444 䨹 1252111132411121 霍 125211113241112132411121 靃 125211113241112132511154444 靍鸖 @@ -13422,6 +13563,7 @@ 1252111134312 雽 125211113443521 䨗 1252111134435332511121 霾 +1252111134435332511211 霾 1252111134454 零 125211113445432511154444 䴇 125211113453 雰 @@ -13656,6 +13798,7 @@ 12524134121225134 霙 1252413412124511353334 靀 125241341212511121 䨪 +125241341212511211 䨪 1252413412211 雸 12524134122111345 䨢 12524134122111355 䨢 @@ -13749,7 +13892,9 @@ 125241343155441 霉 1252413432151135 霓 125241343223134254311214444 䨹 +125241343223134254312114444 䨹 12524134322354254311214444 䨹 +12524134322354254312114444 䨹 1252413432411121 霍 125241343241112132411121 靃 125241343241112132511154444 靍鸖 @@ -13773,6 +13918,7 @@ 1252413434312 雽 125241343443521 䨗 1252413434435332511121 霾 +1252413434435332511211 霾 1252413434454 零 125241343445432511154444 䴇 125241343453 雰 @@ -13922,6 +14068,7 @@ 12524444121225134 霙 1252444412124511353334 靀 125244441212511121 䨪 +125244441212511211 䨪 1252444412211 雸 12524444122111345 䨢 12524444122111355 䨢 @@ -14018,7 +14165,9 @@ 125244443155441 霉 1252444432151135 霓 125244443223134254311214444 䨹 +125244443223134254312114444 䨹 12524444322354254311214444 䨹 +12524444322354254312114444 䨹 1252444432411121 霍 125244443241112132411121 靃 125244443241112132511154444 靍鸖 @@ -14042,6 +14191,7 @@ 1252444434312 雽 125244443443521 䨗 1252444434435332511121 霾 +1252444434435332511211 霾 1252444434454 零 125244443445432511154444 䴇 125244443453 雰 @@ -14324,6 +14474,7 @@ 1253511312251 䣶 125351131234 酥 125351131254311214444 醺 +125351131254312114444 醺 1253511315 䣨 12535113155414 酶 12535113155441 酶 @@ -14417,6 +14568,7 @@ 1253511453525221 醓 1253511453534 𬪩 1253511454 逎 +12535114543425221 䤉 12535114544325221 䤉 12535114554 逎 125351151124134 醁 @@ -14553,6 +14705,7 @@ 131134535542511134 贀 13113453554251214 䗟 13113453554254311214444 黳 +13113453554254312114444 黳 1311345355432511154444 鷖 131134535543511 㬾 1311345355435451 鹥 @@ -14656,6 +14809,7 @@ 131344132522111 靥 13134425112 厣 131344254311214444 黡 +131344254312114444 黡 131344325113554 魇 131344344511534 餍 13135 厉 @@ -14822,12 +14976,15 @@ 1325111554 㼣 1325112 矴㕅 13251121 矼 +132511211 厘 1325112111534 䂻 13251121121 硅 13251121121121135 磽 132511211254444 碼 1325112112544443434 礟 132511211254444413434 礮 +13251121152 䣑 +132511211552 䣑 13251121211121111534 䃱 13251121211121111543 䃱 1325112121215425221 礚 @@ -14927,6 +15084,7 @@ 132511251113442121 㱘 1325112511134425112 厴 13251125111344254311214444 黶 +13251125111344254312114444 黶 132511251113443112 擪 13251125111344325113554 魘 132511251113443251213554 魘 @@ -15018,6 +15176,7 @@ 132511351113442121 㱘 1325113511134425112 厴 13251135111344254311214444 黶 +13251135111344254312114444 黶 132511351113443112 擪 13251135111344325113554 魘 132511351113443251213554 魘 @@ -15037,6 +15196,7 @@ 132511354113442121 㱘 1325113541134425112 厴 13251135411344254311214444 黶 +13251135411344254312114444 黶 132511354113443112 擪 13251135411344325113554 魘 132511354113443251213554 魘 @@ -15255,7 +15415,11 @@ 13251313432 硚 13251315 矺矻 1325131525 砤 +1325132111252511134 礖 +1325132111253511134 礖 13251321113554 碫 +132513211152511134 礖 +132513211153511134 礖 1325132121 䂡 132513212154 硟 1325132121554 硟 @@ -15448,6 +15612,7 @@ 1325141431251 碚 13251414312511121 䃥 132514143125111515111 礲 +13251414312511211 䃥 132514143135111515111 礲 132514143135411515111 礲 13251414345252 碲 @@ -15648,6 +15813,7 @@ 1325431124454 遖 132543112454 遖 1325431124554 遖 +13254312114444121 㕓 1331112111 厞 13311252 厒 1331211 厏 @@ -15962,6 +16128,7 @@ 135255453541 尳 1353 历㔫 135312511121 尰 +135312511211 尰 135325111534 厧 13532511154444 䲫 1353315112234 尲 @@ -16011,6 +16178,7 @@ 135333435251 豞 13533343554 豛 1353334414312511121 䝑 +1353334414312511211 䝑 135333441432512251 豴 1353334415334 豥 135333444511234 䝋 @@ -16313,6 +16481,7 @@ 14521111121225134 霙 1452111112124511353334 靀 145211111212511121 䨪 +145211111212511211 䨪 1452111112211 雸 14521111122111345 䨢 14521111122111355 䨢 @@ -16409,7 +16578,9 @@ 145211113155441 霉 1452111132151135 霓 145211113223134254311214444 䨹 +145211113223134254312114444 䨹 14521111322354254311214444 䨹 +14521111322354254312114444 䨹 1452111132411121 霍 145211113241112132411121 靃 145211113241112132511154444 靍鸖 @@ -16433,6 +16604,7 @@ 1452111134312 雽 145211113443521 䨗 1452111134435332511121 霾 +1452111134435332511211 霾 1452111134454 零 145211113445432511154444 䴇 145211113453 雰 @@ -16584,6 +16756,7 @@ 14524134121225134 霙 1452413412124511353334 靀 145241341212511121 䨪 +145241341212511211 䨪 1452413412211 雸 14524134122111345 䨢 14524134122111355 䨢 @@ -16677,7 +16850,9 @@ 145241343155441 霉 1452413432151135 霓 145241343223134254311214444 䨹 +145241343223134254312114444 䨹 14524134322354254311214444 䨹 +14524134322354254312114444 䨹 1452413432411121 霍 145241343241112132411121 靃 145241343241112132511154444 靍鸖 @@ -16701,6 +16876,7 @@ 1452413434312 雽 145241343443521 䨗 1452413434435332511121 霾 +1452413434435332511211 霾 1452413434454 零 145241343445432511154444 䴇 145241343453 雰 @@ -16849,6 +17025,7 @@ 14524444121225134 霙 1452444412124511353334 靀 145244441212511121 䨪 +145244441212511211 䨪 1452444412211 雸 14524444122111345 䨢 14524444122111355 䨢 @@ -16945,7 +17122,9 @@ 145244443155441 霉 1452444432151135 霓 145244443223134254311214444 䨹 +145244443223134254312114444 䨹 14524444322354254311214444 䨹 +14524444322354254312114444 䨹 1452444432411121 霍 145244443241112132411121 靃 145244443241112132511154444 靍鸖 @@ -16969,6 +17148,7 @@ 1452444434312 雽 145244443443521 䨗 1452444434435332511121 霾 +1452444434435332511211 霾 1452444434454 零 145244443445432511154444 䴇 145244443453 雰 @@ -17285,6 +17465,7 @@ 151535254 㿫 1515413534 䘡 1515431234 粊 +151545434 毖 151545443 毖 15155 乬巪 15155151221345 㔵 @@ -17494,6 +17675,7 @@ 1535413534 䘡 1535431234 粊 15354444 炁 +153545434 毖 15354544 㤅 153545443 毖 153553254 㿫 @@ -17570,15 +17752,18 @@ 15534 戉 1553413534 袃䘡 1553431234 粊 +155345434 毖 155345443 毖 155353254 㿫 1554 瓦 155412 瓧 1554132511 瓸 1554132511121 甅 +1554132511211 甅 15541354 瓪 15541525 瓲 15542511121 瓼 +15542511211 瓼 15543 戉 15543115 瓱 1554312 瓩 @@ -18144,6 +18329,7 @@ 211125444441431251112 騿 2111254444414312511121 䮵 21112544444143125111515111 䮾 +2111254444414312511211 䮵 21112544444143135111515111 䮾 21112544444143135411515111 䮾 211125444441432512251 䮰 @@ -18188,6 +18374,7 @@ 21112544444532411121 䮤 21112544444535 馾 2111254444454 遤 +211125444445434 駜 211125444445443 駜 21112544444554 遤 2111254444511112 䮇 @@ -18510,6 +18697,9 @@ 211212342433541 䔠 21121234251 莕 2112123425111 葙 +211212343112521234453444445215333 䖇 +211212343112521234453444445235333 䖇 +211212343112521234453444445253333 䖇 211212343155414 䔦 211212343155441 䔦 21121234324111214444 藮 @@ -18966,6 +19156,7 @@ 211225111543341134 藈 211225111544331134 藈 211225111553 菎 +21122511211 荲 211225112112112 蓽 2112251122111 葺 21122511221111534 蕺 @@ -19170,6 +19361,7 @@ 21122535251 莔 2112254311214444121251 䕸 211225431134551 蔨 +2112254312114444121251 䕸 211225431415 菵 211225525251 萵 2112255252514454 薖 @@ -19266,8 +19458,12 @@ 211231234534 萟 2112312511121 董 21123125111214444 薫 +2112312511211 董 +21123125112114444 薫 211231254311214444 薰 21123125431121444453 蘍 +211231254312114444 薰 +21123125431211444453 蘍 21123134 芺 211231342344 菾 2112313425125251 蕎 @@ -19277,11 +19473,19 @@ 21123155441 莓 211231554413134554234 蘩 21123211 芢 +211232111252511134 藇 +211232111253511134 藇 2112321113554 葮 +21123211152511134 藇 +21123211153511134 藇 2112321121 荏 21123211212511 蒨 21123211212521 蒨 21123211213511 蒨 +21123211251125114512535113453 虋 +21123211251251511134 䕟 +211232112512515114512535113453 虋 +21123211251515114512535113453 虋 21123211511254 蓃 2112321151134 萸 2112321152 茚 @@ -19526,6 +19730,7 @@ 21123443521 莩 21123443531 荽 211234435332511121 薶 +211234435332511211 薶 211234435333251135 藐 21123443542554545 薍 21123443554134 蒵 @@ -19620,6 +19825,7 @@ 21123531234132511134 蘔 211235321511 萏 21123532511121 䔆 +21123532511211 䔆 2112353251214 葻 21123533 芴 21123533312 䓄 @@ -19815,6 +20021,7 @@ 211241431251112 蔁 2112414312511121 蕫 21124143125111515111 蘢 +2112414312511211 蕫 211241431251135 䔔 21124143125114544 薏 21124143125152 蔀 @@ -20015,6 +20222,8 @@ 211244535445411234 䕓 211244535455 菀 21124454143112 䔂 +211244545434251214 藌 +211244545434252 蔤 2112445454425112 䔭 211244545442522112 薴 211244545443251214 藌 @@ -20053,6 +20262,7 @@ 21124535 䒞 21124535251354 蒬 2112454 芝 +211245434 苾 21124544 芯 211245443 苾 2112454445444544 蕊 @@ -20194,6 +20404,7 @@ 2112533121325114 蕏 21125331234132511134 蘔 21125332511121 䔆 +21125332511211 䔆 21125333312 䓄 2112533341253511 蕕 2112533431253511 蕕 @@ -20452,6 +20663,7 @@ 21212343 歩 21212511 肯 2121312511121 歱 +2121312511211 歱 212132411121 䧳 21213251111344 㱗 21213251514143112 辪 @@ -20815,6 +21027,7 @@ 21515531 姕 21515554234 紫 215312511121 歱 +215312511211 歱 215313434251113554 㲊 215315 虍 215315112 䖉 @@ -20902,7 +21115,9 @@ 215315352512113134 䲣 215315352512144443134 䱷 215315353223134254311214444 虪 +215315353223134254312114444 虪 21531535322354254311214444 虪 +21531535322354254312114444 虪 215315353251154444 䖚 21531535333 彪 21531535334 䖏 @@ -20915,6 +21130,7 @@ 2153153553251354 䖘 2153154134 虔 215315413422 㓺 +21531545434 虙 2153154544 虑 21531545443 虙 21531553 虏䖈 @@ -21291,6 +21507,9 @@ 24345251254311214444 黨 2434525125431121444452 䣣 24345251254311214444552 䣣 +24345251254312114444 黨 +2434525125431211444452 䣣 +24345251254312114444552 䣣 243452513112 掌 243452513251 営 2434525135 党 @@ -21355,6 +21574,7 @@ 2441212252214525111 懵 24412122522145354 懜 2441212312511121 懂 +2441212312511211 懂 24412123241112154 㦜 2441212353344544 憽 2441212415 恾 @@ -21418,6 +21638,7 @@ 244122252214525111 懵 2441222522145354 懜 244122312511121 懂 +244122312511211 懂 2441223241112154 㦜 244122353344544 憽 244122415 恾 @@ -21589,6 +21810,7 @@ 2442112252214525111 懵 24421122522145354 懜 2442112312511121 懂 +2442112312511211 懂 24421123241112154 㦜 2442112353344544 憽 2442112415 恾 @@ -21615,6 +21837,7 @@ 2442433541 悄 24424345251121 憆 24424345251254311214444 戃 +24424345251254312114444 戃 2442454134 悯 24425111 怚怛 2442511112 悍 @@ -21633,6 +21856,7 @@ 24425111515 惃 24425111535 惃 24425111553 惃 +2442511211 悝 2442511243135 愰 24425112511 㥃 24425112511125431234 㦨 @@ -21743,6 +21967,7 @@ 24431234521 悸 24431251112153 慟 24431251113533 慯 +24431251121153 慟 244312511354 愎 2443134 㤇 24431342344 悿 @@ -21758,6 +21983,10 @@ 2443154 怅 2443155414 悔 2443155441 悔 +24432111252511134 懙 +24432111253511134 懙 +2443211152511134 懙 +2443211153511134 懙 244321121 㤛 2443211511254 㥰 244321151134 㥚 @@ -21962,6 +22191,7 @@ 244414312511 愔 24441431251112 慞 244414312511121 憧 +244414312511211 憧 2444143125114544 憶 24441431331121 㦃 24441432533543112 懠 @@ -22026,6 +22256,7 @@ 24445341234 㤾 2444535 忱 24445351234 㤾 +24445434 怭 2444544 㤈 24445443 怭 24445534 怺 @@ -22533,6 +22764,7 @@ 251112433541 睄 2511124345251121 瞠 2511124345251254311214444 矘 +2511124345251254312114444 矘 25111243452513112 𥋇 25111245521 㫲 251112511 昛 @@ -22565,6 +22797,7 @@ 25111251114544 愳 25111251115154 睱 2511125112 眒 +251112511211 量 251112511214124 暷 25111251122111 䁒 25111251124 晡 @@ -22644,6 +22877,8 @@ 25111254125441352215353 曬 25111254311214444 䁫 25111254311214444121 䁼 +25111254312114444 䁫 +25111254312114444121 䁼 2511125431234 暕 251113112 咞盽 25111311222214444 瞴 @@ -22666,6 +22901,7 @@ 25111312344334 瞅 251113123443344544 矁 2511131254311214444 矄 +2511131254312114444 矄 251113143142342511 𥋘 251113143142343511 𥋘 251113143142343541 𥋘 @@ -23023,6 +23259,7 @@ 2511141431251112 瞕 25111414312511121 瞳 251114143125111515111 矓 +25111414312511211 瞳 251114143135111515111 矓 251114143135411515111 矓 2511141432512251 䁤 @@ -23091,6 +23328,7 @@ 251114525114134 瞑 251114535 眈 25111454 䢐 +2511145434 䀣 2511145443 䀣 2511145534 眿 251114554 䢐 @@ -23193,9 +23431,10 @@ 251115555552 郻 25112 叮叶曱甲申 251121 叿吐 -2511211 囯㫔 +2511211 囯里㫔 251121112111 暃㫵 2511211123451124134 㘑 +251121113444444 黙 25112112 咑 251121121 哇 25112112112 畢 @@ -23216,6 +23455,9 @@ 251121124511353334 曚 2511211254444 嗎 2511211254444413434 㘐 +25112114444 黒 +25112115452 野 +25112115452121 墅 251121211212112 嘩 251121211254444 嘕 25112121154444 嘕 @@ -23276,6 +23518,7 @@ 251121251112 晫 2511212511121 𠹺 2511212511134 嗊 +2511212511211 𠹺 251121251431251 嘻 251121251431333 嘭 25112125145154121 㘆 @@ -23469,6 +23712,7 @@ 2511243135 晃晄 251124325251 㫾 251124345251254311214444 曭 +251124345251254312114444 曭 2511244125111 暅 251124454 迧 25112452512152134 嚏 @@ -23707,6 +23951,7 @@ 25112511445531 暥 251125114511534 閬 2511251145132513134 闙 +2511251145434 閟 251125114544 悶 2511251145443 閟 251125115 㫣 @@ -23888,6 +24133,7 @@ 251131251534 喊 251131251543 喊 251131254311214444 曛 +251131254312114444 曛 25113132 昇 2511315 㫓 251131531534 喴 @@ -23927,6 +24173,7 @@ 25113251113412 暤 2511325111354 嗄 2511325111413412 曍 +251132511211 喱 2511325112111112 暭 2511325112413412 暭 25113251125111344 嚈 @@ -24124,6 +24371,7 @@ 251141431251112 暲 2511414312511121 曈 25114143125111515111 曨 +2511414312511211 曈 25114143135111515111 曨 25114143135411515111 曨 25114152514311123511254 㬯 @@ -24669,6 +24917,7 @@ 251212131234531 踒 2512121312454 跹 2512121312511121 踵 +2512121312511211 踵 25121213134 跃 2512121313425125251 蹻 251212131354 䟦 @@ -24814,6 +25063,8 @@ 2512121413234 跡 2512121413251112134121 躔 2512121413251112135121 躔 +2512121413251121134121 躔 +2512121413251121135121 躔 2512121413432 跻 2512121413434 跤 251212141343412 踤 @@ -24830,6 +25081,7 @@ 251212141431251 踣 2512121414312511121 蹱 25121214143125111515111 躘 +2512121414312511211 蹱 25121214143135111515111 躘 25121214143135411515111 躘 251212141431531 踥 @@ -24882,6 +25134,7 @@ 2512121451325122 蹁 25121214513533533 𨃩 25121214513541541 𨃩 +251212145434 䟤 251212145443 䟤 251212151111254 踺 2512121511112554 踺 @@ -25002,6 +25255,7 @@ 251212534552 䣒 251213112 㽚 25121312511121 畽 +25121312511211 畽 251213134 畋 251213155414 畮 251213155441 畮 @@ -25258,6 +25512,7 @@ 2512141355 蚅 25121414312 蚲 25121414312511121 疃 +25121414312511211 疃 251214143134 蛱 251214143342511234 蟟 25121414521111132522 蠕 @@ -25428,6 +25683,8 @@ 2512142535 蚬 251214254311214444 蟔 251214254311214444121 䘃 +251214254312114444 蟔 +251214254312114444121 䘃 25121425431415 蝄 25121425525251 蝸 251214255452511 螖 @@ -25464,8 +25721,10 @@ 2512143123453 蜏 25121431234531 蜲 251214312511121 蝩 +251214312511211 蝩 251214312511354 蝮 25121431254311214444 䗼 +25121431254312114444 䗼 251214313425125251 蟜 251214314314113112 䗗 2512143143141132 䗗 @@ -25765,6 +26024,7 @@ 2512144525114134 螟 2512144535455 畹 251214454 迪 +25121445434 䖩 25121445443 䖩 2512145 虬 251214511121251124 蟳 @@ -26107,6 +26367,7 @@ 25121531234531 踒 251215312454 跹 251215312511121 踵 +251215312511211 踵 2512153134 跃 251215313425125251 蹻 25121531354 䟦 @@ -26270,6 +26531,8 @@ 251215413234 跡 251215413251112134121 躔 251215413251112135121 躔 +251215413251121134121 躔 +251215413251121135121 躔 251215413432 跻 251215413434 跤 25121541343412 踤 @@ -26286,6 +26549,7 @@ 25121541431251 踣 251215414312511121 蹱 2512154143125111515111 躘 +251215414312511211 蹱 2512154143135111515111 躘 2512154143135411515111 躘 25121541431531 踥 @@ -26345,6 +26609,7 @@ 2512154513541541 𨃩 251215452121 㙒 25121545231234 㽥 +25121545434 䟤 25121545443 䟤 2512154545434333 㽩 2512154545454 畷 @@ -26935,8 +27200,10 @@ 25125111554 瓹 251251115552 鄂 25125112 呷呻 +2512511211 哩 25125112112112 嗶 2512511211254444 駡 +25125112115452 嘢 251251121251251 噐 25125112141 啯 25125112141241 團 @@ -27139,6 +27406,9 @@ 251254311214444 嘿 251254311214444121 嚜 25125431121444421251 嚸 +251254312114444 嘿 +251254312114444121 嚜 +25125431211444421251 嚸 25125525251 喎 251255252514454 㗻 25125525251454 㗻 @@ -27200,7 +27470,10 @@ 25131234531 唩 251312511121 喠 25131251112153 㗢 +251312511211 喠 +25131251121153 㗢 25131254311214444 嚑 +25131254312114444 嚑 2513132 呏 2513134 呚㕭 25131342344 㖭 @@ -27623,6 +27896,7 @@ 251414312511 喑 251414312511121 噇 2514143125111515111 嚨 +251414312511211 噇 2514143125113534 噷 2514143125114544 噫 251414313333 喭 @@ -27735,6 +28009,7 @@ 25144535445411234 嚓 25144535455 啘 2514454 迅 +25144545434252 嘧 25144545442522112 嚀 25144545443252 嘧 25144551251 𠴨 @@ -27757,6 +28032,7 @@ 2514535 㕪㕴 251453534 哝 251454 迅 +25145434 咇 2514544 吣 25145443 咇 25145534 咏 @@ -28078,6 +28354,8 @@ 252123415431543 嶘 252123425111 嵖 25212343434 崍 +25212343434123425221511211124 㠨 +2521234343412342522151154124 㠨 25212343454 崧㟣 252123441121 嵀 2521241344 㟈 @@ -28805,6 +29083,7 @@ 2522141352215353 䍡 25221414312511 罯 25221414312511121 罿 +25221414312511211 罿 2522141432533543112 䍤 2522141432533543211 䍤 2522141554 䍗 @@ -28897,6 +29176,7 @@ 25225111535 崐崑 25225111553 崐崑 25225112 岬 +2522511211 𢃇 25225112141 帼 2522511221111534 嶯 2522511221111543 嶯 @@ -28978,6 +29258,7 @@ 25231234531325113554 巍 252312345313251213554 巍 252312511121 㡖 +252312511211 㡖 2523134 岆 252313425125251 嶠㠐 252313432 峤 @@ -28988,6 +29269,10 @@ 2523143145115452 幯 252315 屹 2523154 帐 +25232111252511134 嶼㠘 +25232111253511134 嶼㠘 +2523211152511134 嶼㠘 +2523211153511134 嶼㠘 2523211511254 㟬 25232121 岴 252321511254 㟬 @@ -29230,6 +29515,7 @@ 25241431251112 嶂幛 252414312511121 幢㠉 2524143125111515111 巃巄 +252414312511211 幢㠉 252414312511534 幟 252414312511543 幟 252414312512 嵜 @@ -29605,6 +29891,7 @@ 25431121444425342511 䵬 254311214444312511121 䵯 25431121444431251113533 䵰 +254311214444312511211 䵯 2543112144443155414 黣 2543112144443155441 黣 254311214444341251132 黭 @@ -29638,6 +29925,86 @@ 25431121444455453 黝 254311345151 圏 25431134551 圈 +2543121113444444 黙 +25431211212514444 㸃 +254312114444 黑 +254312114444112 䵟 +25431211444411234 䵢 +254312114444121 墨 +254312114444121251 黠 +254312114444121251431251 䵱 +254312114444121252212511134 黷 +254312114444121253512511134 黷 +25431211444412132511 䵭 +254312114444121325114 䵭 +25431211444412211 黚 +254312114444122111345 黮 +254312114444122111355 黮 +2543121144441225111134 黰 +254312114444125221121 黫 +254312114444125351121 黫 +25431211444412544134 黩 +254312114444131251534 黬 +254312114444131251543 黬 +2543121144441325111134 黰 +25431211444413425115 黤 +2543121144441344 默 +254312114444134425111 䁿 +2543121144441353334 䵨 +2543121144441354333 䵨 +2543121144441525 黗 +2543121144441525111534 黰 +2543121144441535 黖 +254312114444154 黓 +25431211444421251 點 +2543121144442153152512125221 黸 +25431211444422 䵞 +25431211444425111 䵣 +254312114444251113533 䵮 +25431211444425111515 䵪 +25431211444425111535 䵪 +25431211444425111553 䵪 +2543121144442511251211511 䵴 +25431211444425113535 䵪 +2543121144442511521211511 䵴 +25431211444425115353 䵪 +2543121144442512512511234 䵲 +25431211444425252 黜 +25431211444425342511 䵬 +254312114444312511121 䵯 +25431211444431251113533 䵰 +254312114444312511211 䵯 +2543121144443155414 黣 +2543121144443155441 黣 +254312114444341251132 黭 +2543121144443412524312511 䵳 +2543121144443415 黔 +2543121144443445 黔 +254312114444351 䵠 +2543121144443513341111251 黵 +2543121144443513344111251 黵 +2543121144443513351111251 黵 +2543121144443513354111251 黵 +2543121144443525 黗 +2543121144443525111534 黰 +2543121144443534 㱄 +254312114444354 䵠 +254312114444354354 黟 +254312114444355215 䵥 +25431211444441251234 黥 +254312114444414312511 黯 +254312114444441112 䵦 +25431211444444535455 黦 +2543121144444535 黕 +2543121144445 䵝 +25431211444452252 黜 +2543121144445325111534 黰 +254312114444535215 䵥 +25431211444454134333 黪 +2543121144445434354 黢 +2543121144445435354 黢 +25431211444454545434333 黲 +25431211444455453 黝 25431252 岡 2543125222 剛 25431345 㒺 @@ -29645,6 +30012,7 @@ 254413215215121 㘤 25441355215121 㘤 2544341 図 +25454341 㘠 25454431 㘠 25511 囙 2551112125111 圕 @@ -30222,6 +30590,7 @@ 3111525111535 锟 3111525111553 锟 3111525112 钾𬬹 +311152511211 锂 3111525112511 锠 3111525112522154 镘 3111525113533 锡 @@ -30248,6 +30617,7 @@ 311152534 钠钡钢 31115253422 铡 31115254311214444 𬭶 +31115254312114444 𬭶 311153112251 锆 31115311234 铢 3111531134 铁 @@ -30267,6 +30637,7 @@ 31115312344334 锹 311153123453 锈 31115312511121 锺 +31115312511211 锺 311153154 𬬮 31115321113554 锻 31115321511254 锼 @@ -30401,6 +30772,7 @@ 311154511534 锒 311154513541541 䦂 3111545151 䥾 +3111545434 铋 3111545443 铋 311155 钆钇 3111551111254 键 @@ -30705,6 +31077,7 @@ 3112413522153534444 犥 311241431251 犃 3112414312511121 犝 +3112414312511211 犝 311241431331121 㹌 311241432512251 㹍 3112415 牤 @@ -31203,6 +31576,7 @@ 3121413522153534444 犥 312141431251 犃 3121414312511121 犝 +3121414312511211 犝 312141431331121 㹌 312141432512251 㹍 3121415 牤 @@ -31475,6 +31849,7 @@ 31234221234 梨 3123422251214 䖽 3123422254311214444 䵩 +3123422254312114444 䵩 31234223112 犁 312342234112431 鋫 3123422342534 㴝 @@ -31538,6 +31913,7 @@ 3123425114315112234 馦 3123425114325234 䭱 31234251144512332511134 馪 +31234251145434 馝 31234251145443 馝 31234251151315 馜 31234251151335 馜 @@ -31585,6 +31961,7 @@ 3123425312341 稛 312342534 䄲 31234254311214444 䆀 +31234254312114444 䆀 31234311234 秼 3123431124334 㷏 31234311253134 稧 @@ -31610,10 +31987,17 @@ 31234312511121 種 3123431251112125135 㘒 3123431251112125153 㘒 +31234312511211 種 +3123431251121125135 㘒 +3123431251121125153 㘒 31234312511354 稪 312343134 秗 31234313425125251 穚 31234315 秅 +3123432111252511134 穥 +3123432111253511134 穥 +312343211152511134 穥 +312343211153511134 穥 31234321121 秹 31234323121 秹 3123432411121 稚 @@ -31736,6 +32120,7 @@ 312343532511154444 鵚䆇 31234353251214 䖿 31234353254311214444 黧 +31234353254312114444 黧 312343533112 犂 3123435332511154444 鵹 3123435334112431 錅 @@ -31789,6 +32174,7 @@ 31234414312511 䅧 31234414312511121 穜 312344143125111515111 䆍 +31234414312511211 穜 312344143135111515111 䆍 312344143135411515111 䆍 3123441432533543112 穧 @@ -31838,6 +32224,7 @@ 31234451325122 稨 31234453534 秾 31234454 迩 +3123445434 秘 3123445443 秘 312344554 迩 31234511541535 穊 @@ -31919,6 +32306,12 @@ 31251112153 動 312511121534444 勲 312511121534544 憅 +312511211 重 +31251121125342511 濌 +31251121132511154444 䳯 +31251121153 動 +312511211534444 勲 +312511211534544 憅 31251123534 㰱 312511354 复 3125125132511134 頥 @@ -31928,6 +32321,8 @@ 31253 㔓 31254311214444 熏 3125431121444453 勳 +31254312114444 熏 +3125431211444453 勳 313121 圱 3132 升 31322 刋 @@ -32277,6 +32672,7 @@ 3143142511113222 㔍 314314251111341511534 籑 31431425111134254311214444 䵵 +31431425111134254312114444 䵵 31431425111134341511534 䉵 31431425111134344511534 䉵 31431425111134354 簒 @@ -32424,8 +32820,13 @@ 314314312344334 篍 314314312344412 䈖 314314312511121 箽 +314314312511211 箽 3143143134 笑 314314313425125251 簥 +31431432111252511134 籅 +31431432111253511134 籅 +3143143211152511134 籅 +3143143211153511134 籅 314314321121 䇮 3143143211212511 篟 3143143211212521 篟 @@ -32517,6 +32918,7 @@ 3143143411243115341534 籛 3143143411243115431543 籛 31431434112431312511121 籦 +31431434112431312511211 籦 3143143411243151124134 籙 3143143411243155124134 籙 31431434113455 箞 @@ -32753,6 +33155,7 @@ 3143144453434251 䈶 31431444535121 箜 31431444535455 箢 +31431444545434252 䈼 31431444545443252 䈼 31431444551251 管 3143144511534 筤 @@ -32911,13 +33314,65 @@ 321111251124 傠 32111215 㑌 32111234 㑍 +32111251112511134 輿 32111251113454 㒃 +32111252511134 與 +321112525111341111251 譽 +32111252511134112 舉 +321112525111341251112 轝 +3211125251113413251 礜 +321112525111343112 擧 +3211125251113431125 㐦 +3211125251113432511154444 鸒 +321112525111343534 歟 +321112525111344111251 譽 +321112525111344544 㦛 +321112525114511214 㼂 32111253134 偰 +32111253511134 與 +321112535111341111251 譽 +32111253511134112 舉 +321112535111341251112 轝 +3211125351113413251 礜 +321112535111343112 擧 +3211125351113431125 㐦 +3211125351113432511154444 鸒 +321112535111343534 歟 +321112535111344111251 譽 +321112535111344544 㦛 +321112535114511214 㼂 321113124 俦 +3211132511151134354 夓 +3211132511151135354 夓 3211134112 俸 321113424134 傣 32111342511 偆 321113554 段 +32111512511134 舆 +3211152511134 與 +32111525111341111251 譽 +3211152511134112 舉 +32111525111341251112 轝 +321115251113413251 礜 +32111525111343112 擧 +321115251113431125 㐦 +321115251113432511154444 鸒 +32111525111343534 歟 +32111525111344111251 譽 +32111525111344544 㦛 +32111525114511214 㼂 +3211153511134 與 +32111535111341111251 譽 +3211153511134112 舉 +32111535111341251112 轝 +321115351113413251 礜 +32111535111343112 擧 +321115351113431125 㐦 +321115351113432511154444 鸒 +32111535111343534 歟 +32111535111344111251 譽 +32111535111344544 㦛 +32111535114511214 㼂 32112 仠㐵 321121 任仼 3211211234 栠 @@ -32945,15 +33400,66 @@ 321122125121 傋 32112251 佸 3211234 佅 +3211251125114511214 璺 +32112511251145123412341344334 爨 +32112511251145123412344334 㸑 +3211251125114512535113453 釁 +3211251125114525111 舋 +321125112511454334 爂 +3211251251511134 興 +32112512515111342511 臖 +32112512515111343511 臖 +32112512515111343541 臖 +32112512515114511214 璺 +321125125151145123412341344334 爨 +321125125151145123412344334 㸑 +32112512515114512535113453 釁 +32112512515114525111 舋 +3211251251511454334 爂 +3211251515114511214 璺 +32112515151145123412341344334 爨 +32112515151145123412344334 㸑 +3211251515114512535113453 釁 +3211251515114525111 舋 +321125151511454334 爂 +3211253451125221 盥 3211311222 侀 32113222 侀 321132534 㑘 +32113253415111311534 䢉 321132543 㑘 321134 伕 32113411342511 僣 32113411342511134 儧 32113421112111 㒎 32113431112111 㒎 +3211343451145 𦥯 +3211343451145121 壆 +32113434511451211254444 䮸 +321134345114512154 㽇 +3211343451145122112512134 黌 +321134345114512212512134 黌 +321134345114513251 礐 +32113434511451554 㽇 +32113434511452111254444 䮸 +32113434511452511 䑁 +321134345114525111 䁷 +32113434511452511135 覺 +3211343451145252 嶨 +32113434511452534 澩 +32113434511453112251 嚳 +32113434511453121251 嚳 +321134345114532411121 雤 +321134345114532511154444 鷽 +32113434511453511 䑁 +321134345114535251214444 鱟 +32113434511453535112 觷 +32113434511453535121 觷 +32113434511453541 䑁 +32113434511454334 燢 +3211343451145521 學 +32113434511455212154 斅 +32113434511455213134 斆 321135 㐾 32113534 佽 3211511 𦥑 @@ -33465,6 +33971,7 @@ 32154252 岱帒 321542534 贷 32154254311214444 黛 +32154254312114444 黛 321543 伐 321543112 牉牮 321543121 垡 @@ -33563,6 +34070,7 @@ 32231342512134 跾 3223134251214 䖺 3223134254311214444 儵 +3223134254312114444 儵 3223134333 修 322313434112431 鋚 32231343511 脩 @@ -33590,6 +34098,7 @@ 32235425121 偹 322354251214 䖺 322354254311214444 儵 +322354254312114444 儵 322354333 修 3223543511 脩 32235435251214444 鯈 @@ -33611,6 +34120,7 @@ 32243452512511134 償 322434525125121 儅 3224345251254311214444 儻 +3224345251254312114444 儻 322434525135 傥 32245 们 32251 㐰 @@ -33630,6 +34140,7 @@ 3225111535 倱 3225111553 倱 3225112 伸 +322511211 俚 32251122111 偮 32251123134 敒 322511234 保 @@ -33778,6 +34289,8 @@ 32312511121 偅 3231251112153 働 3231251113533 傷 +32312511211 偅 +3231251121153 働 323132 㐼 323134 仸 32313425125251 僑 @@ -33791,6 +34304,12 @@ 3231554143134 𠍁 323155441 侮 3231554413134 𠍁 +3232111252511134 㒜 +3232111253511134 㒜 +323211152511134 㒜 +323211153511134 㒜 +3232113251251511134515 㒨 +323211325341511134515 㒨 323211511254 傁 323212134 㑟 32321511254 傁 @@ -34103,6 +34622,7 @@ 3241431251112 傽 32414312511121 僮 324143125111515111 儱 +32414312511211 僮 3241431251135 傹 324143125114544 億 32414313333 偐 @@ -34183,6 +34703,7 @@ 3244535121 倥 3244535455 倇 32445355113251 僒 +3244545434252 㑻 3244545442522112 儜 3244545443252 㑻 3244551251 倌 @@ -34199,6 +34720,7 @@ 324532411121 傕 324535 伔 32453534 侬 +3245434 佖 324544 伈 3245443 佖 325 亿 @@ -34523,6 +35045,7 @@ 325112413412541541 翶 32511243135 㿠 3251124345251254311214444 㿩 +3251124345251254312114444 㿩 325112511112 皔 32511251135345 㿣 3251125121 畠 @@ -35167,6 +35690,7 @@ 33225212513134 㣲 33225212523134 幑 33225212543112144443134 黴 +33225212543121144443134 黴 332252131213134 徵 332252131213134252 㠞 3322521312131344544 懲 @@ -35192,6 +35716,8 @@ 33231234531 㣦 332312511121 㣫 332312511121112 衝 +332312511211 㣫 +332312511211112 衝 332312511354 復 33232121124 㣥 332322512 㣡 @@ -35264,6 +35790,7 @@ 3324135112 䘕 332414312511121 徸 3324143125111515111 徿 +332414312511211 徸 3324143135111515111 徿 3324143135411515111 徿 3324143454135 徬 @@ -35581,6 +36108,7 @@ 3354142511121 艃 3354142511135 䚀 33541425112 舺 +3354142511211 艃 3354142511221111534 艥 3354142511221111543 艥 335414251122111534 艥 @@ -35684,6 +36212,7 @@ 3354144135 航舫 335414413531521 䑻 335414414312511121 艟 +335414414312511211 艟 33541441432533543112 艩 33541441432533543211 艩 3354144143454135 艕 @@ -35805,6 +36334,7 @@ 3354412511121 艃 3354412511135 䚀 33544125112 舺 +3354412511211 艃 3354412511221111534 艥 3354412511221111543 艥 335441251122111534 艥 @@ -35909,6 +36439,7 @@ 3354414135 航舫 335441413531521 䑻 335441414312511121 艟 +335441414312511211 艟 33544141432533543112 艩 33544141432533543211 艩 3354414143454135 艕 @@ -36205,6 +36736,7 @@ 3411243112341 鉢 341124311234121 𨧀 3411243112343434 錸 +341124311234343412341343112 鑻 3411243112343434354 䥑 3411243112344 鉥 3411243112344444 錰 @@ -36468,6 +37000,7 @@ 341124312434525125121 鐺 3411243124345251252 鏛 3411243124345251254311214444 钂 +3411243124345251254312114444 钂 34112431243452513112 鐣 341124312434525135 鎲 34112431251 釦 @@ -36497,6 +37030,7 @@ 3411243125111535 錕㐥 3411243125111553 錕 3411243125112 鉀鉮 +341124312511211 鋰 3411243125112112112 鏎 34112431251122111 鍓 341124312511243135 鎤 @@ -36613,6 +37147,7 @@ 341124312534125221 鎾 3411243125342511 錔 34112431254311214444 𨭆 +34112431254312114444 𨭆 3411243125431252 鋼 3411243125431415 龬 3411243125525251 鍋 @@ -36661,9 +37196,11 @@ 341124313123453 銹 3411243131234531 錗 34112431312511121 鍾 +34112431312511211 鍾 34112431312511354 鍑 3411243131252 鉓 3411243131254311214444 鑂 +3411243131254312114444 鑂 34112431313425125251 鐈 34112431314314125234 鏼 341124313143142511113222 䥷 @@ -36952,6 +37489,7 @@ 3411243141431251112 鏱 34112431414312511121 鐘 341124314143125111515111 鑨 +34112431414312511211 鐘 3411243141431251135 鏡 341124314143125114544 鐿 3411243141431331121 鏟 @@ -37078,6 +37616,7 @@ 34112431452425111 鎺 341124314532411121 䥃 341124314535 鈂䤟 +3411243145434 鉍 341124314544 鈊 3411243145443 鉍 341124315 釓釔 @@ -37705,6 +38244,7 @@ 341511211413534 餏 34151121141431251 餢 341511211414312511121 䭚 +341511211414312511211 䭚 34151121141431251135 䭗 34151121141432533543112 䭣 34151121141432533543211 䭣 @@ -37737,6 +38277,7 @@ 34151121144551251 館 341511211451251112 餫 341511211451325122 䭏 +34151121145434 飶 34151121145443 飶 34151121151111254 䭈 341511211511112554 䭈 @@ -38007,6 +38548,7 @@ 34151154413534 餏 3415115441431251 餢 34151154414312511121 䭚 +34151154414312511211 䭚 3415115441431251135 䭗 3415115441432533543112 䭣 3415115441432533543211 䭣 @@ -38039,6 +38581,7 @@ 3415115444551251 館 34151154451251112 餫 34151154451325122 䭏 +3415115445434 飶 3415115445443 飶 3415115451111254 䭈 34151154511112554 䭈 @@ -38432,6 +38975,8 @@ 344353325111214544 㦟 344353325111251113241112154 貜 3443533251115154 貑 +34435332511211 貍 +344353325112114544 㦟 344353325112512531 貗 344353325112522154 䝢 3443533251251251112 貚 @@ -38751,6 +39296,7 @@ 344511211413534 餏 34451121141431251 餢 344511211414312511121 䭚 +344511211414312511211 䭚 34451121141431251135 䭗 34451121141432533543112 䭣 34451121141432533543211 䭣 @@ -38783,6 +39329,7 @@ 34451121144551251 館 344511211451251112 餫 344511211451325122 䭏 +34451121145434 飶 34451121145443 飶 34451121151111254 䭈 344511211511112554 䭈 @@ -39052,6 +39599,7 @@ 34451154413534 餏 3445115441431251 餢 34451154414312511121 䭚 +34451154414312511211 䭚 3445115441431251135 䭗 3445115441432533543112 䭣 3445115441432533543211 䭣 @@ -39084,6 +39632,7 @@ 3445115444551251 館 34451154451251112 餫 34451154451325122 䭏 +3445115445434 飶 3445115445443 飶 3445115451111254 䭈 34451154511112554 䭈 @@ -39479,6 +40028,7 @@ 351125111535 䐊 351125111553 䐊 351125112 胂胛 +35112511211 䤚 351125112141 腘 3511251122111 䐕 3511251125111121 膶 @@ -39537,6 +40087,7 @@ 35112534125221 膃 3511253434 朒 3511254311214444121 𦢓 +3511254312114444121 𦢓 351125525251 腡 3511255252514454 膼 351125525251454 膼 @@ -39571,15 +40122,21 @@ 351131234531 腇 3511312511121 腫 351131251113533 膓 +3511312511211 腫 3511312511354 腹 351131254311214444 臐 +351131254312114444 臐 35113143141234341 㭀 3511315 肐 351131525 胣 35113154 胀 35113155414 脢 35113155441 脢 +351132111252511134 䑂 +351132111253511134 䑂 3511321113554 腶 +35113211152511134 䑂 +35113211153511134 䑂 35113211511254 膄 3511321151134 腴 35113212154 脠 @@ -39658,6 +40215,7 @@ 3511341134251214 螣 3511341134252 幐㬺 3511341134254311214444 黱 +3511341134254312114444 黱 351134113435251214444 鰧 35113411344111251 謄 351134113453 勝 @@ -39790,6 +40348,7 @@ 3511414312511 腤 3511414312511121 朣膧 35114143125111515111 朧 +3511414312511211 朣膧 35114143125114544 臆 3511414312511534 膱 3511414312511543 膱 @@ -39833,6 +40392,7 @@ 3511431134251214 螣 3511431134252 幐㬺 3511431134254311214444 黱 +3511431134254312114444 黱 351143113435251211 䲢 351143113435251214444 鰧 35114311344111251 謄 @@ -39879,6 +40439,7 @@ 35114535 䏙 3511453534 脓 3511454 迌 +351145434 䏟 351145443 䏟 351145534 脉 35114553432511154444 䳮 @@ -40004,6 +40565,7 @@ 351251124 匍 351251214 風 35125121411134112 𩗴 +3512512141121112145434 飋 3512512141121112145443 飋 351251214112251 颳 3512512141134 颫 @@ -40091,6 +40653,7 @@ 35125121444535 䬁 351251214445433454 䬒 35125121444553 䬁 +35125121445434 䫾 35125121445443 䫾 3512512145134 䫼 351251214521251152 颹 @@ -40305,6 +40868,7 @@ 352512112511124 鲥 3525121125111535 鲲 3525121125111553 鲲 +352512112511211 鲤 3525121125112511 鲳 35251211251125221 鳁 3525121125112522154 鳗 @@ -40553,6 +41117,7 @@ 3525121444413251 鮖 35251214444132511 鮪 35251214444132511121 䱳 +35251214444132511211 䱳 35251214444132522 鮞 3525121444413344 鮁 35251214444133511 鮪 @@ -40648,6 +41213,7 @@ 3525121444425111535 鯤 3525121444425111553 鯤 3525121444425112 魻 +352512144442511211 鯉 3525121444425112511 鯧 352512144442511251211511 鱦 3525121444425112512531 䱾 @@ -40715,6 +41281,7 @@ 3525121444431234521 鯚 3525121444431234531 鯘 35251214444312511121 䱰 +35251214444312511211 䱰 35251214444312511354 鰒 352512144443134 䰻 35251214444313425125251 鱎 @@ -40733,6 +41300,10 @@ 3525121444431554143134 䲄 352512144443155441 䱕 3525121444431554413134 䲄 +3525121444432111252511134 鱮 +3525121444432111253511134 鱮 +352512144443211152511134 鱮 +352512144443211153511134 鱮 352512144443211511254 䱸 35251214444321152 鮣 352512144443212154 鯅 @@ -40942,6 +41513,7 @@ 35251214444451325122 鯿 35251214444452425112 鰰 352512144444535 魫 +3525121444445434 鮅 3525121444445443 鮅 352512144445 䰲 3525121444451111254 鰎 @@ -41310,6 +41882,7 @@ 3532511154444 鳩鳯䲥 35325111553 猑 35325112 狎 +3532511211 狸 353251122 狦 35325112511 猖 35325112512531 㺏 @@ -41330,6 +41903,7 @@ 353251213541 猬 353251214 独風 35325121411134112 𩗴 +3532512141121112145434 飋 3532512141121112145443 飋 353251214112251 颳 3532512141134 颫 @@ -41416,6 +41990,7 @@ 35325121444535 䬁 353251214445433454 䬒 35325121444553 䬁 +35325121445434 䫾 35325121445443 䫾 3532512145134 䫼 353251214521251152 颹 @@ -41475,11 +42050,16 @@ 3533123422 猁 35331234531 㹻 35331254311214444 獯 +35331254312114444 獯 353313425125251 獢 35331353334 䝆 353315 犵 353315112234 凲 35331525 狏 +35332111252511134 㺞 +35332111253511134 㺞 +3533211152511134 㺞 +3533211153511134 㺞 3533211511254 獀 3533212154 狿 35332121554 狿 @@ -41619,6 +42199,7 @@ 35341351135112 㺎 35341431251112 獐 353414312511121 獞 +353414312511211 獞 35341431251135 獍 35341554 㹡 353421251 飐 @@ -41936,6 +42517,7 @@ 353545231234 猱 353545232534251 獝 353545232535251 獝 +353545434 毖 353545443 毖 35354545434333 㺑 35355 犯 @@ -42274,6 +42856,7 @@ 35412534125221 膃 3541253434 䏑 3541254311214444121 𦢓 +3541254312114444121 𦢓 354125525251 腡 3541255252514454 膼 354125525251454 膼 @@ -42311,13 +42894,19 @@ 354131234531 腇 3541312511121 腫 354131251113533 膓 +3541312511211 腫 3541312511354 腹 354131254311214444 臐 +354131254312114444 臐 3541315 肐 354131525 胣 35413155414 脢 35413155441 脢 +354132111252511134 䑂 +354132111253511134 䑂 3541321113554 腶 +35413211152511134 䑂 +35413211153511134 䑂 35413211511254 膄 3541321151134 腴 35413212154 脠 @@ -42512,6 +43101,7 @@ 354141431251 䏽 3541414312511 腤 3541414312511121 膧 +3541414312511211 膧 35414143125114544 臆 3541414312511534 膱 3541414312511543 膱 @@ -42579,6 +43169,7 @@ 3541451251112 腪 3541451325122 䐔 35414535 䏙 +354145434 䏟 354145443 䏟 354145534 脉 35414553432511154444 䳮 @@ -42794,6 +43385,7 @@ 3544341134251214 螣 3544341134252 幐 3544341134254311214444 黱 +3544341134254312114444 黱 354434113435251214444 鰧 35443411344111251 謄 354434113453 勝 @@ -42825,6 +43417,7 @@ 3544431134251214 螣 3544431134252 幐 3544431134254311214444 黱 +3544431134254312114444 黱 354443113435251214444 鰧 35444311344111251 謄 354443113453 勝 @@ -42944,6 +43537,7 @@ 35524554 迎 35525111234 馃 355251112511121 䭪 +355251112511211 䭪 35525111535 馄 35525111553 馄 35525112522154 馒 @@ -43301,6 +43895,7 @@ 41112512433541 誚 41112512434525125121 譡 411125124345251254311214444 讜 +411125124345251254312114444 讜 4111251251 訊 41112512511 䛁 411125125111 詚詛 @@ -43422,6 +44017,7 @@ 41112513123453 誘 411125131234531 諉 4111251312511121 諥 +4111251312511211 諥 41112513132 䛂 41112513134 訞䚺 4111251313425125251 譑 @@ -43711,6 +44307,8 @@ 41112514535 訦 411125145351234 𧨾 4111251454 這 +411125145434 䛑 +41112514543425221 謐 41112514544 悥訫 411125145443 䛑 41112514544325221 謐 @@ -43954,6 +44552,7 @@ 4125111213534 裏 41251112343534 裹 4125112112112 㓖 +4125112113534 裏 412511232115114525111 亹 412511234 亰 4125113534 衰 @@ -44295,7 +44894,10 @@ 413211225121 庿 413211225134 㢍 41321125112343534 襃 +413211251125114525111 亹 413211251213534 褏 +4132112512515114525111 亹 +413211251515114525111 亹 413211312343534 褎 4132115113534 裒 413211545233534 裦 @@ -44355,6 +44957,13 @@ 413251113422 廁 41325111342511134531 廮 41325112 庘 +4132511211 㢆 +413251121134121 廛 +41325112113412152 鄽 +413251121134121552 鄽 +413251121135121 廛 +41325112113512152 鄽 +413251121135121552 鄽 41325112512531 廔 413251125214 庽 41325112554 庽 @@ -44690,6 +45299,7 @@ 4134125111342511134531 癭 41341251113533 瘍 41341251115154 瘕 +413412511211 㾖 41341251125112511 癎 41341251125113511 癇 413412511251135321511 㿕 @@ -44746,6 +45356,7 @@ 413412534125221 瘟 4134125342534531 瘿 41341254311214444121 癦 +41341254312114444121 癦 4134125525251 瘑 41341255452511 㾶 41341255453511 㾶 @@ -44770,6 +45381,7 @@ 4134131234521 痵 4134131234531 痿 41341312511121 瘇 +41341312511211 瘇 41341314314325111152 癤 41341314314325111552 癤 41341314314325113552 癤 @@ -45091,6 +45703,9 @@ 413432111211112 齑 4134321122 剤 41343211234 斎 +41343211251125114525111 斖 +413432112512515114525111 斖 +41343211251515114525111 斖 413432211121111 齑 41343222 剂 413432511154444 鳼鴍 @@ -45659,6 +46274,10 @@ 4135313113432511154444 鷟 4135313113435451 𬸦 4135313115 旄 +41353132111252511134 旟 +41353132111253511134 旟 +4135313211152511134 旟 +4135313211153511134 旟 4135313223134 㫍 4135313234 旅 41353132342511 膂 @@ -45810,6 +46429,7 @@ 4143113251 䇉 41431132511 竡 41431132511121 竰 +41431132511211 竰 41431133115 㲔 414311332154143112 㸤 4143113335444143112 瓣 @@ -45893,8 +46513,17 @@ 4143125111534 戠 4143125111543 戠 4143125111555121 䪫 +414312511211 童 +41431251121112154 㼿 +4143125112111554 㼿 414312511211225134 韺 41431251121123241112154 頀 +4143125112112511135 䚒 +4143125112113115 氃 +41431251121132511154444 䴀 +41431251121153 勭 +414312511211533533 𦒍 +414312511211541541 𦒍 4143125112154 瓿 4143125112512511134 韻 41431251125252 韷 @@ -46182,6 +46811,10 @@ 4153313113432511154444 鷟 4153313113435451 𬸦 4153313115 旄 +41533132111252511134 旟 +41533132111253511134 旟 +4153313211152511134 旟 +4153313211153511134 旟 4153313223134 㫍 4153313234 旅 41533132342511 膂 @@ -46376,6 +47009,7 @@ 4241212252214525111 懵 42412122522145354 懜 4241212312511121 懂 +4241212312511211 懂 42412123241112154 㦜 4241212353344544 憽 4241212415 恾 @@ -46439,6 +47073,7 @@ 424122252214525111 懵 4241222522145354 懜 424122312511121 懂 +424122312511211 懂 4241223241112154 㦜 424122353344544 憽 424122415 恾 @@ -46610,6 +47245,7 @@ 4242112252214525111 懵 42421122522145354 懜 4242112312511121 懂 +4242112312511211 懂 42421123241112154 㦜 4242112353344544 憽 4242112415 恾 @@ -46636,6 +47272,7 @@ 4242433541 悄 42424345251121 憆 42424345251254311214444 戃 +42424345251254312114444 戃 4242454134 悯 42425111 怚怛 4242511112 悍 @@ -46654,6 +47291,7 @@ 42425111515 惃 42425111535 惃 42425111553 惃 +4242511211 悝 4242511243135 愰 42425112511 㥃 42425112511125431234 㦨 @@ -46764,6 +47402,7 @@ 42431234521 悸 42431251112153 慟 42431251113533 慯 +42431251121153 慟 424312511354 愎 4243134 㤇 42431342344 悿 @@ -46779,6 +47418,10 @@ 4243154 怅 4243155414 悔 4243155441 悔 +42432111252511134 懙 +42432111253511134 懙 +4243211152511134 懙 +4243211153511134 懙 424321121 㤛 4243211511254 㥰 424321151134 㥚 @@ -46983,6 +47626,7 @@ 424414312511 愔 42441431251112 慞 424414312511121 憧 +424414312511211 憧 4244143125114544 憶 42441431331121 㦃 42441432533543112 懠 @@ -47047,6 +47691,7 @@ 42445341234 㤾 4244535 忱 42445351234 㤾 +42445434 怭 4244544 㤈 42445443 怭 42445534 怺 @@ -47519,6 +48164,7 @@ 431234132511 粨 431234132511121 糎 431234132511134 頪 +431234132511211 糎 431234132522 粫 431234132522111 糆 431234132522132522 糥 @@ -47558,11 +48204,13 @@ 431234251112134 䊓 43123425111234 粿 431234251112511121 糧 +431234251112511211 糧 4312342511135 粯 431234251113533 糃 43123425111515 䊐 43123425111535 䊐 43123425111553 䊐 +4312342511211 粴 43123425112522154 䊡 43123425113535 䊐 43123425115353 䊐 @@ -48004,6 +48652,9 @@ 43341234 炑 433412341 㶱 4334123424 烞 +433412343112521234453444445215333 爩 +433412343112521234453444445235333 爩 +433412343112521234453444445253333 爩 433412344 炢 433412354 炢 43341245521 㶿 @@ -48159,6 +48810,7 @@ 43342433541 焇 433424345251252 龦 433424345251254311214444 爣 +433424345251254312114444 爣 43342454544 焖 433425111 炟 43342511112 焊 @@ -48255,6 +48907,8 @@ 43342535251 烱 4334254311214444 㷵 4334254311214444121 爅 +4334254312114444 㷵 +4334254312114444121 爅 433425431252 焵 433425431415 焹 433425525251 煱 @@ -48279,8 +48933,12 @@ 4334312344334 煍 4334312511121 煄 433431251112153 㷲 +4334312511211 煄 +433431251121153 㷲 433431254311214444 燻 43343125431121444453 爋 +433431254312114444 燻 +43343125431211444453 爋 43343134 炇 4334313425125251 燆 4334314314325111152 㸅 @@ -48472,6 +49130,7 @@ 433441431251 焙 4334414312511121 燑 43344143125111515111 爖 +4334414312511211 燑 43344143125114544 燱 4334414312511534 熾 4334414312511543 熾 @@ -48727,6 +49386,7 @@ 441111543 浅 441112 汗汙 4411121 汪 +4411121112145434 濏 4411121112145443 濏 441112111215215 潖 4411121132 㳥 @@ -49030,6 +49690,9 @@ 4411234123452134 濋 44112341234531 漤 441123425111 渣湘 +44112343112521234453444445215333 灪 +44112343112521234453444445235333 灪 +44112343112521234453444445253333 灪 441123432511 湐 44112343312 淅 4411234333 涁 @@ -49210,6 +49873,7 @@ 441132511121 湹 441132511134 湏 44113251115 淔 +441132511211 湹 441132511454544354 瀀 441132511521 㴟 44113252 㳍 @@ -49489,6 +50153,7 @@ 44124345251121 漟 4412434525125121 澢 44124345251254311214444 灙 +44124345251254312114444 灙 441244112251 湉 4412442512 浺 441244312251 湉 @@ -49540,6 +50205,7 @@ 44125111535 混 44125111553 混 44125112 㳌 +4412511211 浬 44125112112112 滭 44125112141 𬇹 441251122111 湒 @@ -49741,6 +50407,8 @@ 44125352511 㴄 441254311214444 潶 441254311214444121 濹 +441254312114444 潶 +441254312114444121 濹 441255212511521 潿 44125525251 渦 441255252514454 濄 @@ -49807,6 +50475,7 @@ 44131234531 涹 441312511121 湩 44131251113533 漡 +441312511211 湩 4413134 沃㳊 44131341132 㴁 44131342344 添 @@ -49833,7 +50502,13 @@ 4413155441 海 4413155441121 塰 44131554413134554234 瀿 +44132111252511134 㵰 +44132111253511134 㵰 +4413211152511134 㵰 +4413211153511134 㵰 441321121 㳝 +44132113434511452511135 灚 +4413211343451145521 㶅 4413211511254 溲 441321151134 㳛 44132121 㳋 @@ -49863,12 +50538,14 @@ 44132231341234 滌 44132231342511 滫 4413223134254311214444 㶖 +4413223134254312114444 㶖 44132231343511 滫 44132231343541 滫 44132231344544 滺 4413223541234 滌 4413223542511 滫 441322354254311214444 㶖 +441322354254312114444 㶖 4413223543511 滫 4413223543541 滫 441322511234 湺 @@ -50270,6 +50947,8 @@ 4414132444 㳤 441413251112134121 瀍 441413251112135121 瀍 +441413251121134121 瀍 +441413251121135121 瀍 44141332324111214544 㶐 4414133315112234 濂 4414134 汶 @@ -50313,6 +50992,10 @@ 4414135311523211511134 㶛 4414135311533211511134 㶛 44141353131134 㵀 +44141353132111252511134 㶛 +44141353132111253511134 㶛 +4414135313211152511134 㶛 +4414135313211153511134 㶛 44141353144 淤 441413531521 游 44141353152134 漩 @@ -50332,6 +51015,7 @@ 441414312511121 潼 441414312511123541212511134 灨 4414143125111515111 瀧 +441414312511211 潼 44141431251135 滰 4414143125114544 澺 4414143125115 滝 @@ -50366,6 +51050,10 @@ 4414153311523211511134 㶛 4414153311533211511134 㶛 44141533131134 㵀 +44141533132111252511134 㶛 +44141533132111253511134 㶛 +4414153313211152511134 㶛 +4414153313211153511134 㶛 44141533144 淤 441415331521 游 44141533152134 漩 @@ -50541,6 +51229,9 @@ 4414453551325252 㵠 4414453551352252 㵠 4414454143112 滓 +44144545434 淧 +44144545434252 滵 +4414454543425221 㵥 441445454425112 澝 44144545442522112 濘 44144545443 淧 @@ -50578,6 +51269,9 @@ 4414535121251 滘 44145351234 深 441453534 浓 +44145434 泌 +44145434121 㳴 +4414543425221 㴵 4414544 沁 44145443 泌 44145443121 㳴 @@ -50889,6 +51583,7 @@ 4421212252214525111 懵 44212122522145354 懜 4421212312511121 懂 +4421212312511211 懂 44212123241112154 㦜 4421212353344544 憽 4421212415 恾 @@ -50952,6 +51647,7 @@ 442122252214525111 懵 4421222522145354 懜 442122312511121 懂 +442122312511211 懂 4421223241112154 㦜 442122353344544 憽 442122415 恾 @@ -51123,6 +51819,7 @@ 4422112252214525111 懵 44221122522145354 懜 4422112312511121 懂 +4422112312511211 懂 44221123241112154 㦜 4422112353344544 憽 4422112415 恾 @@ -51149,6 +51846,7 @@ 4422433541 悄 44224345251121 憆 44224345251254311214444 戃 +44224345251254312114444 戃 4422454134 悯 44225111 怚怛 4422511112 悍 @@ -51167,6 +51865,7 @@ 44225111515 惃 44225111535 惃 44225111553 惃 +4422511211 悝 4422511243135 愰 44225112511 㥃 44225112511125431234 㦨 @@ -51277,6 +51976,7 @@ 44231234521 悸 44231251112153 慟 44231251113533 慯 +44231251121153 慟 442312511354 愎 4423134 㤇 44231342344 悿 @@ -51292,6 +51992,10 @@ 4423154 怅 4423155414 悔 4423155441 悔 +44232111252511134 懙 +44232111253511134 懙 +4423211152511134 懙 +4423211153511134 懙 442321121 㤛 4423211511254 㥰 442321151134 㥚 @@ -51496,6 +52200,7 @@ 442414312511 愔 44241431251112 慞 442414312511121 憧 +442414312511211 憧 4424143125114544 憶 44241431331121 㦃 44241432533543112 懠 @@ -51560,6 +52265,7 @@ 44245341234 㤾 4424535 忱 44245351234 㤾 +44245434 怭 4424544 㤈 44245443 怭 44245534 怺 @@ -52093,6 +52799,7 @@ 44534414312511 窨 44534414312511121 䆹 445344143125111515111 竉 +44534414312511211 䆹 445344143135111515111 竉 445344143135411515111 竉 445344311214444 窯 @@ -52307,6 +53014,7 @@ 44535414312511 窨 44535414312511121 䆹 445354143125111515111 竉 +44535414312511211 䆹 445354143135111515111 竉 445354143135411515111 竉 44535415411234 察 @@ -52334,6 +53042,7 @@ 4453545522 剜 44535455251214 䗕 44535455254311214444 䵫 +44535455254312114444 䵫 4453545532511154444 鵷 4453545535451 鹓 445354554 迱 @@ -52389,6 +53098,12 @@ 445442251131121 㝭 4454511534 㝗 445454 㝎 +44545434 宓 +4454543425111 䁇 +4454543425121 寗 +44545434251214 蜜 +44545434252 密 +4454543425221 䀄 445454425112 甯 445454425121 𡩋 445454425221 寍 @@ -52727,6 +53442,7 @@ 45234122341251 褡 452341224511353334 䙩 452341234123411234 襟 +452341234343412341343112 襻 4523412343454 䘴 4523412344 䘤 4523412354 䘤 @@ -52895,6 +53611,7 @@ 4523425111535 裩 4523425111553 裩 4523425112 䘥 +452342511211 裡 4523425112112112 襅 4523425112511 裮 4523425112511125431234 襴 @@ -52961,10 +53678,16 @@ 45234312321511 䙄 4523431234 袮 45234312511121 褈 +45234312511211 褈 45234312511354 複 4523431254311214444 䙧 +4523431254312114444 䙧 452343134 袄 4523431525 袘 +45234321112525111343112 襷 +45234321112535111343112 襷 +4523432111525111343112 襷 +4523432111535111343112 襷 45234321121 袵 452343212154 䘰 4523432121554 䘰 @@ -53124,6 +53847,7 @@ 45234451325122 褊 45234451512 裈 452344535 衴 +4523445434 袐 4523445443 袐 45234511121251124 襑 4523451124134 䘵 @@ -53434,6 +54158,7 @@ 4524443251112 禅 4524451251112 禈 45244525114134 䄙 +452445434 祕 452445443 祕 45245 礼 452451124134 禄 @@ -53605,7 +54330,11 @@ 454315112234 谦 454325135 说 4543344334 谈 -45434 议 +45434 必议 +454342511135 覕 +4543432511154444 鴓 +4543452 邲 +45434552 邲 4544 心 4544251 吢 45443 必 @@ -53622,6 +54351,7 @@ 45445315 诧 45451325122 谝 45451512 诨 +454543425221 谧 454544325221 谧 45511534 𬣳 45512 讯 @@ -54359,6 +55089,7 @@ 52125115244553 䪑 521251152451251112 韗 521251152454 違 +52125115245434 䪐 52125115245443 䪐 5212511524554 違 521251152512115154 䪗 @@ -54601,6 +55332,7 @@ 52251112134 隄 522511135 䧋 52251113533 陽 +522511211 䧉 52251125214 隅 5225112554 隅 5225115545544444 隰 @@ -54650,6 +55382,7 @@ 523121251 䧊 52312211211 陲 52312511121 隀 +52312511211 隀 52312511354 䧗 5231251214 蚩 523132 阩 @@ -54923,6 +55656,7 @@ 531121225134 媖 5311212252214525111 㜴 5311212312511121 嬞 +5311212312511211 嬞 53112123215 婲 53112123235 婲 53112123241112154 嬳 @@ -54985,6 +55719,7 @@ 53112225134 媖 531122252214525111 㜴 531122312511121 嬞 +531122312511211 嬞 5311223215 婲 5311223235 婲 5311223241112154 嬳 @@ -55145,6 +55880,7 @@ 531211225134 媖 5312112252214525111 㜴 5312112312511121 嬞 +5312112312511211 嬞 53121123215 婲 53121123235 婲 53121123241112154 嬳 @@ -55199,6 +55935,7 @@ 53125111535 婫 53125111553 婫 53125112 妽 +5312511211 娌 5312511234 桇 53125112511 娼 531251125111 媢 @@ -55283,6 +56020,7 @@ 5312534125221 媼 53125342511 㛥 531254311214444 嫼 +531254312114444 嫼 53125525251 媧 53131112111 婔 5313112 妦 @@ -55313,6 +56051,7 @@ 5313123453 㛢 53131234531 婑 531312511121 媑 +531312511211 媑 5313134 妖 53131342344 婖 531313425125251 嬌 @@ -55322,7 +56061,12 @@ 5313155414 娒 5313155441 娒 531321111251 㜃 +53132111252511134 嬩 +53132111253511134 嬩 +5313211152511134 嬩 +5313211153511134 嬩 531321121 姙 +5313211251251511134 嬹 5313211511254 嫂 53132121 㚱 5313212134 娦 @@ -55655,6 +56399,7 @@ 531451325122 媥 5314525114134 嫇 5314535 妉㚮 +53145434 妼 5314544 㣽 53145443 妼 531511 妇 @@ -56049,6 +56794,7 @@ 5332511154444 鳩鳭䲥 53325111553 猑 53325112 狎 +5332511211 狸 533251122 狦 53325112511 猖 53325112512531 㺏 @@ -56112,9 +56858,14 @@ 5333123422 猁 53331234531 㹻 53331254311214444 獯 +53331254312114444 獯 533313425125251 獢 533315 犵 53331525 狏 +53332111252511134 㺞 +53332111253511134 㺞 +5333211152511134 㺞 +5333211153511134 㺞 5333211511254 獀 5333212154 狿 53332121554 狿 @@ -56240,6 +56991,7 @@ 53341351135112 㺎 53341431251112 獐 533414312511121 獞 +533414312511211 獞 53341431251135 獍 53341554 㹡 5334311124544 㺊 @@ -56425,12 +57177,14 @@ 534215534215 歰 53431325111 馗 534332534 飛 +53433253445434 𢞵 5343325344544 𢝵 53433253445443 𢞵 534332534534332534534332534 飝 534334132511134 熲 534334132534 颎 534335342 飛 +53433534245434 𢞵 5343353424544 𢝵 53433534245443 𢞵 534335342534335342534335342 飝 @@ -56460,6 +57214,7 @@ 535335254 㿫 5353413534 䘡 5353431234 粊 +535345434 毖 535345443 毖 535353 刕劦 5353532511 脅脋 @@ -56859,6 +57614,7 @@ 54523354534334 熃 5452335453531 㜈 54523414312511121 䂌 +54523414312511211 䂌 545235121 䂇 545235211 䂇 545235251353334 豫 @@ -57031,6 +57787,7 @@ 55125342534531 缨 55125351 驷 551254311214444121 𬙊 +551254312114444121 𬙊 5513 毋 55131112111 绯𬴂 551311213251 𬴃 @@ -57051,6 +57808,7 @@ 5513123435 绣 5513123453 绣 55131254311214444 𫄸 +55131254312114444 𫄸 551313432 骄 551315 纥 551321113554 缎 @@ -57125,6 +57883,7 @@ 55141251521 𬘯 551413 纩 5514132511121 缠 +5514132511211 缠 5514134 纹𫘜 551413434 绞 55141345225214 缡 @@ -57370,6 +58129,7 @@ 552251112134 隄 5522511135 䧋 552251113533 陽 +5522511211 䧉 552251125214 隅 55225112554 隅 55225115545544444 隰 @@ -57397,6 +58157,7 @@ 5523121251 䧊 552312211211 陲 552312511121 隀 +552312511211 隀 552312511354 䧗 5523132 阩 5523132121 陞 @@ -57711,6 +58472,7 @@ 554234121225221134534 䌩 554234121225221134543 䌩 554234121231254311214444 䌲 +554234121231254312114444 䌲 5542341212324111214444 䌭 5542341212341251 䌋 5542341212353344544 繱 @@ -57761,6 +58523,7 @@ 55423412225221134534 䌩 55423412225221134543 䌩 55423412231254311214444 䌲 +55423412231254312114444 䌲 554234122324111214444 䌭 554234122341251 䌋 554234122353344544 繱 @@ -57860,6 +58623,8 @@ 554234132511121 緾 5542341325111214444121 纒 554234132511134 䋶 +554234132511211 緾 +5542341325112114444121 纒 554234132511454544354 纋 554234132512534 𦂥 554234132522111 緬 @@ -57936,6 +58701,7 @@ 554234211225221134534 䌩 554234211225221134543 䌩 554234211231254311214444 䌲 +554234211231254312114444 䌲 5542342112324111214444 䌭 5542342112341251 䌋 5542342112353344544 繱 @@ -57995,6 +58761,7 @@ 55423425111535 緄 55423425111553 緄 55423425112 紳 +5542342511211 䋥 55423425112112112 縪 554234251122111 緝 5542342511243135 縨 @@ -58072,6 +58839,7 @@ 554234253434 䋞 5542342535251 綗 554234254311214444121 纆 +554234254312114444121 纆 55423425431252 綱 55423425431415 網 55423425525251 緺 @@ -58103,8 +58871,10 @@ 5542343123453 綉 55423431234531 緌 554234312511121 緟 +554234312511211 緟 554234312511354 緮 55423431254311214444 纁 +55423431254312114444 纁 55423431342344 䋬 554234313425125251 繑 55423431431444525151 䌣 @@ -58293,6 +59063,8 @@ 55423441312351235 䌕 554234413251112134121 纏 554234413251112135121 纏 +554234413251121134121 纏 +554234413251121135121 纏 5542344134 紋 55423441343112 緕 55423441343211 緕 @@ -58397,6 +59169,7 @@ 55423444535 紽 55423444535455 綩 5542344454143112 縡 +55423444545434252 䌏 55423444545443252 䌏 55423444551251 綰 55423444553 紽 @@ -58533,6 +59306,7 @@ 554444121225221134534 䌩 554444121225221134543 䌩 554444121231254311214444 䌲 +554444121231254312114444 䌲 5544441212324111214444 䌭 5544441212341251 䌋 5544441212353344544 繱 @@ -58583,6 +59357,7 @@ 55444412225221134534 䌩 55444412225221134543 䌩 55444412231254311214444 䌲 +55444412231254312114444 䌲 554444122324111214444 䌭 554444122341251 䌋 554444122353344544 繱 @@ -58682,6 +59457,8 @@ 554444132511121 緾 5544441325111214444121 纒 554444132511134 䋶 +554444132511211 緾 +5544441325112114444121 纒 554444132511454544354 纋 554444132512534 𦂥 554444132522111 緬 @@ -58758,6 +59535,7 @@ 554444211225221134534 䌩 554444211225221134543 䌩 554444211231254311214444 䌲 +554444211231254312114444 䌲 5544442112324111214444 䌭 5544442112341251 䌋 5544442112353344544 繱 @@ -58817,6 +59595,7 @@ 55444425111535 緄 55444425111553 緄 55444425112 紳 +5544442511211 䋥 55444425112112112 縪 554444251122111 緝 5544442511243135 縨 @@ -58894,6 +59673,7 @@ 554444253434 䋞 5544442535251 綗 554444254311214444121 纆 +554444254312114444121 纆 55444425431252 綱 55444425431415 網 55444425525251 緺 @@ -58925,8 +59705,10 @@ 5544443123453 綉 55444431234531 緌 554444312511121 緟 +554444312511211 緟 554444312511354 緮 55444431254311214444 纁 +55444431254312114444 纁 55444431342344 䋬 554444313425125251 繑 55444431431444525151 䌣 @@ -59115,6 +59897,8 @@ 55444441312351235 䌕 554444413251112134121 纏 554444413251112135121 纏 +554444413251121134121 纏 +554444413251121135121 纏 5544444134 紋 55444441343112 緕 55444441343211 緕 @@ -59219,6 +60003,7 @@ 55444444535 紽 55444444535455 綩 5544444454143112 縡 +55444444545434252 䌏 55444444545443252 䌏 55444444551251 綰 55444444553 紽 diff --git a/app/src/main/assets/webview.css b/app/src/main/assets/webview.css index d40768a7..803cdb4c 100644 --- a/app/src/main/assets/webview.css +++ b/app/src/main/assets/webview.css @@ -1,5 +1,5 @@ :root{ - --umbrella-orange: #FFCE73; + --umbrella-blue: #BBBBFF; --umbrella-yellow: #FFFF80; --key-fill: #181818; --enter-key-fill: #00CE00; @@ -25,7 +25,7 @@ body:lang(zh) { } a { - color: var(--umbrella-orange); + color: var(--umbrella-blue); } footer { diff --git a/app/src/main/java/io/github/yawnoc/strokeinput/CandidatesViewAdapter.java b/app/src/main/java/io/github/yawnoc/strokeinput/CandidatesViewAdapter.java index f6d49d65..11f3b138 100644 --- a/app/src/main/java/io/github/yawnoc/strokeinput/CandidatesViewAdapter.java +++ b/app/src/main/java/io/github/yawnoc/strokeinput/CandidatesViewAdapter.java @@ -27,12 +27,12 @@ public class CandidatesViewAdapter { private CandidateListener candidateListener; private final LayoutInflater layoutInflater; - private final List candidateList; + private final List candidates; - CandidatesViewAdapter(final Context context, final List candidateList) + CandidatesViewAdapter(final Context context, final List candidates) { this.layoutInflater = LayoutInflater.from(context); - this.candidateList = candidateList; + this.candidates = candidates; } public interface CandidateListener @@ -46,10 +46,10 @@ public void setCandidateListener(final CandidateListener candidateListener) } @SuppressLint("NotifyDataSetChanged") - public void updateCandidateList(final List candidateList) + public void updateCandidates(final List candidates) { - this.candidateList.clear(); - this.candidateList.addAll(candidateList); + this.candidates.clear(); + this.candidates.addAll(candidates); notifyDataSetChanged(); } @@ -64,14 +64,14 @@ public ButtonHolder onCreateViewHolder(@NonNull final ViewGroup viewGroup, final @Override public void onBindViewHolder(@NonNull final ButtonHolder buttonHolder, final int candidateIndex) { - final String candidate = candidateList.get(candidateIndex); + final String candidate = candidates.get(candidateIndex); buttonHolder.candidateButton.setText(candidate); } @Override public int getItemCount() { - return candidateList.size(); + return candidates.size(); } public class ButtonHolder diff --git a/app/src/main/java/io/github/yawnoc/strokeinput/InputContainer.java b/app/src/main/java/io/github/yawnoc/strokeinput/InputContainer.java index f3fcdbeb..0600203c 100644 --- a/app/src/main/java/io/github/yawnoc/strokeinput/InputContainer.java +++ b/app/src/main/java/io/github/yawnoc/strokeinput/InputContainer.java @@ -1,5 +1,5 @@ /* - Copyright 2021--2023 Conway + Copyright 2021--2025 Conway Licensed under the GNU General Public License v3.0 (GPL-3.0-only). This is free software with NO WARRANTY etc. etc., see LICENSE or . @@ -8,25 +8,33 @@ package io.github.yawnoc.strokeinput; import android.content.Context; +import android.graphics.Insets; import android.graphics.Typeface; +import android.os.Build; import android.util.AttributeSet; import android.view.View; +import android.view.ViewGroup; import android.view.ViewTreeObserver; -import android.widget.FrameLayout; +import android.view.WindowInsets; +import android.widget.LinearLayout; + +import androidx.core.view.WindowInsetsCompat; import java.util.List; /* A container that holds: - 1. Main input plane: - - Popup recess - - Stroke sequence bar - - Candidates view - - Keyboard view - 2. Key preview plane (overlaid) + 1. Main input block: + (a) Main input plane: + - Popup recess + - Stroke sequence bar + - Candidates view + - Keyboard view + (b) Key preview plane (overlaid) + 2. Bottom spacer (needed in API level 35+ for edge-to-edge bottom padding) */ public class InputContainer - extends FrameLayout + extends LinearLayout { // Container properties private View popupRecess; @@ -34,6 +42,23 @@ public class InputContainer private CandidatesView candidatesView; private CandidatesViewAdapter candidatesViewAdapter; private KeyboardView keyboardView; + private View bottomSpacer; + + @Override + public WindowInsets onApplyWindowInsets(WindowInsets insets) + { + super.onApplyWindowInsets(insets); + + if (Build.VERSION.SDK_INT >= 35) // needed in API level 35+ for edge-to-edge bottom padding + { + final Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + ViewGroup.LayoutParams layoutParameters = bottomSpacer.getLayoutParams(); + layoutParameters.height = systemBars.bottom; + bottomSpacer.setLayoutParams(layoutParameters); + } + + return insets; + } public InputContainer(final Context context, final AttributeSet attributes) { @@ -70,6 +95,11 @@ public void initialiseKeyboardView( keyboardView.setKeyboard(keyboard); } + public void initialiseBottomSpacer() + { + bottomSpacer = findViewById(R.id.bottom_spacer); + } + public void setPopupRecessLayout(final boolean isFullscreen) { if (isFullscreen) @@ -113,9 +143,9 @@ public void setStrokeDigitSequence(final String strokeDigitSequence) strokeSequenceBar.setStrokeDigitSequence(strokeDigitSequence); } - public void setCandidateList(final List candidateList) + public void setCandidates(final List candidates) { - candidatesViewAdapter.updateCandidateList(candidateList); + candidatesViewAdapter.updateCandidates(candidates); candidatesView.scrollToPosition(0); } @@ -141,6 +171,7 @@ public void setKeyRepeatIntervalMilliseconds(final int milliseconds) public void redrawKeyboard() { + keyboardView.requestLayout(); keyboardView.invalidate(); } } diff --git a/app/src/main/java/io/github/yawnoc/strokeinput/Key.java b/app/src/main/java/io/github/yawnoc/strokeinput/Key.java index 17a97851..29b7fc0f 100644 --- a/app/src/main/java/io/github/yawnoc/strokeinput/Key.java +++ b/app/src/main/java/io/github/yawnoc/strokeinput/Key.java @@ -1,5 +1,5 @@ /* - Copyright 2021, 2023 Conway + Copyright 2021, 2023--2025 Conway Licensed under the GNU General Public License v3.0 (GPL-3.0-only). This is free software with NO WARRANTY etc. etc., see LICENSE or . @@ -45,7 +45,7 @@ public class Key public String valueTextShifted; // overrides displayText drawn when shifted // Key dimensions - public int width; + public int width, naturalWidth; public int height, naturalHeight; // Key styles @@ -55,13 +55,13 @@ public class Key public int textColour; public int textSwipeColour; public int textSize; - public int textOffsetX; + public int textOffsetX, naturalTextOffsetX; public int textOffsetY, naturalTextOffsetY; public float previewMagnification; public int previewMarginY, naturalPreviewMarginY; // Key position - public int x; + public int x, naturalX; public int y, naturalY; // Key meta-properties @@ -70,7 +70,7 @@ public class Key public Key(final Row parentRow) { grandparentKeyboard = parentRow.parentKeyboard; - width = parentRow.keyWidth; + width = naturalWidth = parentRow.keyWidth; height = naturalHeight = parentRow.keyHeight; } @@ -83,7 +83,7 @@ public Key(final Row parentRow, { this(parentRow); - this.x = x; + this.x = naturalX = x; this.y = naturalY = y; final TypedArray attributesArray = @@ -114,7 +114,7 @@ else if (valueTextShifted == null) valueTextShifted = displayText; } - width = + width = naturalWidth = Valuey.getDimensionOrFraction( attributesArray, R.styleable.Key_keyWidth, @@ -139,7 +139,8 @@ else if (valueTextShifted == null) textColour = attributesArray.getColor(R.styleable.Key_keyTextColour, parentRow.keyTextColour); textSwipeColour = attributesArray.getColor(R.styleable.Key_keyTextSwipeColour, parentRow.keyTextSwipeColour); textSize = attributesArray.getDimensionPixelSize(R.styleable.Key_keyTextSize, parentRow.keyTextSize); - textOffsetX = attributesArray.getDimensionPixelSize(R.styleable.Key_keyTextOffsetX, parentRow.keyTextOffsetX); + textOffsetX = naturalTextOffsetX = + attributesArray.getDimensionPixelSize(R.styleable.Key_keyTextOffsetX, parentRow.keyTextOffsetX); textOffsetY = naturalTextOffsetY = attributesArray.getDimensionPixelSize(R.styleable.Key_keyTextOffsetY, parentRow.keyTextOffsetY); @@ -166,7 +167,9 @@ public boolean containsPoint(final int x, final int y) && (this.isExtendedRight || x <= this.x + this.width) && - this.y <= y && y <= this.y + this.height + this.y <= y + && + y <= this.y + this.height ); } diff --git a/app/src/main/java/io/github/yawnoc/strokeinput/KeyPreviewPlane.java b/app/src/main/java/io/github/yawnoc/strokeinput/KeyPreviewPlane.java index aa6c905d..33f373f5 100644 --- a/app/src/main/java/io/github/yawnoc/strokeinput/KeyPreviewPlane.java +++ b/app/src/main/java/io/github/yawnoc/strokeinput/KeyPreviewPlane.java @@ -39,7 +39,7 @@ public class KeyPreviewPlane private int width; private int height; private int keyboardHeight; - private final List keyList = new ArrayList<>(); + private final List keys = new ArrayList<>(); private Key latestKey; private int shiftMode = KeyboardView.SHIFT_DISABLED; @@ -77,7 +77,7 @@ private void initialiseDismissalHandler() public void handleMessage(@NonNull Message message) { Key key = (Key) message.obj; - keyList.remove(key); + keys.remove(key); invalidate(); } }; @@ -117,9 +117,9 @@ public void updateShiftMode(final int shiftMode) public void showPreviewAt(final Key key) { - if (key != null && !keyList.contains(key) && key.isPreviewable) + if (key != null && !keys.contains(key) && key.isPreviewable) { - keyList.add(key); + keys.add(key); } latestKey = key; invalidate(); @@ -127,7 +127,7 @@ public void showPreviewAt(final Key key) public void movePreviewTo(final Key key) { - keyList.remove(latestKey); + keys.remove(latestKey); showPreviewAt(key); } @@ -141,7 +141,7 @@ public void dismissLatest() public void dismissAllImmediately() { - keyList.clear(); + keys.clear(); latestKey = null; invalidate(); } @@ -149,7 +149,7 @@ public void dismissAllImmediately() @Override public void onDraw(@NonNull final Canvas canvas) { - for (final Key key : keyList) + for (final Key key : keys) { final int keyPreviewWidth = (int) (key.previewMagnification * key.width); final int keyPreviewHeight = (int) (key.previewMagnification * key.height); diff --git a/app/src/main/java/io/github/yawnoc/strokeinput/Keyboard.java b/app/src/main/java/io/github/yawnoc/strokeinput/Keyboard.java index 6310f519..beb9e42e 100644 --- a/app/src/main/java/io/github/yawnoc/strokeinput/Keyboard.java +++ b/app/src/main/java/io/github/yawnoc/strokeinput/Keyboard.java @@ -1,5 +1,5 @@ /* - Copyright 2021--2023 Conway + Copyright 2021--2025 Conway Licensed under the GNU General Public License v3.0 (GPL-3.0-only). This is free software with NO WARRANTY etc. etc., see LICENSE or . @@ -26,6 +26,7 @@ import android.content.res.XmlResourceParser; import android.graphics.Color; import android.util.DisplayMetrics; +import android.util.Log; import android.util.Xml; import java.util.ArrayList; @@ -38,6 +39,8 @@ */ public class Keyboard { + private static final String LOG_TAG = "Keyboard"; + private static final String KEYBOARD_TAG = "Keyboard"; private static final String ROW_TAG = "Row"; private static final String KEY_TAG = "Key"; @@ -69,7 +72,7 @@ public class Keyboard private final Context applicationContext; private int width; private int height, naturalHeight; - private final List keyList; + private final List keys; public int fillColour; // Key properties @@ -94,7 +97,8 @@ public class Keyboard public Keyboard(final Context context, final int layoutResourceId) { - final DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); + final Resources resources = context.getResources(); + final DisplayMetrics displayMetrics = resources.getDisplayMetrics(); applicationContext = context.getApplicationContext(); screenWidth = displayMetrics.widthPixels; @@ -106,15 +110,15 @@ public Keyboard(final Context context, final int layoutResourceId) defaultKeyTextSizePx = (int) Valuey.pxFromSp(DEFAULT_KEY_TEXT_SIZE_SP, displayMetrics); defaultKeyPreviewMarginYPx = (int) Valuey.pxFromDp(DEFAULT_KEY_PREVIEW_MARGIN_Y_DP, displayMetrics); - keyList = new ArrayList<>(); + keys = new ArrayList<>(); - makeKeyboard(context, context.getResources().getXml(layoutResourceId)); + makeKeyboard(context, resources.getXml(layoutResourceId)); adjustKeyboardHeight(); } - public List getKeyList() + public List getKeys() { - return keyList; + return keys; } public int getWidth() @@ -175,7 +179,7 @@ private void makeKeyboard(final Context context, final XmlResourceParser xmlReso case KEY_TAG: inKey = true; key = new Key(row, x, y, resources, xmlResourceParser); - keyList.add(key); + keys.add(key); break; } break; @@ -202,7 +206,18 @@ else if (inRow) } catch (Exception exception) { - exception.printStackTrace(); + Log.e(LOG_TAG, "makeKeyboard failed", exception); + } + } + + public void correctKeyboardWidth(int inputContainerWidth) + { + final float correctionFactor = ((float) inputContainerWidth) / screenWidth; + for (final Key key : keys) + { + key.x = (int) (key.naturalX * correctionFactor); + key.width = (int) (key.naturalWidth * correctionFactor); + key.textOffsetX = (int) (key.naturalTextOffsetX * correctionFactor); } } @@ -212,7 +227,7 @@ public void adjustKeyboardHeight() final float userAdjustmentFactor = MainActivity.keyboardHeightAdjustmentProgressToFactor(userAdjustmentProgress); final float actualAdjustmentFactor = Math.min(userAdjustmentFactor, KEYBOARD_HEIGHT_MAX_FRACTION * screenHeight / naturalHeight); - for (final Key key : keyList) + for (final Key key : keys) { key.y = (int) (key.naturalY * actualAdjustmentFactor); key.height = (int) (key.naturalHeight * actualAdjustmentFactor); diff --git a/app/src/main/java/io/github/yawnoc/strokeinput/KeyboardView.java b/app/src/main/java/io/github/yawnoc/strokeinput/KeyboardView.java index 87c50fb6..12d3ccb0 100644 --- a/app/src/main/java/io/github/yawnoc/strokeinput/KeyboardView.java +++ b/app/src/main/java/io/github/yawnoc/strokeinput/KeyboardView.java @@ -72,7 +72,7 @@ public class KeyboardView private LinearLayout mainInputPlane; private KeyPreviewPlane keyPreviewPlane; private Keyboard keyboard; - private List keyList; + private List keys; // Active key private Key activeKey; @@ -196,7 +196,7 @@ public void setKeyboard(final Keyboard keyboard) { keyboardListener.saveKeyboard(keyboard); this.keyboard = keyboard; - keyList = keyboard.getKeyList(); + keys = keyboard.getKeys(); keyboardFillPaint.setColor(keyboard.fillColour); if (shiftMode != SHIFT_PERSISTENT) { @@ -256,7 +256,7 @@ public void onDraw(@NonNull final Canvas canvas) canvas.drawRect(keyboardRectangle, keyboardFillPaint); - for (final Key key : keyList) + for (final Key key : keys) { keyRectangle.set(0, 0, key.width, key.height); @@ -623,7 +623,7 @@ private void sendShiftUpEvent(boolean shouldRedrawKeyboard) private Key getKeyAtPoint(final int x, final int y) { - for (final Key key : keyList) + for (final Key key : keys) { if (key.containsPoint(x, y)) { diff --git a/app/src/main/java/io/github/yawnoc/strokeinput/MainActivity.java b/app/src/main/java/io/github/yawnoc/strokeinput/MainActivity.java index 8da11804..540a01c0 100644 --- a/app/src/main/java/io/github/yawnoc/strokeinput/MainActivity.java +++ b/app/src/main/java/io/github/yawnoc/strokeinput/MainActivity.java @@ -1,5 +1,5 @@ /* - Copyright 2021--2023 Conway + Copyright 2021--2025 Conway Licensed under the GNU General Public License v3.0 (GPL-3.0-only). This is free software with NO WARRANTY etc. etc., see LICENSE or . @@ -50,7 +50,7 @@ public class MainActivity private static final String ASSETS_DIRECTORY = "file:///android_asset/"; private static final String SOURCE_CODE_URI = "https://github.com/stroke-input/stroke-input-android"; private static final String PRIVACY_POLICY_URI = - "https://github.com/stroke-input/stroke-input-android/blob/master/PRIVACY.md#privacy-policy"; + "https://github.com/stroke-input/stroke-input-android/blob/master/PRIVACY.md#privacy-policy-english-version"; AlertDialog.Builder candidateOrderDialogBuilder; Dialog candidateOrderDialog; @@ -61,6 +61,7 @@ public class MainActivity protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); + getTheme().applyStyle(R.style.NoEdgeToEdge, false); setTitle(R.string.label__main_activity__welcome); setContentView(R.layout.main_activity); @@ -92,13 +93,13 @@ public void onStartTrackingTouch(SeekBar seekBar) @Override public void onStopTrackingTouch(SeekBar seekBar) { - // Hide and reshow keyboard to trigger height readjustment + // Trigger height readjustment and ensure keyboard shown final View focusView = getCurrentFocus(); if (focusView != null) { final InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager.hideSoftInputFromWindow(focusView.getWindowToken(), 0); + inputMethodManager.restartInput(focusView); inputMethodManager.showSoftInput(findViewById(R.id.test_input), InputMethodManager.SHOW_IMPLICIT); } } diff --git a/app/src/main/java/io/github/yawnoc/strokeinput/StrokeInputService.java b/app/src/main/java/io/github/yawnoc/strokeinput/StrokeInputService.java index 02d62910..44ee824b 100644 --- a/app/src/main/java/io/github/yawnoc/strokeinput/StrokeInputService.java +++ b/app/src/main/java/io/github/yawnoc/strokeinput/StrokeInputService.java @@ -1,5 +1,5 @@ /* - Copyright 2021--2023 Conway + Copyright 2021--2025 Conway Licensed under the GNU General Public License v3.0 (GPL-3.0-only). This is free software with NO WARRANTY etc. etc., see LICENSE or . @@ -127,30 +127,30 @@ public class StrokeInputService private Map nameFromKeyboard; private Map keyboardFromName; - private Set keyboardSet; + private Set keyboards; private InputContainer inputContainer; private final NavigableMap charactersFromStrokeDigitSequence = new TreeMap<>(); - private final Set codePointSetTraditional = new HashSet<>(); - private final Set codePointSetSimplified = new HashSet<>(); + private final Set codePointsTraditional = new HashSet<>(); + private final Set codePointsSimplified = new HashSet<>(); private final Map sortingRankFromCodePointTraditional = new HashMap<>(); private final Map sortingRankFromCodePointSimplified = new HashMap<>(); - private final Set commonCodePointSetTraditional = new HashSet<>(); - private final Set commonCodePointSetSimplified = new HashSet<>(); - private final NavigableSet phraseSetTraditional = new TreeSet<>(); - private final NavigableSet phraseSetSimplified = new TreeSet<>(); + private final Set commonCodePointsTraditional = new HashSet<>(); + private final Set commonCodePointsSimplified = new HashSet<>(); + private final NavigableSet phrasesTraditional = new TreeSet<>(); + private final NavigableSet phrasesSimplified = new TreeSet<>(); - private Set unpreferredCodePointSet; + private Set unpreferredCodePoints; private Map sortingRankFromCodePoint; - private Set commonCodePointSet; - private NavigableSet phraseSet; + private Set commonCodePoints; + private NavigableSet phrases; private String strokeDigitSequence = ""; - private List candidateList = new ArrayList<>(); - private final List phraseCompletionFirstCodePointList = new ArrayList<>(); + private List candidates = new ArrayList<>(); + private final List phraseCompletionFirstCodePoints = new ArrayList<>(); - private int inputOptionsBits; + private int inputActionsBits; private boolean enterKeyHasAction; private boolean inputIsPassword; @@ -159,13 +159,13 @@ public void onCreate() { super.onCreate(); - loadSequenceCharactersDataIntoMap(SEQUENCE_CHARACTERS_FILE_NAME, charactersFromStrokeDigitSequence); - loadCharactersIntoCodePointSet(CHARACTERS_FILE_NAME_TRADITIONAL, codePointSetTraditional); - loadCharactersIntoCodePointSet(CHARACTERS_FILE_NAME_SIMPLIFIED, codePointSetSimplified); - loadRankingData(RANKING_FILE_NAME_TRADITIONAL, sortingRankFromCodePointTraditional, commonCodePointSetTraditional); - loadRankingData(RANKING_FILE_NAME_SIMPLIFIED, sortingRankFromCodePointSimplified, commonCodePointSetSimplified); - loadPhrasesIntoSet(PHRASES_FILE_NAME_TRADITIONAL, phraseSetTraditional); - loadPhrasesIntoSet(PHRASES_FILE_NAME_SIMPLIFIED, phraseSetSimplified); + loadSequenceCharactersData(SEQUENCE_CHARACTERS_FILE_NAME, charactersFromStrokeDigitSequence); + loadCharactersData(CHARACTERS_FILE_NAME_TRADITIONAL, codePointsTraditional); + loadCharactersData(CHARACTERS_FILE_NAME_SIMPLIFIED, codePointsSimplified); + loadRankingData(RANKING_FILE_NAME_TRADITIONAL, sortingRankFromCodePointTraditional, commonCodePointsTraditional); + loadRankingData(RANKING_FILE_NAME_SIMPLIFIED, sortingRankFromCodePointSimplified, commonCodePointsSimplified); + loadPhrasesData(PHRASES_FILE_NAME_TRADITIONAL, phrasesTraditional); + loadPhrasesData(PHRASES_FILE_NAME_SIMPLIFIED, phrasesSimplified); updateCandidateOrderPreference(); } @@ -189,13 +189,14 @@ public View onCreateInputView() nameFromKeyboard.put(qwertyKeyboard, QWERTY_KEYBOARD_NAME); nameFromKeyboard.put(qwertySymbolsKeyboard, QWERTY_SYMBOLS_KEYBOARD_NAME); keyboardFromName = Mappy.invertMap(nameFromKeyboard); - keyboardSet = nameFromKeyboard.keySet(); + keyboards = nameFromKeyboard.keySet(); inputContainer = (InputContainer) getLayoutInflater().inflate(R.layout.input_container, null); inputContainer.initialisePopupRecess(); inputContainer.initialiseStrokeSequenceBar(this); inputContainer.initialiseCandidatesView(this); inputContainer.initialiseKeyboardView(this, loadSavedKeyboard()); + inputContainer.initialiseBottomSpacer(); return inputContainer; } @@ -218,11 +219,11 @@ private Keyboard loadSavedKeyboard() @SuppressWarnings("BooleanMethodIsAlwaysInverted") private static boolean isCommentLine(final String line) { - return line.startsWith("#") || line.length() == 0; + return line.startsWith("#") || line.isEmpty(); } @SuppressWarnings("SameParameterValue") - private void loadSequenceCharactersDataIntoMap( + private void loadSequenceCharactersData( final String sequenceCharactersFileName, final Map charactersFromStrokeDigitSequence ) @@ -248,14 +249,14 @@ private void loadSequenceCharactersDataIntoMap( } catch (IOException exception) { - exception.printStackTrace(); + Log.e(LOG_TAG, "loadSequenceCharactersData failed", exception); } final long endMilliseconds = System.currentTimeMillis(); sendLoadingTimeLog(sequenceCharactersFileName, startMilliseconds, endMilliseconds); } - private void loadCharactersIntoCodePointSet(final String charactersFileName, final Set codePointSet) + private void loadCharactersData(final String charactersFileName, final Set codePoints) { final long startMilliseconds = System.currentTimeMillis(); @@ -269,13 +270,13 @@ private void loadCharactersIntoCodePointSet(final String charactersFileName, fin { if (!isCommentLine(line)) { - codePointSet.add(Stringy.getFirstCodePoint(line)); + codePoints.add(Stringy.getFirstCodePoint(line)); } } } catch (IOException exception) { - exception.printStackTrace(); + Log.e(LOG_TAG, "loadCharactersData failed", exception); } final long endMilliseconds = System.currentTimeMillis(); @@ -285,7 +286,7 @@ private void loadCharactersIntoCodePointSet(final String charactersFileName, fin private void loadRankingData( final String rankingFileName, final Map sortingRankFromCodePoint, - final Set commonCodePointSet + final Set commonCodePoints ) { final long startMilliseconds = System.currentTimeMillis(); @@ -310,7 +311,7 @@ private void loadRankingData( } if (currentRank < LAG_PREVENTION_CODE_POINT_COUNT) { - commonCodePointSet.add(codePoint); + commonCodePoints.add(codePoint); } } } @@ -318,14 +319,14 @@ private void loadRankingData( } catch (IOException exception) { - exception.printStackTrace(); + Log.e(LOG_TAG, "loadRankingData failed", exception); } final long endMilliseconds = System.currentTimeMillis(); sendLoadingTimeLog(rankingFileName, startMilliseconds, endMilliseconds); } - private void loadPhrasesIntoSet(final String phrasesFileName, final Set phraseSet) + private void loadPhrasesData(final String phrasesFileName, final Set phrases) { final long startMilliseconds = System.currentTimeMillis(); @@ -339,13 +340,13 @@ private void loadPhrasesIntoSet(final String phrasesFileName, final Set { if (!isCommentLine(line)) { - phraseSet.add(line); + phrases.add(line); } } } catch (IOException exception) { - exception.printStackTrace(); + Log.e(LOG_TAG, "loadPhrasesData failed", exception); } final long endMilliseconds = System.currentTimeMillis(); @@ -366,7 +367,8 @@ public void onStartInput(final EditorInfo editorInfo, final boolean isRestarting { super.onStartInput(editorInfo, isRestarting); - inputOptionsBits = editorInfo.imeOptions; + final int inputOptionsBits = editorInfo.imeOptions; + inputActionsBits = inputOptionsBits & EditorInfo.IME_MASK_ACTION; enterKeyHasAction = (inputOptionsBits & EditorInfo.IME_FLAG_NO_ENTER_ACTION) == 0; final int inputTypeBits = editorInfo.inputType; @@ -403,7 +405,19 @@ public void onStartInputView(final EditorInfo editorInfo, final boolean isRestar { super.onStartInputView(editorInfo, isRestarting); - for (final Keyboard keyboard : keyboardSet) + inputContainer.post( // await layout so that width is available + () -> + { + final int inputContainerWidth = inputContainer.getWidth(); + for (final Keyboard keyboard : keyboards) + { + keyboard.correctKeyboardWidth(inputContainerWidth); // needed in API level 35+ due to edge-to-edge breakage + } + inputContainer.redrawKeyboard(); // key preview plane initialisation is buggy in landscape mode + } + ); + + for (final Keyboard keyboard : keyboards) { keyboard.adjustKeyboardHeight(); } @@ -415,7 +429,7 @@ public void onStartInputView(final EditorInfo editorInfo, final boolean isRestar inputContainer.setBackground(isFullscreen); inputContainer.setStrokeDigitSequence(strokeDigitSequence); - inputContainer.setCandidateList(candidateList); + inputContainer.setCandidates(candidates); setEnterKeyDisplayText(); } @@ -423,7 +437,7 @@ public void onStartInputView(final EditorInfo editorInfo, final boolean isRestar private void setEnterKeyDisplayText() { String enterKeyDisplayText = null; - switch (inputOptionsBits & EditorInfo.IME_MASK_ACTION) + switch (inputActionsBits) { case EditorInfo.IME_ACTION_DONE: enterKeyDisplayText = getString(R.string.display_text__done); @@ -454,9 +468,9 @@ private void setEnterKeyDisplayText() enterKeyDisplayText = getString(R.string.display_text__return); } - for (final Keyboard keyboard : keyboardSet) + for (final Keyboard keyboard : keyboards) { - for (final Key key : keyboard.getKeyList()) + for (final Key key : keyboard.getKeys()) { if (key.valueText.equals(ENTER_KEY_VALUE_TEXT)) { @@ -479,6 +493,13 @@ public void onComputeInsets(final Insets insets) } } + @Override + public boolean onEvaluateInputViewShown() + { + super.onEvaluateInputViewShown(); + return true; // override needed in API level 36 + } + @Override public void onCandidate(final String candidate) { @@ -490,7 +511,7 @@ public void onCandidate(final String candidate) inputConnection.commitText(candidate, 1); setStrokeDigitSequence(""); - setPhraseCompletionCandidateList(inputConnection); + setPhraseCompletionCandidates(inputConnection); } @Override @@ -543,27 +564,27 @@ public void onKey(final String valueText) private void effectStrokeAppend(final String strokeDigit) { final String newStrokeDigitSequence = strokeDigitSequence + strokeDigit; - final List newCandidateList = computeCandidateList(newStrokeDigitSequence); - if (newCandidateList.size() > 0) + final List newCandidates = computeCandidates(newStrokeDigitSequence); + if (!newCandidates.isEmpty()) { setStrokeDigitSequence(newStrokeDigitSequence); - setCandidateList(newCandidateList); + setCandidates(newCandidates); } } private void effectBackspace(final InputConnection inputConnection) { - if (strokeDigitSequence.length() > 0) + if (!strokeDigitSequence.isEmpty()) { final String newStrokeDigitSequence = Stringy.removeSuffixRegex("(?s).", strokeDigitSequence); - final List newCandidateList = computeCandidateList(newStrokeDigitSequence); + final List newCandidates = computeCandidates(newStrokeDigitSequence); setStrokeDigitSequence(newStrokeDigitSequence); - setCandidateList(newCandidateList); + setCandidates(newCandidates); - if (newStrokeDigitSequence.length() == 0) + if (newStrokeDigitSequence.isEmpty()) { - setPhraseCompletionCandidateList(inputConnection); + setPhraseCompletionCandidates(inputConnection); } inputContainer.setKeyRepeatIntervalMilliseconds(BACKSPACE_REPEAT_INTERVAL_MILLISECONDS_UTF_8); @@ -572,7 +593,7 @@ private void effectBackspace(final InputConnection inputConnection) { final String upToOneCharacterBeforeCursor = getTextBeforeCursor(inputConnection, 1); - if (upToOneCharacterBeforeCursor.length() > 0) + if (!upToOneCharacterBeforeCursor.isEmpty()) { final CharSequence selection = inputConnection.getSelectedText(0); if (TextUtils.isEmpty(selection)) @@ -590,7 +611,7 @@ private void effectBackspace(final InputConnection inputConnection) inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL)); } - setPhraseCompletionCandidateList(inputConnection); + setPhraseCompletionCandidates(inputConnection); final int nextBackspaceIntervalMilliseconds = (Stringy.isAscii(upToOneCharacterBeforeCursor)) @@ -608,7 +629,7 @@ private void effectKeyboardSwitch(final String keyboardName) private void effectSpaceKey(final InputConnection inputConnection) { - if (strokeDigitSequence.length() > 0) + if (!strokeDigitSequence.isEmpty()) { onCandidate(getFirstCandidate()); } @@ -620,13 +641,13 @@ private void effectSpaceKey(final InputConnection inputConnection) private void effectEnterKey(final InputConnection inputConnection) { - if (strokeDigitSequence.length() > 0) + if (!strokeDigitSequence.isEmpty()) { onCandidate(getFirstCandidate()); } else if (enterKeyHasAction) { - inputConnection.performEditorAction(inputOptionsBits); + inputConnection.performEditorAction(inputActionsBits); } else { @@ -636,7 +657,7 @@ else if (enterKeyHasAction) private void effectOrdinaryKey(final InputConnection inputConnection, final String valueText) { - if (strokeDigitSequence.length() > 0) + if (!strokeDigitSequence.isEmpty()) { return; } @@ -699,32 +720,32 @@ private void setStrokeDigitSequence(final String strokeDigitSequence) inputContainer.setStrokeDigitSequence(strokeDigitSequence); } - private void setCandidateList(final List candidateList) + private void setCandidates(final List candidates) { - this.candidateList = candidateList; - inputContainer.setCandidateList(candidateList); + this.candidates = candidates; + inputContainer.setCandidates(candidates); } - private void setPhraseCompletionCandidateList(final InputConnection inputConnection) + private void setPhraseCompletionCandidates(final InputConnection inputConnection) { - List phraseCompletionCandidateList = computePhraseCompletionCandidateList(inputConnection); + List phraseCompletionCandidates = computePhraseCompletionCandidates(inputConnection); - phraseCompletionFirstCodePointList.clear(); - for (final String phraseCompletionCandidate : phraseCompletionCandidateList) + phraseCompletionFirstCodePoints.clear(); + for (final String phraseCompletionCandidate : phraseCompletionCandidates) { - phraseCompletionFirstCodePointList.add(Stringy.getFirstCodePoint(phraseCompletionCandidate)); + phraseCompletionFirstCodePoints.add(Stringy.getFirstCodePoint(phraseCompletionCandidate)); } - setCandidateList(phraseCompletionCandidateList); + setCandidates(phraseCompletionCandidates); } /* Candidate comparator for a string. */ private Comparator candidateComparator( - final Set unpreferredCodePointSet, + final Set unpreferredCodePoints, final Map sortingRankFromCodePoint, - final List phraseCompletionFirstCodePointList + final List phraseCompletionFirstCodePoints ) { return @@ -732,9 +753,9 @@ private Comparator candidateComparator( string -> computeCandidateRank( string, - unpreferredCodePointSet, + unpreferredCodePoints, sortingRankFromCodePoint, - phraseCompletionFirstCodePointList + phraseCompletionFirstCodePoints ) ); } @@ -743,9 +764,9 @@ private Comparator candidateComparator( Candidate comparator for a code point. */ private Comparator candidateCodePointComparator( - final Set unpreferredCodePointSet, + final Set unpreferredCodePoints, final Map sortingRankFromCodePoint, - final List phraseCompletionFirstCodePointList + final List phraseCompletionFirstCodePoints ) { return @@ -754,9 +775,9 @@ private Comparator candidateCodePointComparator( computeCandidateRank( codePoint, 1, - unpreferredCodePointSet, + unpreferredCodePoints, sortingRankFromCodePoint, - phraseCompletionFirstCodePointList + phraseCompletionFirstCodePoints ) ); } @@ -766,9 +787,9 @@ private Comparator candidateCodePointComparator( */ private int computeCandidateRank( final String string, - final Set unpreferredCodePointSet, + final Set unpreferredCodePoints, final Map sortingRankFromCodePoint, - final List phraseCompletionFirstCodePointList + final List phraseCompletionFirstCodePoints ) { final int firstCodePoint = Stringy.getFirstCodePoint(string); @@ -778,9 +799,9 @@ private int computeCandidateRank( computeCandidateRank( firstCodePoint, stringLength, - unpreferredCodePointSet, + unpreferredCodePoints, sortingRankFromCodePoint, - phraseCompletionFirstCodePointList + phraseCompletionFirstCodePoints ); } @@ -790,17 +811,17 @@ private int computeCandidateRank( private int computeCandidateRank( final int firstCodePoint, final int stringLength, - final Set unpreferredCodePointSet, + final Set unpreferredCodePoints, final Map sortingRankFromCodePoint, - final List phraseCompletionFirstCodePointList + final List phraseCompletionFirstCodePoints ) { final int coarseRank; final int fineRank; final int penalty; - final boolean phraseCompletionListIsEmpty = phraseCompletionFirstCodePointList.size() == 0; - final int phraseCompletionIndex = phraseCompletionFirstCodePointList.indexOf(firstCodePoint); + final boolean phraseCompletionsIsEmpty = phraseCompletionFirstCodePoints.isEmpty(); + final int phraseCompletionIndex = phraseCompletionFirstCodePoints.indexOf(firstCodePoint); final boolean firstCodePointMatchesPhraseCompletionCandidate = phraseCompletionIndex > 0; final Integer sortingRank = sortingRankFromCodePoint.get(firstCodePoint); @@ -815,11 +836,11 @@ private int computeCandidateRank( final int lengthPenalty = (stringLength - 1) * RANKING_PENALTY_PER_CHAR; final int unpreferredPenalty = - (unpreferredCodePointSet.contains(firstCodePoint)) + (unpreferredCodePoints.contains(firstCodePoint)) ? RANKING_PENALTY_UNPREFERRED : 0; - if (phraseCompletionListIsEmpty) + if (phraseCompletionsIsEmpty) { coarseRank = Integer.MIN_VALUE; fineRank = sortingRankNonNull; @@ -841,30 +862,32 @@ else if (firstCodePointMatchesPhraseCompletionCandidate) return coarseRank + fineRank + penalty; } - private List computeCandidateList(final String strokeDigitSequence) + private List computeCandidates(final String strokeDigitSequence) { - if (strokeDigitSequence.length() == 0) + if (strokeDigitSequence.isEmpty()) { return Collections.emptyList(); } updateCandidateOrderPreference(); - final List exactMatchCandidateList; + final Set exactMatchCodePoints; + final List exactMatchCandidates; final String exactMatchCharacters = charactersFromStrokeDigitSequence.get(strokeDigitSequence); if (exactMatchCharacters != null) { - exactMatchCandidateList = Stringy.toCharacterList(exactMatchCharacters); - exactMatchCandidateList.sort( - candidateComparator(unpreferredCodePointSet, sortingRankFromCodePoint, phraseCompletionFirstCodePointList) + exactMatchCodePoints = Stringy.toCodePointSet(exactMatchCharacters); + exactMatchCandidates = Stringy.toCharacterList(exactMatchCharacters); + exactMatchCandidates.sort( + candidateComparator(unpreferredCodePoints, sortingRankFromCodePoint, phraseCompletionFirstCodePoints) ); } else { - exactMatchCandidateList = Collections.emptyList(); + exactMatchCodePoints = Collections.emptySet(); + exactMatchCandidates = Collections.emptyList(); } - final Set prefixMatchCodePointSet = new HashSet<>(); final Collection prefixMatchCharactersCollection = charactersFromStrokeDigitSequence .subMap( @@ -873,58 +896,38 @@ private List computeCandidateList(final String strokeDigitSequence) ) .values(); - final long addCodePointsStartMilliseconds = System.currentTimeMillis(); - for (final String characters : prefixMatchCharactersCollection) - { - Stringy.addCodePointsToSet(characters, prefixMatchCodePointSet); - } - final long addCodePointsEndMilliseconds = System.currentTimeMillis(); - if (BuildConfig.DEBUG) - { - final long durationMilliseconds = addCodePointsEndMilliseconds - addCodePointsStartMilliseconds; - Log.d(LOG_TAG, String.format("Added code points to set in %d ms", durationMilliseconds)); - } + final Set prefixMatchCodePoints = Stringy.toCodePointSet(prefixMatchCharactersCollection); - if (prefixMatchCodePointSet.size() > LAG_PREVENTION_CODE_POINT_COUNT) + prefixMatchCodePoints.removeAll(exactMatchCodePoints); + if (prefixMatchCodePoints.size() > LAG_PREVENTION_CODE_POINT_COUNT) { - prefixMatchCodePointSet.retainAll(commonCodePointSet); + prefixMatchCodePoints.retainAll(commonCodePoints); } - final List prefixMatchCandidateCodePointList = new ArrayList<>(prefixMatchCodePointSet); - final long sortPrefixMatchesStartMilliseconds = System.currentTimeMillis(); - prefixMatchCandidateCodePointList.sort( - candidateCodePointComparator( - unpreferredCodePointSet, - sortingRankFromCodePoint, - phraseCompletionFirstCodePointList - ) + final List prefixMatchCandidateCodePoints = new ArrayList<>(prefixMatchCodePoints); + prefixMatchCandidateCodePoints.sort( + candidateCodePointComparator(unpreferredCodePoints, sortingRankFromCodePoint, phraseCompletionFirstCodePoints) ); - final long sortPrefixMatchesEndMilliseconds = System.currentTimeMillis(); - if (BuildConfig.DEBUG) - { - final long durationMilliseconds = sortPrefixMatchesEndMilliseconds - sortPrefixMatchesStartMilliseconds; - Log.d(LOG_TAG, String.format("Sorted prefix matches in %d ms", durationMilliseconds)); - } - final int prefixMatchCount = Math.min(prefixMatchCandidateCodePointList.size(), MAX_PREFIX_MATCH_COUNT); - final List prefixMatchCandidateList = new ArrayList<>(); - for (final int prefixMatchCodePoint : prefixMatchCandidateCodePointList.subList(0, prefixMatchCount)) + final int prefixMatchCount = Math.min(prefixMatchCandidateCodePoints.size(), MAX_PREFIX_MATCH_COUNT); + final List prefixMatchCandidates = new ArrayList<>(); + for (final int prefixMatchCodePoint : prefixMatchCandidateCodePoints.subList(0, prefixMatchCount)) { - prefixMatchCandidateList.add(Stringy.toString(prefixMatchCodePoint)); + prefixMatchCandidates.add(Stringy.toString(prefixMatchCodePoint)); } - final List candidateList = new ArrayList<>(); - candidateList.addAll(exactMatchCandidateList); - candidateList.addAll(prefixMatchCandidateList); + final List candidates = new ArrayList<>(); + candidates.addAll(exactMatchCandidates); + candidates.addAll(prefixMatchCandidates); - return candidateList; + return candidates; } private String getFirstCandidate() { try { - return candidateList.get(0); + return candidates.get(0); } catch (IndexOutOfBoundsException exception) { @@ -936,40 +939,40 @@ private String getFirstCandidate() Compute the phrase completion candidate list. Longer matches with the text before the cursor are ranked earlier. */ - private List computePhraseCompletionCandidateList(final InputConnection inputConnection) + private List computePhraseCompletionCandidates(final InputConnection inputConnection) { updateCandidateOrderPreference(); - final List phraseCompletionCandidateList = new ArrayList<>(); + final List phraseCompletionCandidates = new ArrayList<>(); for ( String phrasePrefix = getTextBeforeCursor(inputConnection, MAX_PHRASE_LENGTH - 1); - phrasePrefix.length() > 0; + !phrasePrefix.isEmpty(); phrasePrefix = Stringy.removePrefixRegex("(?s).", phrasePrefix) ) { - final Set prefixMatchPhraseCandidateSet = - phraseSet.subSet( + final Set prefixMatchPhraseCandidates = + phrases.subSet( phrasePrefix, false, phrasePrefix + Character.MAX_VALUE, false ); - final List prefixMatchPhraseCompletionList = new ArrayList<>(); + final List prefixMatchPhraseCompletions = new ArrayList<>(); - for (final String phraseCandidate : prefixMatchPhraseCandidateSet) + for (final String phraseCandidate : prefixMatchPhraseCandidates) { final String phraseCompletion = Stringy.removePrefix(phrasePrefix, phraseCandidate); - if (!phraseCompletionCandidateList.contains(phraseCompletion)) + if (!phraseCompletionCandidates.contains(phraseCompletion)) { - prefixMatchPhraseCompletionList.add(phraseCompletion); + prefixMatchPhraseCompletions.add(phraseCompletion); } } - prefixMatchPhraseCompletionList.sort( - candidateComparator(unpreferredCodePointSet, sortingRankFromCodePoint, Collections.emptyList()) + prefixMatchPhraseCompletions.sort( + candidateComparator(unpreferredCodePoints, sortingRankFromCodePoint, Collections.emptyList()) ); - phraseCompletionCandidateList.addAll(prefixMatchPhraseCompletionList); + phraseCompletionCandidates.addAll(prefixMatchPhraseCompletions); } - return phraseCompletionCandidateList; + return phraseCompletionCandidates; } private String getTextBeforeCursor(final InputConnection inputConnection, final int characterCount) @@ -995,17 +998,17 @@ private void updateCandidateOrderPreference() { if (shouldPreferTraditional()) { - unpreferredCodePointSet = codePointSetSimplified; + unpreferredCodePoints = codePointsSimplified; sortingRankFromCodePoint = sortingRankFromCodePointTraditional; - commonCodePointSet = commonCodePointSetTraditional; - phraseSet = phraseSetTraditional; + commonCodePoints = commonCodePointsTraditional; + phrases = phrasesTraditional; } else { - unpreferredCodePointSet = codePointSetTraditional; + unpreferredCodePoints = codePointsTraditional; sortingRankFromCodePoint = sortingRankFromCodePointSimplified; - commonCodePointSet = commonCodePointSetSimplified; - phraseSet = phraseSetSimplified; + commonCodePoints = commonCodePointsSimplified; + phrases = phrasesSimplified; } } diff --git a/app/src/main/java/io/github/yawnoc/strokeinput/StrokeSequenceBar.java b/app/src/main/java/io/github/yawnoc/strokeinput/StrokeSequenceBar.java index d0d09cb3..65fedeaa 100644 --- a/app/src/main/java/io/github/yawnoc/strokeinput/StrokeSequenceBar.java +++ b/app/src/main/java/io/github/yawnoc/strokeinput/StrokeSequenceBar.java @@ -1,5 +1,5 @@ /* - Copyright 2021, 2023 Conway + Copyright 2021, 2023, 2025 Conway Licensed under the GNU General Public License v3.0 (GPL-3.0-only). This is free software with NO WARRANTY etc. etc., see LICENSE or . @@ -25,7 +25,7 @@ public StrokeSequenceBar(Context context, AttributeSet attributes) public void setStrokeDigitSequence(final String strokeDigitSequence) { - if (strokeDigitSequence.length() > 0) + if (!strokeDigitSequence.isEmpty()) { final String strokeSequence = strokeDigitSequence diff --git a/app/src/main/java/io/github/yawnoc/utilities/Stringy.java b/app/src/main/java/io/github/yawnoc/utilities/Stringy.java index 8e5659b0..164449b6 100644 --- a/app/src/main/java/io/github/yawnoc/utilities/Stringy.java +++ b/app/src/main/java/io/github/yawnoc/utilities/Stringy.java @@ -8,6 +8,8 @@ package io.github.yawnoc.utilities; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.regex.Pattern; @@ -52,31 +54,50 @@ Convert a string to a list of (unicode) code points. */ public static List toCodePointList(final String string) { - final List codePointList = new ArrayList<>(); + final List codePoints = new ArrayList<>(); final int charCount = string.length(); for (int charIndex = 0; charIndex < charCount;) { final int codePoint = string.codePointAt(charIndex); - codePointList.add(codePoint); + codePoints.add(codePoint); charIndex += Character.charCount(codePoint); } - return codePointList; + return codePoints; } /* - Add the (unicode) code points of a string to a set + Convert a string to a set of (unicode) code points. */ - public static void addCodePointsToSet(final String string, final Set set) + public static Set toCodePointSet(final String string) { + final Set codePoints = new HashSet<>(); + final int charCount = string.length(); for (int charIndex = 0; charIndex < charCount;) { final int codePoint = string.codePointAt(charIndex); - set.add(codePoint); + codePoints.add(codePoint); charIndex += Character.charCount(codePoint); } + + return codePoints; + } + + /* + Convert a collection of strings to a set of (unicode) code points. + */ + public static Set toCodePointSet(final Collection stringCollection) + { + final Set codePoints = new HashSet<>(); + + for (final String string : stringCollection) + { + codePoints.addAll(toCodePointSet(string)); + } + + return codePoints; } /* @@ -92,20 +113,18 @@ Convert a string to a list of (unicode) characters. */ public static List toCharacterList(final String string) { - final List characterList = new ArrayList<>(); + final List characters = new ArrayList<>(); final int codePointCount = string.codePointCount(0, string.length()); for (int codePointIndex = 0; codePointIndex < codePointCount; codePointIndex++) { - characterList.add( - string.substring( - string.offsetByCodePoints(0, codePointIndex), - string.offsetByCodePoints(0, codePointIndex + 1) - ) - ); + final int startIndex = string.offsetByCodePoints(0, codePointIndex); + final int endIndex = string.offsetByCodePoints(0, codePointIndex + 1); + final String character = string.substring(startIndex, endIndex); + characters.add(character); } - return characterList; + return characters; } /* diff --git a/app/src/main/res/layout/input_container.xml b/app/src/main/res/layout/input_container.xml index 0c7d6857..df012d5c 100644 --- a/app/src/main/res/layout/input_container.xml +++ b/app/src/main/res/layout/input_container.xml @@ -1,6 +1,6 @@ + @android:color/black diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 899eaf45..e8b47cdf 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,5 +1,8 @@ +