nJIMエンジンの使い方。 nJIMエンジン内部では現状でも10数個の関数が使われていますが、 このうちユーザーが使用しても構わない関数として、ひとつだけAPIを公開します。 恐らく使うと思われるのは、これだけであろうと考えられますので、現状はこれだけです。 また、他の関数は内部処理のための低レベル処理のための関数群のため、 公開する予定はありません。汎用性にかけるため。 --------------------------------------------------------------------------------- Function name : StringToJapaneseFunc Callling seaquance: japanese := call StringToJapaneseFunc with (string, mode, option); (IN) string : string to translate (IN) mode : translation mode nil : (string -> Hiragana,Kantakana,Kanji) 'all : (string -> Hiragana,Kantakana,Kanji) 'hiragana : (string -> Hiragana) 'katakana : (string -> Katakana) 'kanji : (string -> Kanji) (IN) option : option parameter nil { scope:search scope [number] 0-200 ncheck: last N char check [nil|true], } (RET) japanese : Japanease string array [{index:Japanease string, value:error code(true/nil)}] --------------------------------------------------------------------------------- この関数をcall func with ()で必要な引数を渡して下さい。戻り値として変換できたものを配列として返します。 実際に"AIUEO"という文字列を"ひらがな"に変換したい場合には、 str := "AIUEO"; retcode := call Getroot().|nJIMEngine:MZHSW|.StringToJapaneseFunc with (str, 'hiragana, nil); と関数を呼び出すと、戻値としてretcodeに [{index:"あいうえお", value:true}] が返ってきます。 また、str:="あいうえお"として、modeを'katakanaにするとカタカナになって戻ってきます。 modeをnilもしくは'allとするとstrを平仮名、カタカナ、漢字に変換し、配列で返します。 stringとして渡せるのは、平仮名、カタカナ、アルファベットです。 ただし、漢字変換をしていした時に、カタカナを文字列として渡すと変換後は漢字+平仮名となります。 (例)"アイシテ" -> "愛して" アルファベットで結構滅茶苦茶な文字列でもできる限り平仮名/片仮名変換するようになっていますが、変換したあとの平仮名/片仮名の文字列にアルファベットが混在している場合は漢字変換をしませんので注意してください。 (漢字変換できない例、"あいうmnfhえお"、漢字変換してしまう例、"あいm" -> "愛m") "asdfdsjalk;fjdska"なんていう滅茶苦茶な文字列もできる限り仮名変換しようとします。 英文字が全て日本語文字列に完全に変換できなかった場合、valueの値がnilになります。 通常ではこの戻値を参照する必要はないはずです。 また、以下の様な文字列も正常に変換できます。 kanji -> かんじ kannji -> かんじ かnji -> かんじ かnじ -> かんじ ただし、 kan -> かn となりますがOptionのncheckをTrueにした場合には、 Kan -> かん と処理できます。 平仮名変換のパターン等はMacintoshのJLKに付属の「ことえり」を参考にしています。 変換できないパターンを見つけたら教えてください。 optionは通常nilを渡してください。 optionのscope値は、漢字変換の時のみ有効となります。 scopeは漢字変換する時にパターンマッチングをする時の上限値です。 この値が大きい程、検索が遅くなります。通常nilの指定をしておくと、文字列を判断して関数内部で適当な値を設定しますが、MP2000等の速いマシンであれば200まで指定しても問題ありません。 これは漢字変換する場合、変換する文字列が長い程単純比例して検索時間がかかるため、少しでも時間を短くするための苦肉の策です。#逆に変換候補として出せるのは最大200までです。これで候補の乱立と制限をしています。 これは今後改善する予定です。 ですから、このI/Fを利用する場合ユーザーが任意にscopeの値を変更できるように作成したAppletのpreferenceの設定項目に入れられるようにするか、マシンを判断して設定してしまうようにしてください。 ncheckのOptionは最後の文字列の最後にきた"N"の取り扱いに関するOptionです。変換ViewをもつKeyboardのようなBufferにため込んで処理をする時には何も指定しなくてよいですが、文字列を指定して、処理する場合には、このフラグをTrueにします。通常の変換処理ならば、指定する必要は全くありません。 TIPS. 漢字Fontを使う時、漢字Fontを設定する画面を作るのは面倒です。 一番簡単なのは、Systemが使っているStylusで選択されているFontを選んでしまうのが楽でしょう。 (通常のユーザーはこの戻値のFontSpecに日本語Fontを設定している場合が多いので、、、) 関数を一発コールするだけです。 GetUserConfig('userFont) これで、現在選ばれているFontSpecが戻ってきますので、これをViewFontに設定すればOKでしょう。 この動作を確認しているのは、NOS2.xです。 また、Newton OS 2.1であれば、Font Menuを作成するのに次のような便利な関数が用意されていますので、ターゲットを2.1にしぼっている場合には使うとよいかもしれません。 最後に、このAPIを利用して作成したアプリケーションがあったら、リンク等させて頂きますので、事後でもかまいませんので、連絡いただけるとありがたいです。 (C) 1997-1998 Tomoyoshi Murai, All rights reserved.