﻿
  単語データを書いたファイルを読み取って、それを辞書のように表示する。
      ＃使っている単語データファイルは、個人的なノート､書き写しであって、
        誤り(写し間違い)も非常に多く、信用しないように。
      ＃スクリプトもまだまだ間違いを多く含んでいると思う。

■ (HTMLの) 使い方
  (finder.html の実行で)　
  
  最上段に、
      選択欄(ドロップダウンリスト)がある(表示されている)場合、まず、
          そこから、単語データ(ファイル)を選択する。
          * の欄は、複数のファイルをまとめて取り入れる。
        
        (その右端横隣りの[+]ボタンは、追加のファイル指定用のテキスト入力欄を
            表示するが、選択欄で全て取り入れてしまうと、この選択欄の行ごと、
            [+]ボタンも消えてしまうので使うなら、その前にボタンを押す必要がある。)　
      
      ファイル：とあるテキスト入力欄がある(表示されている)場合は、
          単語データファイルのファイル名(パス)を入力し、取り込みを実行する。
      
      それらが(表示されて)ない場合、すでに単語データは取り込まれている(はず)。
  
  単語の入力欄
      チベット文字または、ローマ字(半角英字)(Wylie)で単語を入力し、
          [Enter]キーか、隣のボタンを押すと、(検索が成功すれば)表示する。
          
          音節の中が同じものしか一致しない。母音や後置字が異なるもの、 
              中に助詞 འི 'i 等付いている音節には、一致しない。
          
          ＃単語を引くスクリプトに問題あるため、在っても失敗する事あり。
          ＃チベット語の単語から、その訳語を検索するが、その逆引きは出来ない。
      
      欄の上にある ☑直接入力 にチェック入れると、キーボード・キーの英字の直接入力時に、
          キー押下から直接に入力欄内へ、チベット文字を入れられるようになる。
              欄内で [Q]キーを押しても、切り替え可能。(その為、文字 q は入力不可。)　
              この切り替えで、欄のサイズはチベット文字用か、ローマ字用かに変更される。
          英字とチベット文字の対応は、Wylie式だが、母音以外の下に結合する文字(基字も含む)　
              は、[Shift]+ で入れる(記号キーの類は除く)。([Shift]+[A]は、下接の小さな འ ' )　
          英字2～3文字が、１つの基本の文字を表すのがあるで、次のキーを押していかないと
              決定できなかったりするが、
              中途では [.] か [Ctrl] または[Shift]+[Enter] キーで決定できる。
          [/]は句切り(Shey)、[Space]は音節区切り(Tsek)、空白は[Shift]+[Space]、
              འ ' は[,]でも入力可能。[-]キーは次が拡張入力に。…
          詳しい使い方は、./key_ipt_tib/readme.txt 。
      
      ☑～から始まる語 : チェックあれば、それから始まる語を、結果に表示する。
          チェックしなければ、完全に一致した語のみ表示。
      ☑結果を残す : 前回の表示を残し、その上に、次の結果を表示する。
  
  基字、複合字の選択欄
      基字の選択欄は、その基字の単語のリストを表示する。
        データが多いと(特に複数ファイルを読み込み後には)、選択してから、表示されるまで、
            かなり時間がかかる (ので隣の複合字の方を使った方がよい)。
      
      複合字の選択欄は、前置字-上接字+基字+下接字 といった
          組み合わせから、単語リストを表示する。
  
  説明(ボタン)
      ボタンは説明を、表示または表示を隠す。
      単語データの説明 は、その単語データファイルの最初の方に書いた部分を表示する。
      使い方等の説明 は、このファイルを表示する。


■ (HTMLの) 各表
  単語入力欄か、基字か複合字の選択欄からの、結果の表示について。
      単語データのテキストファイルの内容の部分を、表にする。
      ( そのファイルの内容は、個人的なノート・単語帳であり、
        それぞれの出典から書き写したものであるが多分、写し間違いがとても多い。)　
  
  第１列目(の枡)は、単語のチベット文字綴り。
      この中のローマ字列は、チベット文字綴りを表す転写である(発音ではない)。
  
  第２項目の小幅の列(の枡)は、方言を示す短い文字列を入れている。
        ( Lh は ラサ、Am アムド、Kh カム、Dz ゾンカ(ブータン)、Wr 文語·書き言葉、)　
      また括弧の中は、データファイルを示す。
      この列は、複数のデータファイルを統合する設定の時に表示する。
          そうでない場合、この項はない。
  
  次の列(の枡)に、発音。
      発音の表記(法)は、出典による(それぞれ異なる)。→単語データの[説明]に。
      複数の発音表現の区切りには、 /  を使う。
          その中では更に複数を | で「または」の意味で使うことがある。
      その前に置く (*xx) ～ x はローマ字や数字等～ は、出典を示す。
          その出典を表す文字列は、それぞれのデータファイルの中での決め事であり、
              単語データの[説明] にある。
          それを記してないものの出典は、行全体のそれと同じ。
  
  最後の列(枡)に、訳語(意味)と、補足やメモ。
      訳語の , 区切りの羅列の後の、; より以降が、補足的な説明や覚え書きである。
      
      その前の訳語の羅列の最後に <*xx> は、行全体の(主要な)出典を示す。
         ( これは、そのデータファイル内部の問題で、これが示されてない行は、
           そのデータファイルで、主とされている出典元とする。→各説明に )　
      各訳語の前の (*xx) は、それより後の訳語の出典を示す。

語の並び順
    一応、辞書順とするが、従ってない所もあるし、解釈が間違っているかも知れない。
    
    辞書の配列は、以下の様であるらしい。
        (チベット文字の(単一文字の)順序が前提)　
      まず、基字によって分類(配列)する。
      同じ基字の中では、
          基字～、前置字(gdbm')+基字～、上接字(rls)+基字～、前置字+上接字+基字～
            に分けられ、
          更にそれぞれは、下接字が付かないもの、付いたものに、分けられる。
              下接字無し→下接字 w,',y,r,l の順。
      それらそれぞれを、母音記号によって分け、
              母音字無し(a)→有り i,u,e,o の順。
          その後ろは、後置字なし→後置字ありの順。
              後置字は g,ng,d,n,b,m,',r,l,s の順。
              後置字ありは、再後置なし→あり の順。
      次に(各々で)、第２音節を、同様に。………
    
    後置字以降は、上の順序に従ってなく、
        再後置字ありは、全ての後置字の後に置かず、その後置字の直後に置いた。
    音節内の助詞( ' འ + 母音 )なども、後置字と同じに並べた。
    
    長音を表す 基字に下接する小さい འ' (転写が大文字のA)が入っている場合の位置が？。
      この辺りはコード順のままに、A(xF71)が入っているものは、母音符がないもの(=a)の次に来て、
          母音が i(xF72)より前に入るようになってしまっている。
          例えば 母音 e(xF7A)だが A(xF71) も持つものも、i(xF72)より前に入ってしまう。
            (母音符の後にA(xF71)を入力すると文字にならず、母音符より前にA(xF71)がある。)
    
    反転字、重層字など、どこに置くべきか分からないものは、
        最後の ཨ་ (a xF68) の次に、まとめて置いた。
    
    順序を決めるのに使っているのは、ut_tib.js の getTSortStr("チベット文字列") が
        返す文字列である。
  
  複数の単語ファイルを取り込んだ場合、並びを統合させる事はできるが、
      重複するデータ(＝同じ語)を１データにまとめる事はできないので、
        同じ語が幾つもあれば、そのまま幾つも並んでしまう。
      また一つの単語ファイル中に、重複する綴りがあっても、別のものとしている。


================================================
■ 単語ファイル
  以下は、単語データのテキストファイルの書き方の(とりあえずの)決め事である。
      HTMLでは、それを読み取って、また違う形で表現したりしている。

行の種類と、最初の文字
    行の1文字目が、# であると、その行は、(コメントとして)無視する。
      ファイルの最初の方、単語データ出現前にあるコメント行の群は、そのファイルの
          データについての説明とする。( # と次の空白１ヶは落とす。)
          但し行頭が ## なら無視する。
      # の次(2文字目)が ! である行は、スクリプトへの指示など。
          #!B[ k ཀ ] は、ここから、基字が  k ཀ となる意味 (B は Base)。
          #![ ky ཀྱ ] は、ここから、(複合字が) ky ཀྱ となる意味。
              以下に並ぶ単語データは、この複合字に分類する(間違っていても)。
        
        単語データ出現前の、#!file=○○ は、そのデータファイルを指す短い文字列、
          #!dialect=○○ は、そのファイルのデータの(基づく)主要な方言を指す短い文字列、
          #!END は、ファイルの冒頭部分(説明など)が終わり、以降に単語データがある事の指示。
          #!nobr は、単語データの第4,5項で、改行は残さないようにする指定。
          #!keepBrCh=○ は、#!nobr の時、タブの直後の(#は除く、続く空白1ヶあればそれも除いて、
              その次にある)先頭の文字が、○ に一致している場合には、改行を残す。
              ○が複数文字列の時は、そのいずれかに一致した時とする。
    
    行の1文字目が # でも、タブ(\t)でもない場合に、
      その行中に、タブ(\t)が含まれているなら、単語データの(開始)行とする。
      タブ(\t)を含まない場合、その行は、無視する。
          例えば、行頭に ■ ▼ などの記号を置いている行は、見出しに使っている。
      (これでは、第1項を1行に書いて、第2項を次行にするのが難しいので、変更すべきかとも
          思う。また行の1文字目がタブ以外の空白文字の場合の動作も問題あるかも。)　
    
    行の1文字目が、タブ(\t)であって、その直前に、単語データの行があるなら、
      この行は、その単語データ行の続きとして繋げる。
    
    単語データ行では、タブ(\t)の次が ## (2ヶの#)なら、その部分はコメントとして無視する。
        他に、タブ(\t)の次が #! はスクリプトへの指示の部分。

単語データの行
    各項目はタブ区切りで記す。
        後続の行がタブ(\t)で字下げしてあると、その続きとみなす。
    第1項(列)目(め)、チベット文字の単語。
    第2項目、単語の綴りの、Wylie方式でのローマ字への転写。
    第3項目、発音。複数は , カンマ区切り。
    第4項目、訳語、意味。この項以降は、タブや改行で区切られていても、この第4項の
        続きとする。途中にコメント項(##開始)などの挿入も可能。
    第5項目、補足の項。追加的記述、説明など。
        第4項の後、# １ヶで始まる項あれば、それ以降を第5項とする。
          この時と、それ以降では、タブ直後の # と、続く空白文字１ヶは(あれば)、内容から落とす。
          (タブ直後の連続する ## は、項をコメントとする。)
        今の処、第4項、5項の区別の意味はない。
          第5項は、HTMLの表示では、第4項に繋げて表示していている。
      第4項、5項では、タブ区切りがある場合、タブは落として連結するが、
          改行は残している。但し、行末に \ があれば、改行も落として繋げる。
          また単語データ出現前に #!nobr とあれば、改行は残さない。
            (この時、#!keepBrCh=の指定あるなら、その文字が先頭にある箇所では改行を残す。
            また、行末に \n と置くと、改行の指定とした。) ( 行末が、コメント項に
            ある場合で、その前にコメントでない項があるなら、その項末を行末と取る。
            コメント項の行末に、\ や \n を書いても無効。)
        HTMLの表示の中で、この(残された)改行は、設定用の変数 stt.flgKeepBr を true と
          しておくと、<br>(改行の要素)に置き換えるので、(改行として)現れる。
    
    行のデータの出典は、データファイルの中心的出典元と異なる場合には、
        第4項の末に <*～> として記した。
      発音や訳語で、部分的に異なる場合は、その語の前に、(*～) と置いた。

第1項目、チベット文字の単語
  チベット文字以外に、前後に - や ～ などの記号を付けることも可能で、それらは、
      表示されるが、並び順や検索では、無視される。
    
    ＃単語(や句など)として取り出した時、末尾には、། / が置かれるのが普通のようだが、
    ＃   私のノートでは、་ (音節区切りの印し)にしている。これは、語をコピーなどした場合、
    ＃   / があるより使い回しが良いのではと考えたため。

第2項目、Wylie方式の転写
   主に英字アルファベットと、' . - + / \x20 など Ascii の範囲の文字。
   前後の - などは転写ではなく、前後の接続(語の繋がり)がある事を示している。
       (拡張転写で使われる記号類も一部は、転写とみなさないようにした。)
       ～ や … などの(Ascii以外の)記号を使っても。

第3項目、発音
    他項と区別し、発音示す文字列であると分かり易くする為、前後を / で囲む事にした。
        ( が、2項目末に / が入る事あるのが、紛らわしいかもしれない。)　
        / で囲む事が適切かどうかは知らない。
    複数は、まず、, (コンマ\x2C)で区切る。
          ために発音表記の中に , (コンマ\x2C)は入れられない。
      /～/ の囲みの中でも、/～|～/ や /～/～/ として、複数が可能。
        ～|～ は同じ表記法で、異なる発音を並置している、などに。
        ～/～ は同じ出典で、異なる表記法が書かれている、などに。
    /～/ の囲みの前の文字は、出典を示す。例えば、*x/～/ は、(*x) を参照。
    発音の表記(文字種)は、ローマ字、発音記号、カナ などあり。
        表記(文字)は、出典から一部改変して写している場合がある。
    カナ表記では、/～/ の閉じる / の後ろに p や b の文字を付けている場合があるが、
        これは、表記中のパ・バ行(半濁点,濁点)の文字が、どちらであるかを示している。
          複数あるなら、その順序で複数置くようにしている。

第4項目、訳語
    書式(規則)を定めるのは、中止(断念)した('21/1)。
        (逆引き(訳語から引く)のスクリプトを可能にするには、この部分の書き方を決めて、
        まず見出しとなる訳語を取り出せるようにしないとならないのだが、)　
    
    以下は、一部の単語データファイルで適用したが、書式とするのは止めた。
    複数の語は、, (コンマ\x2C)で区切る。
    更に、それら複数の語を大きく分けるのに、▪1: ～, ～, ▪2: ～, ～, ▪3: ～
        などとしている(数字の前の記号は定まってない)。
    (*～) は、それより以降に並んでいる語の出典を示す。
        この項の最後に置いた <*～> は、行全体の出典を示す。
    ( ) 囲みで、* の入ってないものは、語についての補足的記述。
    
    [ ] や 【 】 囲みは、語の種類を表す。文法上のものは、出典に拠る。
        他に、[敬] は 敬語。 (出典に区別ある場合) [謙] は 謙譲(へりくだり)語。
          [地] は 地名や地理上の名前や国名など。
          [人] は 人称や親族名称、他、人を指す言葉。
    方言、ファイルの基づくそれと異なる場合に、«Kham» «Amdo» «Lhasa» などと示す。

第5項目(以降)
    訳語の説明、類似の語、その他の補足。
    出典からのものは主に、※ マークから始めている。
    こちら側のメモに近いものは、＃ か ＊ を付けている。 


================================================
■ 諸ファイル
HTML(ファイル)への引数(クエリ)
    f=ファイル名 あるいは file=ファイル名 あるいは
      files=ファイル名,ファイル名,... (カンマ区切りで複数指定)　
      これらで、ファイルが１つのみ指定されていたら、
          それを、初期時に取り込むことにする。
      複数が指定されていたら、選択欄を表示する。
      f=0 や f=false などでは、ファイルを指定するテキスト入力欄を表示する。
    
    script=ファイル名 は、スクリプトファイルの指定(ローカル(file:)で実行時のみ)。
    merge= は、複数のデータファイルを統合するかどうか。
    (他、詳しくは HTMLファイルの最初の方に。)

HTML(ファイル)と同名で、拡張子が .css と .js のファイルは、
    初期時に取り込むので、その内容で、スタイルや、スクリプトの設定を上書きする。
    設定用の諸変数については HTMLファイルの最初の方に。

"finder.html"が、HTMLの本体で、
    他のサイズの小さい .html と .hta は、引数など付けて、本体を呼び出す転送ファイル。
      .hta は、Windowsで、HTMLをブラウザでなく、スクリプトのアプリケーションとして実行する。
      finder_unspec.html/hta は、ファイル指定のテキスト入力欄を表示するよう呼び出す。

テキストファイル(このreadme以外)は、単語(データ)ファイル。
    これらは個人的なノートであって、読み間違いや写し間違いが多くので注意を。
    ファイル名に xnote_ と付いているのは、まだスクリプトが定まってない時に、
        ノートしていたままのもので、現在の単語データファイルの書式に合ってない。

単語のデータファイルを、HTML に取り入れるに、XMLHttpRequest を使っているため、
    ローカルでの実行において、ローカルファイルの読み取りをできないようにしている
      ブラウザでは、動作しない。
      Chrome では起動引数 -allow-file-access-from-files で可能になる。
          (通常の状態とは共存できないので、一旦終了させる必要がある。)
          (この状態のブラウザは、Webページなどの閲覧に使うと問題あるかもしれない。)
      Firefox は、HTMLファイルの在るフォルダの中に、対象のファイルがあるなら読み取れる。

"key_ipt_tib/iptx_kb_tib.js" は、TextArea や Input:text 要素に、チベット文字を、
    キーボード(の英字入力)から直接入れるスクリプトで、転用可能。詳細はそのフォルダ中に。

================================================
■ 問題・バグ
単語の検索にバグがある。
    単語データファイルで、チベット文字列と、Wylieローマ字列(の対応)を間違って書いていた場合。
      そのローマ字列を入力して引いた(検索した)時、先にその間違ったデータにヒットすると、
        そのローマ字列に正しく対応した単語は出てこない。
      この単語帳(辞書)では、チベット文字列とWylie文字列の変換スクリプトは
        使ってないのだが、それを取り入れて直すべきかも知れない。

================================================
■ 変更
2023/09/10
  英字キーからチベット文字を入力するスクリプトで、中途で文字を決定するキーは [.] か
      [Shift]+[Enter] としていたが、[Shift]+[Enter] の方は忘れていた。
      HTA で検索用の一行入力欄で [Shift]+[Enter] を押してみると、検索が実行されてしまう。
      実行の判断を(要素のタグ中、onkeyupで)、event.keyCode==13 だけで済ませていた為。
      (その後のブラウザでは、key_ipt_tib.js の方で、event をキャンセルしていて、onkeyup は
      起きない？)。一行入力欄のタグ中の onkeyup の所の条件判断を、
      event.keyCode==13 && !(event.shiftKey||event.ctrlKey||event.altKey) に変更。
      ( key_ipt_tib/readme.txt を見たら、設定用object の cancelEnter 変数を使う、と
      書いていて、つまり忘れていたのだが、その場面以外でも [Shift] などは排除するようにした
      方がいいと思われる。[Ctrl]で未決を決定できるのも忘れていた。
2023/08/
  HTML表示の時、4項と5項の間に空白類が無いなら、空白を１つ入れるようにした。
  ローマ字(Wylie)での検索の比較時に、語の前後にある([ ~-]の他) = も無視するようにした。
      (2項のWylie文字列の前後に = を置けるようにした。)
  単語ファイル中のデータを並べる時の対照の仕方をやや変更。
2023/07/23
  7/21の語の並びに関する変更により、チベット文字で基字のみの音節またはそれから始まる語の
    検索が不能になったバグを修正。
  検索結果の出し方に関するチェックボックスを２つ加えた。
2023/07/21
  各複合字の中の語の並びで、その複合字の文字の情報の項が、語の項より先に(上に)なる
      ようにした。(ソート用の文字列から末尾の 0- 以降を取り去った)
  単語ファイルの第4項(訳語)と5項(補足)で、もとの改行箇所を利用する、或いは行末(項末)
      に \ を置いて改行をキャンセルするスクリプトを修正した。

2022/01/
  単語を引くスクリプトで、チベット文字列の場合のバグ修正。
      更にその一致を探すスクリプトを(デフォルトでは)別の方法を使うように変更した
      (その為、また別のバグが作られた可能性がある)。
  単語の順序付けのスクリプト(ut_tib.js)のおかしな所を一部修正した。
      また、མངས་ m.ng.s と並んでいる場合に、基字を ng としていたのを、m に修正。
  単語ファイルの第4項目(訳語)と、5項目(補足)の区別を変更した。
      第4項より後は、第4項の続きとし、複数項·複数行に亘って書ける事にした。
      途中に ##コメント項 が入っても続けれる。但し # １ヶから始まる項は、
      補足項(5項目)の始まりとする。(4項5項の区別に意味は無いのだが。)
  ブラウザによっては、チベット文字の直接入力が出来なくなっていたのを修正した。
      script src="～" の要素を追加して、使えるようになった後の処理を、setTimeout()で
      済ませていた為で、script要素.omload があれば、それを使うように改めた。
  結果の単語表の1列目の幅指定が、HTA(IE7)などで効かなかったが、
      割合でなく、サイズを指定することで、有効になるようにした。しかし
      Windowのサイズ変更時にスクリプトで、サイズを割り出す必要があり、
      この時しばらく待たされる(止まる)ようになってしまった。

2021/10/
  単語を引くスクリプトで、ローマ字(wylie)の場合にあった不具合を、一応修正。

2020/07/
  テキスト入力欄からファイル指定の場合に、説明の表示がないバグあり、修正。
      加えてこれで取り込んだファイル名は、複数を表示するようにした。
      また選択欄表示の場合にも、上のテキスト入力欄を表示できるボタンを加えた。
  データファイルの冒頭部分(データ行出現前)で、行頭が、# は説明記述としているが、
      2文字目も # (つまり２ヶ連続)は、説明に加えないようにした。

2020/06/初
  チベット文字から単語を引くスクリプトは、基字がどれかを確定せずに簡易に済ませようと
      していたのだが、例えば(チベット文字で)、bag と引くと、g が基字の bg- の方から
        探してしまっていた。
      複数データファイルの統合を許可する設定の時は、そのスクリプトを利用して、
        基字を判定してから、検索する(引く)ようにした。そうでないときは、
        まだ簡易な方法のままなので、応急処置はしたが、どこかで間違うはず。
  単語入力欄で、キーからチベット文字を入力できるようにするスクリプトを加えた。
      ( 文字の見分けの Tibetan.html の中から写して、単独のファイルとした。
        入力方法の説明も、その中に写した。多少改変した。)　

2020/05/
  複数のデータファイルを統合できるようにした。
      それまでは、各データファイルの中に書いた順番で表示していたが、
      スクリプトの中で、並びを決めれるように変えた。
        その基礎となるスクリプトは、"ut_tib.js" に。
        また、設定(htmlの最初の方)中の変数 stt.margingIdx も。
      
      語の並び順で、末尾に ་ tsek でなく ། shey を付けると、順番が後ろへ行ってしまう
          という問題がある。(後、並べ替え用の文字列では、tsek に置換するようにした。)　
  
  単語を引く(検索)時、その音節から始まる語にも一致できるようにした。
  
  先月までの、複数データファイルの取り入れ、選択欄の使用は、
      既に読み取り解析した内容は、配列に入れていたつもりで、保存してなかったという
      間違いをしていた。

================================================
