「ランダムハウス英語辞典Toolkit」で作成したHTMLが、EBStudio2では文字化けするという報告があった。旧EBStudioとは互換性を保っているはずなので、調査したところ、EBStudio2の新機能の「UnicodeからEPWING外字に自動登録する」が悪さをしていることがわかった。「ランダムハウス英語辞典Toolkit」では、文字の字下げを表現するために、EPWINGの制御文字(0x1F09)を直接16進コードで表現している箇所がある。外字として定義されていないため、そのままEPWINGに出力していたが、EBStudio2だと「Unicodeの0x1F09(Ἁ)が出現した」と解釈してしまい、そのために文字化けが生じていた。EBStudioの本来の仕様では、制御文字を直接指定したい場合のために拡張タグを用意している。win版(2.0.9)およびmacOS版(2.0.5)では、「UnicodeからEPWING外字に自動登録する」機能をオプションにした。「ランダムハウス英語辞典Toolkit」を使用する場合は、このオプションをoffで実行してほしい。「ランダムハウス英語辞典Toolkit」をWindows10で実行するなお、「ランダムハウス英語辞典Toolkit」では「ランダムハウス英語辞典」をインストールしてから変換する前提になっているが、インストーラがWindows10では実行できない。次の手順でインストールを行わずに変換ができる。\DATAをまるごとPCの任意のディレクトリにコピー。CD-ROMのルートにあるReadme.txtを、コピーしたDATAディレクトリの中にコピー。1のコピー後のDATAディレクトリを指定する。Storeの審査でreject(却下)されてしまった。名前が却下されてしまったのでは仕方ない。macOS(EBMac)"とするという方法も考えられるが、EBPocketの名称でAndroid版、iOS版、macOS版が存在することになり、問合せの時にプラットフォームを言ってもらわないと話が通じなくなる。Storeは諦めて認証を受けることにした。これまでの辞書グループ登録は引き継げないので、もう一度辞書登録を行っていただく必要がある。当面はこれまで通りVectorでの配布を継続するつもりである。Mojave以降で実行すると、初回のみ次のような確認メッセージが表示される。そのまま開けば次回から確認なしで実効できるので、ユーザーの負担は少ない。macOSも、2020年1月までには認証を受ける必要がある。こちらも近日中に対応する予定である。CatalinaではEBMacが実行できないという報告を受けた。ままなので確認できていないが、考えられる理由は次の二つ。Catalina上で実行するには、Appleからの認証が必要となった(この処置は2020年1月まで延期された。[2019/10/25追記])QuikcTimeのフレームワークが削除された。Storeに登録する方向で考えている。登録できるようになったからである。このため、EBMacに次の改造が必要になる。動画の再生を、QuickTimeからiOS由来のAVFoundationに変更する。Sandboxに対応するこのうちSandbox対応の方が大変である。EPWING辞書はSandboxの外にある。NSOpenPanelで開いたパス(EBMacでは辞書ファイルのパス)はアプリの起動中はアクセス権限があるが、アプリを閉じると権限が消えてしまい、次回起動時はアクセスできなくなる。bookmarkにパスを保存すると、次回起動時にアクセス権限を付与することができる。この方法で実現しようと思っている。M(6.0)以降では、Google翻訳をインストールすると、ブラウザ等のアプリのコンテキストメニューに"翻訳"が現れ、選択したテキストの翻訳を行うことができる。同様に、MDict等の辞書アプリをインストールすると、コンテキストメニューに辞書アプリ名が表示され、選択したテキストで辞書引きができる。「EBPocketでは対応しないのか」と海外のユーザからの問い合わせがあったので、調査したところ簡単に対応できそうなので実装してみた。M以降にEBPocketをインストールすると、次のようにコンテキストメニューにEBPocketが登録される。実装方法は下記の通り。1.AndroidManfest.xmlにaction.PROCESS_TEXTのインテントフィルターを追加する。これで他アプリのコンテキストメニューにアプリ名が表示される。{super.onCreate(savedInstanceState);。読書尚友の最近の改良について。読書尚友ではPDFの表示にAndroidPDFViewを使用している。このライブラリはパスワード付PDFにも対応しているので、サポートしてみた。github.comパスワード付のPDFを開くときに下記のようにパスワードの入力を求める。実現方法だが、最初にpassword(null)でload()を試み、パスワード付の場合はOnErrorで定義したハンドラに飛ぶので、その中でダイアログでパスワードを入力して再度パスワードを指定してload()を行う。loadが失敗した場合に呼ばれる。作品リストに表示される件数が多い場合に目的の作品を見つけるのが困難なので、作品リストの上部に絞り込み検索の窓をもうけた。ListViewにsetFastScrollEnabled(true)を適用して右端に高速スクロールのためのつまみが表示されるようにした。項目の右側のボタン(縦の...)が押しにくくなるので、右端からボタンまでの距離を多めにとって調整した。これまでは、「ダウンロードした作品にダウンロード済みのマークを表示」していたが、本棚と表示方法を統一し、「未ダウンロードの作品に雲マークを表示する」ように変更した。9(Pie)で実行するときにデフォルトではhttp:が許可されず、https:でないと通信ができないようになった。本当はドメイン毎にhttpを許可する実装が望ましいが、安直な回避方法は、manifestに次の記述を加えるとhttp通信が許可できる。Modeの設定があることに気がついた。読書尚友は既に夜間モード対応を入れていたが、EBPocketはまだだったので、この機会に夜間モード対応にしてみた。ebstudio.hatenablog.com夜間モードのEBPocket。iPhone版も重い腰を上げて対応しないといけないかも。Androidの更新内容についてご紹介したい。非EPWING系辞書のブックマーク、履歴対応これまで内部的な事情でブックマークや履歴はEPWING系辞書(電子ブックEB/EBXAやロゴヴィスタを含む)しか対応していなかったが、今回の改良で、非EPWING系辞書(StarDict、MDict、PDIC、ユーザ辞書)もブックマーク、履歴に登録できるようになった。M2(Android8.1)に変えたところ、EBPocketのアイコンが小さく表示されることに気がついた。targetSDKを26(Android8.0)以上にしていると、アダプティブアイコンへの対応が必須になるらしい。アダプティブアイコンはアイコンのバックグラウンドとフォアグラウドを別々に指定し、丸や楕円やスクエアなどシステム側でトリミングして表示する仕組みである。バックグラウンドは画像でもいいし単色指定でもいい。Assetを使うとオリジナルの512x512の図形があれば、自動的にAndroid7.1用の丸アイコンと、8.0用のアダプティブアイコンを作成してくれる。辞書検索パスの指定でSDカードのアイコンを表示SDカードに入れた辞書の設定の仕方がわからないという声をずいぶんいただくので、辞書検索パスの設定画面に内蔵ストレージのホームと外部SDのアイコンを追加した。これで指定がしやすくなったと思う。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。