ギリシャ語でいくつかのテキスト出力形式を指定するには、fmtを使用する必要がありますが、ラテン文字と同じようには機能しません。たとえば、次の15文字の文章を考えてみましょう。
ラテン文字の場合:
$echo "Have a nice day" | fmt -w 16
Have a nice day
しかし、奇妙なことに、ビラテン文字の場合:
$echo "Ηαωε α νιψε δαυ" | fmt -w 16
Ηαωε α
νιψε δαυ
実際、上記の文字列の場合、改行なしで印刷される最小値は次のとおりです-w 28
。
$echo "Ηαωε α νιψε δαυ" | fmt -w 28
Ηαωε α νιψε δαυ
$echo "Ηαωε α νιψε δαυ" | fmt -w 27
Ηαωε α νιψε
δαυ
これが起こる理由と解決策(可能な場合)を説明できる人はいますか?
答え1
あなたの質問に答えると、ギリシャ文字は、ラテン語以外の文字、Unicode文字、および次の理由で機能しません。
同じではない基準、fmtはUnicodeをサポートしていません。
https://en.wikipedia.org/wiki/Fmt
補足説明
残念ながら、質問の2番目の部分はこれを行う方法についてです。
最近では、Heninger、Unicode Line Breaking Algorithm、2015-06-01など、Unicodeをラップする方法に関する技術レポートがあるようです。http://www.unicode.org/reports/tr14/ただし、これは単なる仕様であり、実際の実装やソフトウェアの運用事例については言及していないようです。リストされた電子メールを介して作成者に連絡できます。
ウィキペディアの記事に記載されており、fmt
利用par
可能なので、apt-get
あなたが投稿したテキストでそれを試してみることにしました。
しかし、成功しませんでした。それでも、希望の方法で仕上げられていません。
$ echo "Ηαωε α νιψε δαυ" | par 16gr
Ηαωε α
νιψε δαυ
このman
ページは非常に難しく、作成者も次のように警告します。not well-written for the end-user
しかし、決心したら読んでみることができます。
答え2
fmt
したがって、「非ラテン語」言語(たとえば、おそらくUTF-8)は通常サポートされていません。を使用することもできますpar
。そうします。
興味深いことに、SolarisとFreeBSDのマニュアルページはfmt
非常によく似ており、1980年代半ば以降にプログラムが大幅に改善されていないことを示しています。
par
これはあなたのシステムのソフトウェアパッケージとして提供されるかもしれません。そうでない場合は、ここで簡単にコンパイルできます。
一方、適切par
UTF-8サポートの欠如:
- Re:textproc / parにUTF-8サポートを追加します。これらの改善を組み込む際の問題について説明する。
- Debianのバグレポートログ - #310495 par:UTF-8マルチバイト文字を正しく処理できません。オープンしてから少しでした。