img

screenshot

screenshot.png

Illusion: Programming font for JIS X 0208 with Unicode.
=============================================================================
                                        ┍━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┑
                                        │     **括弧類とのバランス**     │
      0123456789ABCDEF0123456789ABCDEF  ├────────────────────────────────┤
0020.  !"#$%&'()*+,-./0123456789:;<=>?  │ (a) (j) (f) (B) (なし) (税込)  │
0040. @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_  │ {e} {g} {h} {R} {あり} {定食}  │
0060. `abcdefghijklmnopqrstuvwxyz{|}~   │ [u] [y] [l] [W] [取消] [確定]  │
00A0.  ¡¢£¤¥¦§¨©ª«¬ ®¯°±²³´µ¶·¸¹º»¼½¾¿  │ <p>段落</p>                    │
2010. ‐ ‒–—―‖‗‘’‚‛“”„‟†‡•‣․‥…‧          ┝━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┥
2030. ‰ ′″‴‵‶‷ ‹›※‼ ‾    ⁃⁄⁅⁆           │     **引用符とのバランス**     │
2070.     ⁴                             ├────────────────────────────────┤
E0A0.                            │ "a", "A", "あ", "天"           │
                                        │ 'i', 'I', 'い', '地'           │
                                        │ `u`, `U`, `う`, `人`           │
    ▁▂▃▄▅▆▇██▇▆▅▄▃▂▁▁▂▃▄▅▆▇██▇▆▅▄▃▂▁    │ `#include <stdio.h>`           │
                                        └────────────────────────────────┘
U+2500-257F Box Drawing, U+2580-259F Block Elements for Half-Width version
-----------------------------------------------------------------------------
       0 1 2 3 4 5 6 7 8 9 A B C D E F
2500.  ─ ━ │ ┃ ┄ ┅ ┆ ┇ ┈ ┉ ┊ ┋ ┌ ┍ ┎ ┏ `╷ ┌┰┬┐┏┯┳┓┌╥┬┐╔╤╦╗┏┱┮┑`
2510.  ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙ ┚ ┛ ├ ┝ ┞ ┟ `╽ │┃││┃│┃┃│║││║│║║┃┃││`
2520.  ┠ ┡ ┢ ┣ ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫ ┬ ┭ ┮ ┯ `┃ ├┸┼┤┣┷╋┫├╨┼┤╠╧╬╣┡┹╆┪`
2530.  ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻ ┼ ┽ ┾ ┿ `╿ ┝━┿┥┠─╂┨╞═╪╡╟─╫╢┟─╄┩`
2540.  ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋ ╌ ╍ ╎ ╏ `╵ └─┴┘┗━┻┛└─┴┘╚═╩╝┗━┵┘`
2550.  ═ ║ ╒ ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟ `╷ ┌ Command ┒╻╺━┓`
2560.  ╠ ╡ ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ ╬ ╭ ╮ ╯ `╽ │ Fight  ┃╿  ┃`
2570.  ╰ ╱ ╲ ╳ ╴ ╵ ╶ ╷ ╸ ╹ ╺ ╻ ╼ ╽ ╾ ╿ `┃ │ Tool   ┃│┌╼┛`
2580.  ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▉ ▊ ▋ ▌ ▍ ▎ ▏ `╿ │→ Escape ┃╽│  `
2590.  ▐ ░ ▒ ▓ ▔ ▕ ▖ ▗ ▘ ▙ ▚ ▛ ▜ ▝ ▞ ▟ `╵ ┕━━━━━━━━━┛╹└─╴`

U+2500-257F Box Drawing, U+2580-259F Block Elements for Full-Width version
-----------------------------------------------------------------------------
       0 1 2 3 4 5 6 7 8 9 A B C D E F
2500. ─━│┃┄┅┆┇┈┉┊┋┌┍┎┏ `┌┰┬┐┏┯┳┓┌╥┬┐╔╤╦╗┏┱┮┑`
2510. ┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟ `│┃││┃│┃┃│║││║│║║┃┃││`
2520. ┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯ `├┸┼┤┣┷╋┫├╨┼┤╠╧╬╣┡┹╆┪`
2530. ┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿ `┝━┿┥┠─╂┨╞═╪╡╟─╫╢┟─╄┩`
2540. ╀╁╂╃╄╅╆╇╈╉╊╋╌╍╎╏ `└─┴┘┗━┻┛└─┴┘╚═╩╝┗━┵┘`
2550. ═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟ `┌コマンド─┒╷╻╺━┓`
2560. ╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯ `│ たたかう┃╽╿  ┃`
2570. ╰╱╲╳╴╵╶╷╸╹╺╻╼╽╾╿ `│ どうぐ ┃┃│┌╼┛`
2580. ▀▁▂▃▄▅▆▇█▉▊▋▌▍▎▏ `│→にげる ┃╿╽│  `
2590. ▐░▒▓▔▕▖▗▘▙▚▛▜▝▞▟ `┕━━━━━┛╵╹└─╴`

screenshot-ascii.png

#include <iostream>

int main(int argc, char *argv[]) {

  /* An annoying "Hello World" example */
  for (auto i = 0; i < 0xFFFF; i++)
    cout << "Hello, World!" << endl;

  char c = '\n';
  unordered_map <string, vector<string> > m;
  m["key"] = "\\\\"; // this is an error

  return -2e3 + 12l;
}

screenshot-n.png

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>Illusion N with Yu Gothic</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script type="text/javascript">(function() { console.log('hello'); })();</script>
  </head>
  <body>
    <!-- 本文ここから -->
    <h1>「Illusion N」と「游ゴシック」の組み合わせ例</h1>
    <ul>
      <li>Ambiguous の記号類 (●,■,※,…) は半角幅 (Narrow) です。</li>
      <li>半角での表現が困難な文字 (⑩,Ⅳ,…) も半角幅です。</li>
      <li>半分欠けたり、隣と被って描画される現象は回避できます。</li>
    </ul>
  </body>
</html>

screenshot-w.png

曖昧文字 / Ambiguous / メイリオとの組み合わせ例
=======================================================================
Unicode の [付属書11](https://unicode.org/reports/tr11/)
**East Asian Width** で *文脈によって文字幅が異なる* と分類されている文字。

コンソール端末のアプリやコマンドは、かつての `EUC-JP` 時代と異なり、
現在は Unicode (UTF-8) で *Narrow* を標準とする形で普及している。
このため通常では、米印 `※` や三点リーダ `…` なども半角となる。

端末側でフォントと文字の扱いを変更しても、ホスト側で動くプログラムの
対応がなければ **Text User Interface** のレイアウトは崩れてしまう。

screenshot-z.png

中立文字 / Neutral / BIZ UDゴシックとの組み合わせ例
=======================================================================
`☀` Neutral は、東アジアの文脈に __通常出現しない文字__ とされている。
`☁` 例えば _アラビア文字_ など。全角でも半角でもない、という扱い。
`☂` ところが JIS X 0213 の全角記号や絵文字が Neutral に分類され、
`⌘` 事実上 __通常出現しない文字__ でなくなってしまっている……。

`Illusion Z` では _罫線素片とブロック要素_ の Neutral
`╌╍╎╏╴╵╶╷╸╹╺╻╼╽╾╿▐░▖▗▘▙▚▛▜▝▞▟` が全角になります。

chart

凡例

!
Roboto Mono 由来の文字(改変含む)
作成した文字
実装していない文字
JIS X 0208 の Fullwidth/Wide の文字
JIS X 0208 または Unicode での空番

ASCII

0123 4567 89AB CDEF
U+0020   ! " # $ % & ' ( ) * + , - . /
U+0030 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
U+0040 @ A B C D E F G H I J K L M N O
U+0050 P Q R S T U V W X Y Z [ \ ] ^ _
U+0060 ` a b c d e f g h i j k l m n o
U+0070 p q r s t u v w x y z { | } ~

Unicode

0123 4567 89AB CDEF
U+00A0   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯
U+00B0 ° ± ² ³ ´ µ · ¸ ¹ º » ¼ ½ ¾ ¿
U+2000  
U+2010
U+2020
U+2030
U+2040
U+2070
U+2630

Powerline Symbols

0123 4567 89AB CDEF
U+E0A0
U+E0B0

0123 4567 89AB CDEF
U+E0A0
U+E0B0

JIS X 0208 Ambiguous Half-Width version

01234 56789 1011121314 1516171819
00100   ´ ¨ _
00120
00140
00160 ± × ÷ °
00180 §
00200
00220
00240
00260
00280

01234 56789 1011121314 1516171819
00600 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ
00620 Υ Φ Χ Ψ Ω α β γ δ ε ζ η
00640 θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω
00700 А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С
00720 Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
00740 а б в г д е ё ж з и й
00760 к л м н о п р с т у ф х ц ч ш щ ъ ы ь э
00780 ю я
00800
00820
01300
01320
01340
01360
01380
09280

JIS X 0208 Ambiguous Full-Width version

01234 56789 1011121314 1516171819
00100   ´ ¨ _
00120
00140
00160 ± × ÷ °
00180 §
00200
00220
00240
00260
00280

01234 56789 1011121314 1516171819
00600 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ
00620 Υ Φ Χ Ψ Ω α β γ δ ε ζ η
00640 θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω
00700 А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С
00720 Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
00740 а б в г д е ё ж з и й
00760 к л м н о п р с т у ф х ц ч ш щ ъ ы ь э
00780 ю я
00800
00820
01300
01320
01340
01360
01380
09280

Box Drawing, Block Elements Half-Width version

0123 4567 89AB CDEF
U+2500
U+2510
U+2520
U+2530
U+2540
U+2550
U+2560
U+2570
U+2580
U+2590

Box Drawing, Block Elements Full-Width version

0123 4567 89AB CDEF
U+2500
U+2510
U+2520
U+2530
U+2540
U+2550
U+2560
U+2570
U+2580
U+2590