[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:58104] Re: バックスラッシュと円の問題



こんにちは、松井です。

Takahashiさん、レスありがとうございます。
昔のファイルを処理しなければいけないことがありまして、
\ であるべき所が
¥ になっており
そのままでは tex のコンパイルが正常に行えないため
いつも手作業で書き換えています。
何とかこの ¥ を全て一気に書き換えられないかなと思っておりました。

前回はいろんなコマンドを試したりメールを書こうとしたりとしていると
頭がこんがらがってきてしまいまして、
バックスラッシュと円を入力しわけることができれば
そっちも解決するかも、と思い
とりあえずさわりの部分だけ書いて投稿いたしました。

まずフォントの状況ですが、
バックスラッシュが出力されるdebianでは
$ fc-match monospace
DroidSansFallbackFull.ttf: "Droid Sans Fallback" "Regular"
$ fc-match :lang=ja
DroidSansFallbackFull.ttf: "Droid Sans Fallback" "Regular"
円が出力されるdebianでは
$ fc-match monospace
ipag.ttf: "IPAゴシック" "Regular"
$ fc-match :lang=ja
ipag.ttf: "IPAゴシック" "Regular"
となっておりました。
$ gsettings set org.gnome.desktop.interface font-name 'Droid Sans Fallback'
$ fc-cache
の後に再ログインして円が出力される方をバックスラッシュが出力される方に合わせようとおもったのですけど、うまくいきませんでした。
フォントの変更方法はよく分かりません。

texの状況としましては、円記号になっているものをコンパイルすると正しくコンパイルされず、
バックスラッシュになっているものをコンパイルすると正しくコンパイルされます。

また、普通のエディタ上では
\¥
と区別されて表示されるのが、バイナリーデータとしては
$ hexdump tf1.txt
0000000 5c5c 000a
0000003
というように同じになっているのは訳がわかりません。
$ cat tf1.txt
¥¥
これをエディタにコピペすると ¥¥ になってしまいます。
geditにしろplumaにしろ
エディタで入力しようとする時に、バックスラッシュキーを押すと最初は
¥
が表示されていて、続けて何かのアルファベットキー(ここではf)を押すと
\f
というように自動で表示が切り替わります。
エディタにおいて同じキーを押すことにより、ある時は \ が出力され、一旦ターミナルを操作して後に同じキーを押すと ¥ が出力されたり、
というような挙動を示すのも私にはかなり不可解でした。

バイナリーデータとして ¥ を \ に置き換えれば一番いいのかなと思いまして、
$ cat tf9.txt
\,¥, a
普通のテキストを16進数テキストに変換
$ hexdump tf9.txt
0000000 2c5c a5c2 202c 0a61
0000008
(エディタにコピペすると、0000000 と 0000008 のサイズが違ってきます)
$ hexdump tf9.txt > tf9.hex
16進数テキストをバイナリファイルに変換
$ xxd -r -p tf9.hex tf9.bin
円のa5(8進数で245)をバックスラッシュの5c(8進数で134)に置き換える
$ tr '¥245' '¥134' < tf9.bin > tf9_after.bin
c2(8進数で302)を削除する
$ tr -d '¥302' < tf9_after.bin > tf9_after_2.bin
最後のバイナリファイルを16進数テキストに変換
$ xxd -p tf9_after_2.bin tf9_after_2.hex
と、ここまでやっても
$ cat tf9_after_2.hex
00000002c5ca5c2202c0a610000008
というように全く変更されていません。

ちなみに、hexdump で -C オプションをつけると並び方が変わってきます。
$ hexdump -C tf9.txt
00000000  5c 2c c2 a5 2c 20 61 0a                           |¥,.., a.|
00000008
$ hexdump -C tf9.txt > tf9_2.hex
$ xxd -r -p tf9_2.hex tf9_2.bin
$ diff -s tf9.bin tf9_2.bin
バイナリーファイル tf9.bin とtf9_2.bin は異なります

マニュアルを見てもよく分からなかったのですけど
-C オプションを付けた場合が特殊であれば
-C オプションをつけないやり方で押し通せばよいのかもしれません。

とりあえず今回はここまでで投稿させていただきます。
進展がありましたら報告いたします。

---
Kenji Matsui



On 2016年08月16日 22:40, Masakazu Takahashi wrote:
こんにちは

2016-08-14 13:49 GMT+09:00 Kenji Matsui <kmatsui@xxxxxxxxxxxxxxxxxx>:
2台のハードディスクにdebianをインストールしているのですが、
半角モードでターミナルにおいて
バックスラッシュ、円
のキーを押した時に
一方ではどちらもバックスラッシュが表示され
もう一方ではどちらも円が表示される、という現象が起こっておりまして

Linux や Windows では通常、どちらのキーを押しても文字コード 0x5c の
文字が入力されます。それがフォントによって、バックスラッシュとして
表示されたり、円記号として表示されたりするものと思います。

さらに「外観の設定」(少なくともMateでは画面上部のメニューからたどれます)の「フォント」の項目は
アプリケーション:   Sans
ドキュメント:          Sans
デスクトップ:          Sans
ウィンドウのタイトル:  Sans Bold
固定幅のフォント:      Monospace
とこちらも全く同一。

「Monospace」「Sans」「Sans Bold」は、フォント名ではなくフォントファミ
リー名(フォントのグループの名前)です。おそらく 2 つの環境で実際の
フォントが異なっているものと思います。

    $ fc-match monospace

何らかの設定をすることによって
一つのマシン(debian)できちんとバックスラッシュと円を出力し分けたいです。

Mac の日本語キーボードでは、バックスラッシュ(0x5c、“\”)と半角
円記号(0xa5、ユニコードで U+00A5、“¥”)を入力し分けられます。
Linux でも設定すれば 0xa5 を入力できると思います(上の“¥”は文字
コードを直接指定して入力しました)。

ただ、0xa5を入力しても 0x5c と同じ役割で使えるわけではないので、
意味があるかどうか。