More Related Content
More from Atsushi Nakamura (20)
Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
- 3. Copyright 2020 @nuits_jp Slide 3
About Me
中村 充志 / Atsushi Nakamura
• リコージャパン株式会社 所属
• Enterprise(おもに金融)系SIerのITアーキテクト
• 「持続可能なソフトウェア」の探求がライフワーク
• 2020年の目標
1. 「CleanArchitecture」について登壇したい
2. 「xUnit & Moqハンズオン」開催
3. 構成管理フレンドリーなERモデリングツール作成
• Blog http://www.nuits.jp
• Blog(英語) https://blog.nuits.jp
• Twitter @nuits_jp
- 5. Copyright 2020 @nuits_jp Slide 5
例えばこんなとき
• 新しいAPIをお試しで利用するとき、その結果を表示させたい
• 簡単なツールを作るのだがGUIはやりすぎなのでCUIでつくりたい
そして・・・
Overview
Slide 5
- 7. Copyright 2020 @nuits_jp Slide 7
そんなときの心強い味方
「ConsoleTales」
• https://github.com/khalidabuhakmeh/ConsoleTables
ConsoleTables
Slide 7
- 13. Copyright 2020 @nuits_jp Slide 13
FluentTextTable
FluentTextTable
• https://github.com/nuitsjp/FluentTextTable
簡単で、柔軟かつ流暢(Fluent)にレイアウトをカスタマイズできるテキスト
テーブルライブラリです。
NuGetから利用可能です。
Slide 13
- 26. Copyright 2020 @nuits_jp Slide 26
Unicodeには文字を分類するための各種辞書が規定されています。
東アジア圏の全角・半角を分類するための辞書もあります。
UAX #11: East AsianWidth – Unicode
• http://www.unicode.org/reports/tr11/tr11-38.html
• http://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
Unicodeにおける全角・半角判定
- 29. Copyright 2020 @nuits_jp Slide 29
よく見ると・・・・
• 「;」の前が文字コードのレンジ、その後ろが種別
• レンジは範囲と単独がある
• 未定義のとび版がある
Unicodeにおける全角・半角判定
- 34. Copyright 2020 @nuits_jp Slide 34
EastAsianWidthDotNet
EastAsianWidthDotNet
https://github.com/nuitsjp/EastAsianWidthDotNet
• 辞書をパースするサポートライブラリを作成
• パース結果を無駄を省いて最適化
• 辞書などのリソースを都度読むと遅いのでT4テンプレートでコード生成
- 37. Copyright 2020 @nuits_jp Slide 37
辞書は文字コードの範囲と、対象範囲の種別が規定されている。
EastAsianWidthの種別は6つ
• Ambiguous
• Fullwidth
• Halfwidth
• Narrow
• Wide
• Neutral
これらが言語圏によって扱いが規定されている。
Unicodeにおける全角・半角判定
- 38. Copyright 2020 @nuits_jp Slide 38
種別 東アジア それ以外
Ambiguous 全角 半角(正確にはnarrow)
Fullwidth 全角 未使用
Halfwidth 半角 未使用
Narrow 半角 半角(正確にはnarrow)
Wide 全角 未使用
Neutral 半角 半角(正確にはnarrow)
Unicodeにおける全角・半角判定
ウィキペディアより
A(Ambiguous; 曖昧)
文脈によって文字幅が異なる文字。東アジアの組版とそれ以外の組版の両方に出現し、
東アジアの従来文字コードではいわゆる全角として扱われることがある。
ギリシア文字やキリル文字など。
- 65. Copyright 2020 @nuits_jp Slide 65
日本人なら・・・
こんな感じで罫線文字(┌┬┘とか)使いたいよね?
Borderは全角にもマルチ文字にもカスタマイズ可能!
デフォルトのプリセット作るか!
👇できました!