Skip to content

絵文字キーボードにGoogle絵文字の表示切替を追加 - #13

Draft
kkrix3 wants to merge 6 commits into
previewfrom
feature/google-emoji-rendering
Draft

kkrix3 wants to merge 6 commits into
previewfrom
feature/google-emoji-rendering

Conversation

@kkrix3

@kkrix3 kkrix3 commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

端末によってドコモ独自絵文字になるSumire内の表示を、設定「端末標準」(既定)/「Google絵文字」で切り替えられるようにします。絵文字一覧・使用履歴・肌色選択ポップアップが対象です。入力するUnicode、カテゴリ・履歴管理・肌色選択・文字入力の処理、通常のかな漢字変換候補、入力先アプリやOSの表示は維持します。

同梱したNoto Color EmojiのTypefaceを絵文字用ビューに明示指定します。実行時はオフラインで動作します。GoogleセルではAppCompatの自動EmojiSpanを無効にし、元の文字列から再バインドします。モードを戻すと元のフォントとEmojiCompat設定を復元します。KeyboardFontApplicatorを使い、表示用の独立したリビジョンでカスタムフォントとの切替を管理します。各ビューが接続中の設定変更を監視するため、主・フローティング・分割表示で同じ方式を使います。新しいビューも保存済み設定を読み込みます。

EmojiCompatの強制置換も検討しました。同梱Typeface方式は、絵文字ビューに範囲を限定でき、プロセス全体のEmojiCompat設定や実行時のフォントプロバイダを必要としないため採用しました。

フォント・ライセンス・容量

  • Noto Color Emoji 2.057、Android対応のCBDT/CBLC形式。固定コミット 99701e07d3d1fe1bdbcdb14964547f0fd592966f の 2D/fonts/NotoColorEmoji.ttf をビルド時に取得し、SHA-256検証後にAPKへ同梱します。フォントは未改変です。初回ビルドには取得先への通信が必要です。
  • フォントSHA-256:15671215ab769fdc7162a045d56fd7d7e477c51b04e6b3c761d914d8fdd6cc44。
  • 実APK内で 10,730,124 bytes(10.23 MiB)。TTFは非圧縮で格納されており、APKへのフォント追加量もこの容量です。追加の絵文字ライブラリは導入していません。
  • SIL OFL 1.1全文、配布元のCopyright 2013 Google LLC、フォント内部のCopyright 2022 Google Inc.、Notoの商標表示を同梱し、設定のオープンソースライセンス画面で閲覧できます。APK内のライセンスはリポジトリの全文とバイト単位で一致しました。
  • 一部の家族絵文字はNoto 2.057自体がグレーのシルエットです。将来の未収録シーケンスはプラットフォームへフォールバックする場合があります。

主な変更

SymbolAdapter.kt、CustomSymbolKeyboardView.kt、EmojiRenderingStyle.kt、GoogleEmojiFont.kt、AppPreference.kt、日英の設定リソースと検索登録、ライセンス表示、symbol_keyboard/google-emoji.gradle、単体・Androidテスト、既存Full Preview CIとAPK検査。

設計・出典・手動確認手順:docs/google-emoji-rendering.md。

検証結果

最終Full Preview CI #40893779784 success。

対象 結果
custom_keyboard単体 409件成功
core単体 88件成功
appの既存CI対象・追加回帰 448件成功(設定3件、既存フォント4件、絵文字カテゴリ1件を含む)
API 24 絵文字モジュール 4件成功+保存/別プロセス検証各1件成功
API 34 絵文字モジュール 4件成功+保存/別プロセス検証各1件成功
API 35 実IME・マルチタッチ 20件成功(app 3、custom_keyboard 1、qwerty_keyboard 16)
本家比較 既存回帰・Full Debugビルド成功
Full Preview ビルド・APK実体検査成功

単体計945件。上表の実行テストは失敗・エラー・スキップ0です。署名ジョブは規定の条件によりskipしています。

設定の即時反映・既定値・標準復帰・バックアップ・不正値、Activity再作成、force-stop後の異なるPIDでの設定復元を確認しました。一覧・履歴のクリックが返すUnicode、肌色6種類と選択結果、モードを往復した際のカスタムフォントの分離を確認しています。Android 14では10代表例の単一グリフ化と、実際に使ったフォントバッファのハッシュを検査し、同梱Notoの使用を確認しました。VS16、ZWJ家族・職業、肌色修飾子、国旗、キーキャップ、国旗タグを含みます。9例の有彩色描画と、元フォントでグレーの家族図柄の可視描画を検査しました。

比較画像は各23枚を回収・確認しました:Android 14、API 24。Android 14標準と同梱Notoで家族絵文字の図柄が変わること、肌色6種類が収まることも目視確認しています。

APK

未署名Full Preview APK・metadata.json / APK検査レポート(Artifacts、14日保持)。

  • applicationId:com.kazumaproject.markdownhelperkeyboard.preview
  • versionName:1.7.133-preview
  • versionCode:215448072
  • APK:184,477,477 bytes
  • APK SHA-256:e7c7999456b4052e569bae45022621c5b127124a7dc67a3cf4aa558fa404a331
  • feature head:948f2dbce85081b8ecbe3b08813af3c9c2ff8b42
  • CI検証・APKのPRテストマージ:ad645c45067ccaeb7bd0727dae357a9a888ee4d2
  • 上記両コミットのツリー一致:3ced2a73f5f25a34fb09bd49fbba1868abcc6495

Artifactを実際に取得し、GitHubのArtifactダイジェスト、metadataとAPKのSHA-256、全ZIPエントリCRC、フォント・ライセンス、ARM64/x86_64のZenz・Gemma runtime、Zenzモデル・コンパクト辞書を再照合しました。CIでは非debug・未署名、ID・ラベル・provider authority・IME設定先、16KB整列も確認しています。

未署名APKはそのままインストールできません。 既存Preview署名ジョブはownerによるpreview上の手動実行専用のため、この機能ブランチの署名には利用していません。署名条件・Environment保護は維持し、鍵や署名情報の出力は行っていません。

未検証・実機で確認する点

ドコモ端末での直接確認はできていません。署名済みの検証版を用意した際は、Android 14のドコモ端末でGoogle/標準の図柄差、カラー・複合絵文字、履歴・肌色選択、主/フローティング/分割表示、明暗テーマ・横画面・高速スクロール、Full IMEの再起動、入力先アプリでのUnicode維持を確認してください。リリースAPKの実機インストール・操作は未検証です。

基点:preview e3cc93537c1c0912cb451b39133c270d39a10b9b。Draft・未マージです。preview/dev/mainへの直接push・force pushは行っていません。

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant