作成日:2025年03月17日
FileMakerでの文字の問題


どうも、にゃん太です
FileMakerに限らず、様々なアプリケーションで文字は使用しており、端末やアプリケーションを変えても同じように表示する事が期待されます
しかし、一部の文字では同じ表示にならない場合があり、意図せぬトラブルの要因となってしまいます
今回のメモでは、そうした文字の問題について書いていきます
外字
例えば「辻」という漢字があります
現在一般的に使用されるのは表示した通り「しんにょう」の点が2つのものです
しかし1つの「つじ」もあり、そちらを使用する必要に迫られる場合もあります


けれど、PCで「つじ」と入力して変換しても出てきません
こんな時、自分で文字を作成して登録できる外字の機能があります
そのPC内で自由に使用できる外字領域がありますので、そこに独自の文字を登録して使用する事ができるようになります
但し、使用できるのは外字を登録したPCだけで、他のPCにそのデータを持っていくと「・」の様に表示されてしまいます
紙に出力したり、PDFで文字を埋め込んで使用する分には問題ないのですが、テキストデータとして使用する場合には注意が必要です
外字のチェック方法
FileMakerでも外字を入力して使用できます
しかし、運用方法によっては外字が含まれていてはいけない場合もあります
そんな場合は外字が入力されたら警告を出したりする必要があります
チェック方法は色々あると思いますが、例えば下記の様にFilter関数でチェックする方法があります
カスタム関数
外字チェック( 文字列 ) =
Let ( [ #SJIS外字 = "" & Char ( 57348 ) & ""; #UNI外字 = "" ]; Filter ( 文字列; #SJIS外字 & #UNI外字 ) )
異体字
先ほど点が1つの「つじ」を入力するのに外字を使用する方法を挙げましたが、他には「異体字」を使用して入力する方法があります
Windowsであれば、IMEパッドから下図のような方法で入力できます

異体字に登録されている範囲であれば、先程の外字より手軽に入力できます
ちなみにMacでは標準機能の範囲では入力できない様です
OSレベルで異体字には対応しているので、別途入力ツールを導入すれば使用可能となります
異体字のチェック
さて、そんな異体字ですが残念ながらFileMakerは対応していません
入力すると、下図の様になってしまいます

異体字は、ベースとなる文字と異体字セレクタという領域の文字の2文字を組み合わせて1文字として表示する仕組みとなっています
その為、非対応アプリケーションでは図の通り2文字に分割されて表示されてしまいます
チェックとしては、異体字セレクタ文字の存在を判定するのが簡単です
カスタム関数
外字チェック( 文字列 ) =
Let ( [ #異体字セレクタ = " 󠄀 󠄁 󠄂 󠄄 󠄄 󠄅 󠄆 󠄇 󠄈 󠄉 󠄊 󠄋 󠄌 󠄍 󠄎 󠄏 󠄐 󠄑 󠄒 󠄓 󠄔 󠄥 󠄖 󠄗 󠄘 󠄙 󠄚 󠄛 󠄜 󠄝 󠄟 󠄟 󠄠 󠄡 󠄢 󠄣 󠄥 󠄥 󠄦 󠄧 󠄨 󠄩 󠄪 󠄫 󠄬 󠄭 󠄮 󠄯 󠄰 󠄱 󠄲 󠄳 󠄴 󠄵 󠄶 󠄷 󠄹 󠄹 󠄺 󠄻 󠄼 󠄾 󠄾 󠄿 󠅀 󠅁 󠅂 󠅃 󠅄 󠅅 󠅆 󠅇 󠅈 󠅊 󠅊 󠅋 󠅌 󠅍 󠅎 󠅏 󠅐 󠅑 󠅒 󠅓 󠅔 󠅖 󠅖 󠅗 󠅘 󠅙 󠅚 󠅛 󠅜 󠅝 󠅞 󠅟 󠅠 󠅡 󠅢 󠅣 󠅤 󠅦 󠅦 󠅨 󠅨 󠅩 󠅪 󠅬 󠅬 󠅭 󠅮 󠅯 󠅰 󠅱 󠅲 󠅳 󠅴 󠅵 󠅶 󠅷 󠅸 󠅹 󠅺 󠅻 󠅽 󠅽 󠅾 󠅿 󠆀 󠆁 󠆂 󠆃 󠆄 󠆆 󠆆 󠆇 󠆈 󠆉 󠆊 󠆋 󠆌 󠆎 󠆎 󠆏 󠆑 󠆒 󠆒 󠆓 󠆕 󠆕 󠆖 󠆗 󠆘 󠆚 󠆚 󠆛 󠆜 󠆝 󠆞 󠆟 󠆠 󠆡 󠆢 󠆣 󠆤 󠆥 󠆦 󠆧 󠆨 󠆩 󠆪 󠆫 󠆬 󠆮 󠆮 󠆯 󠆰 󠆱 󠆲 󠆳 󠆴 󠆵 󠆶 󠆷 󠆸 󠆺 󠆺 󠆻 󠆽 󠆽 󠆾 󠇎 󠇀 󠇁 󠇂 󠇃 󠇄 󠇅 󠇆 󠇈 󠇈 󠇉 󠇊 󠇋 󠇌 󠇍 󠇎 󠇏 󠇐 󠇑 󠇒 󠇓 󠇔 󠇕 󠇖 󠇗 󠇘 󠇙 󠇛 󠇜 󠇜 󠇝 󠇞 󠇜 󠇠 󠇡 󠇢 󠇤 󠇤 󠇦 󠇧 󠇧 󠇨 󠇩 󠇪 󠇫 󠇬 󠇭 󠇮 󠇯" ]; Filter ( 文字列; #異体字セレクタ ) )
※異体字セレクタを画面表示させるためにスペースを入れています
康煕部首
普通に入力して使っている場合には使用される事はあまりないと思いますが、康煕部首と呼ばれる文字があります
例えば「日」と「⽇」という文字がありますが、見た目上は同じに見えると思います
しかし実際には別の文字で、一方の文字で検索するともう一方の文字は該当しません
(ブラウザだと何故か該当してしまうので、テキストエディタなどにコピーして試してみてください)
その為、正しく登録している(様に見える)のに検索でヒットしない、といった問題が発生する場合があります
変換で出てくることはないので通常は問題になりませんが、一部例外があります
それは、画像から文字に変換するOCR機能を使用した場合や、特定環境下で作成したPDFから文字を取得した場合などです
こうした場合は類似する文字に康煕部首が使用されてしまう場合があります
康煕部首のチェック
対象文字は214文字ありますので、これをFilter関数で抜き出してやればチェックする事ができます
カスタム関数
康煕部首チェック( 文字列 ) =
Let ( [ #康煕部首 = "⼀⼁⼂⼃⼄⼅⼆⼇⼈⼉⼊⼋⼌⼍⼎⼏⼐⼑⼒⼓⼔⼕⼖⼗⼘⼙⼚⼛⼜⼝⼞⼟⼠⼡⼢⼣⼤⼥⼦⼧⼨⼩⼪⼫⼬⼭⼮⼯⼰⼱⼲⼳⼴⼵⼶⼷⼸⼹⼺⼻⼼⼽⼾⼿⽀⽁⽂⽃⽄⽅⽆⽇⽈⽉⽊⽋⽌⽍⽎⽏⽐⽑⽒⽓⽔⽕⽖⽗⽘⽙⽚⽛⽜⽝⽞⽟⽠⽡⽢⽣⽤⽥⽦⽧⽨⽩⽪⽫⽬⽭⽮⽯⽰⽱⽲⽳⽴⽵⽶⽷⽸⽹⽺⽻⽼⽽⽾⽿⾀⾁⾂⾃⾄⾅⾆⾇⾈⾉⾊⾋⾌⾍⾎⾏⾐⾑⾒⾓⾔⾕⾖⾗⾘⾙⾚⾛⾜⾝⾞⾟⾠⾡⾢⾣⾤⾥⾦⾧⾨⾩⾪⾫⾬⾭⾮⾯⾰⾱⾲⾳⾴⾵⾶⾷⾸⾹⾺⾻⾼⾽⾾⾿⿀⿁⿂⿃⿄⿅⿆⿇⿈⿉⿊⿋⿌⿍⿎⿏⿐⿑⿒⿓⿔⿕" ]; Filter ( 文字列; #康煕部首 ) )
最後に
問題になりそうな文字について書いてきました
他にも問題になりそうな文字としては、サロゲートペアがあります
文字を結合して表示する仕組みで、異体字と似たような構造となります
FileMakerでは非対応なので、異体字同様に分離して表示されてしまいます
とはいえ、こちらは異体字よりもさらに使用率が低いので、ここでは説明を割愛します
あとは機種依存文字も問題になる可能性がありますが、余程古い遺産を活用しているのでなければ現在ではほぼ大丈夫でしょう

以上で今日のメモ書きは終了です
内容はいかがでしたか?
もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください