Characters that divide the cell into 2x2, 2x3 or 2x4 pseudopixels.

=========================== 2x2 GRIDS =============================

These are trivial to implement in 8x8. They can be found at least in
PETSCII, Amstrad CPC, Atari 400/800, Sinclair ZX81 and ZX Spectrum.

U+2596
VEC rect(0,48,48,96)

8x8
........ 
........ 
........ 
........ 
####.... 
####.... 
####.... 
####.... 

U+2597
VEC rect(48,48,96,96)

8x8
........
........
........
........
....####
....####
....####
....####

U+2598
VEC rect(0,0,48,48)

8x8
####.... 
####.... 
####.... 
####.... 
........ 
........ 
........ 
........ 

U+259D
VEC rect(48,0,96,48)

8x8
....####
....####
....####
....####
........
........
........
........

U+2599 INV 259D
U+259A = 2598 + 2597
U+259B INV 2597
U+259C INV 2596
U+259E = 2596 + 259D
U+259F INV 2598

====================== 2x4 GRIDS (BRAILLE) =============================

Since Braille patterns are often used for pseudopixel graphics, we shall
implement them as straightforward solid blocks.

All versions are trivial because only powers-of-two are involved.

U+2801
VEC rect(0,0,48,24)
8x8
####....
####....
........
........
........
........
........
........

U+2802
VEC rect(0,24,48,48)
8x8
........
........
####....
####....
........
........
........
........

U+2804
VEC rect(0,48,48,72)
8x8
........
........
........
........
####....
####....
........
........

U+2808
VEC rect(48,0,96,24)

8x8
....####
....####
........
........
........
........
........
........

U+2810
VEC rect(48,24,96,48)

8x8
........
........
....####
....####
........
........
........
........

U+2820
VEC rect(48,48,96,72)

8x8
........
........
........
........
....####
....####
........
........

U+2840
VEC rect(0,72,48,96)

8x8
........
........
........
........
........
........
####....
####....

U+2880
VEC rect(48,72,96,96)

8x8
........
........
........
........
........
........
....####
....####

U+2800 = 0020
U+2803 = 2802+2801
U+2805 = 2804+2801
U+2806 = 2804+2802
U+2807 = 2804+2802+2801
U+2809 = 2808+2801
U+280A = 2808+2802
U+280B = 2808+2802+2801
U+280C = 2808+2804
U+280D = 2808+2804+2801
U+280E = 2808+2804+2802
U+280F = 2808+2804+2802+2801

U+2830 = 2820+2810
U+2850 = 2840+2810
U+2860 = 2840+2820
U+2870 = 2840+2820+2810
U+2890 = 2880+2810
U+28A0 = 2880+2820
U+28B0 = 2880+2820+2810
U+28C0 = 2880+2840
U+28D0 = 2880+2840+2810
U+28E0 = 2880+2840+2820
U+28F0 = 2880+2840+2820+2810

U+2811 = 2810+2801
U+2812 = 2810+2802
U+2813 = 2810+2803
U+2814 = 2810+2804
U+2815 = 2810+2805
U+2816 = 2810+2806
U+2817 = 2810+2807
U+2818 = 2810+2808
U+2819 = 2810+2809
U+281A = 2810+280A
U+281B = 2810+280B
U+281C = 2810+280C
U+281D = 2810+280D
U+281E = 2810+280E
U+281F = 2810+280F

U+2821 = 2820+2801
U+2822 = 2820+2802
U+2823 = 2820+2803
U+2824 = 2820+2804
U+2825 = 2820+2805
U+2826 = 2820+2806
U+2827 = 2820+2807
U+2828 = 2820+2808
U+2829 = 2820+2809
U+282A = 2820+280A
U+282B = 2820+280B
U+282C = 2820+280C
U+282D = 2820+280D
U+282E = 2820+280E
U+282F = 2820+280F

U+2831 = 2830+2801
U+2832 = 2830+2802
U+2833 = 2830+2803
U+2834 = 2830+2804
U+2835 = 2830+2805
U+2836 = 2830+2806
U+2837 = 2830+2807
U+2838 = 2830+2808
U+2839 = 2830+2809
U+283A = 2830+280A
U+283B = 2830+280B
U+283C = 2830+280C
U+283D = 2830+280D
U+283E = 2830+280E
U+283F = 2830+280F

U+2841 = 2840+2801
U+2842 = 2840+2802
U+2843 = 2840+2803
U+2844 = 2840+2804
U+2845 = 2840+2805
U+2846 = 2840+2806
U+2847 = 2840+2807
U+2848 = 2840+2808
U+2849 = 2840+2809
U+284A = 2840+280A
U+284B = 2840+280B
U+284C = 2840+280C
U+284D = 2840+280D
U+284E = 2840+280E
U+284F = 2840+280F

U+2851 = 2850+2801
U+2852 = 2850+2802
U+2853 = 2850+2803
U+2854 = 2850+2804
U+2855 = 2850+2805
U+2856 = 2850+2806
U+2857 = 2850+2807
U+2858 = 2850+2808
U+2859 = 2850+2809
U+285A = 2850+280A
U+285B = 2850+280B
U+285C = 2850+280C
U+285D = 2850+280D
U+285E = 2850+280E
U+285F = 2850+280F

U+2861 = 2860+2801
U+2862 = 2860+2802
U+2863 = 2860+2803
U+2864 = 2860+2804
U+2865 = 2860+2805
U+2866 = 2860+2806
U+2867 = 2860+2807
U+2868 = 2860+2808
U+2869 = 2860+2809
U+286A = 2860+280A
U+286B = 2860+280B
U+286C = 2860+280C
U+286D = 2860+280D
U+286E = 2860+280E
U+286F = 2860+280F

U+2871 = 2870+2801
U+2872 = 2870+2802
U+2873 = 2870+2803
U+2874 = 2870+2804
U+2875 = 2870+2805
U+2876 = 2870+2806
U+2877 = 2870+2807
U+2878 = 2870+2808
U+2879 = 2870+2809
U+287A = 2870+280A
U+287B = 2870+280B
U+287C = 2870+280C
U+287D = 2870+280D
U+287E = 2870+280E
U+287F = 2870+280F

U+2881 = 2880+2801
U+2882 = 2880+2802
U+2883 = 2880+2803
U+2884 = 2880+2804
U+2885 = 2880+2805
U+2886 = 2880+2806
U+2887 = 2880+2807
U+2888 = 2880+2808
U+2889 = 2880+2809
U+288A = 2880+280A
U+288B = 2880+280B
U+288C = 2880+280C
U+288D = 2880+280D
U+288E = 2880+280E
U+288F = 2880+280F

U+2891 = 2890+2801
U+2892 = 2890+2802
U+2893 = 2890+2803
U+2894 = 2890+2804
U+2895 = 2890+2805
U+2896 = 2890+2806
U+2897 = 2890+2807
U+2898 = 2890+2808
U+2899 = 2890+2809
U+289A = 2890+280A
U+289B = 2890+280B
U+289C = 2890+280C
U+289D = 2890+280D
U+289E = 2890+280E
U+289F = 2890+280F

U+28A1 = 28A0+2801
U+28A2 = 28A0+2802
U+28A3 = 28A0+2803
U+28A4 = 28A0+2804
U+28A5 = 28A0+2805
U+28A6 = 28A0+2806
U+28A7 = 28A0+2807
U+28A8 = 28A0+2808
U+28A9 = 28A0+2809
U+28AA = 28A0+280A
U+28AB = 28A0+280B
U+28AC = 28A0+280C
U+28AD = 28A0+280D
U+28AE = 28A0+280E
U+28AF = 28A0+280F

U+28B1 = 28B0+2801
U+28B2 = 28B0+2802
U+28B3 = 28B0+2803
U+28B4 = 28B0+2804
U+28B5 = 28B0+2805
U+28B6 = 28B0+2806
U+28B7 = 28B0+2807
U+28B8 = 28B0+2808
U+28B9 = 28B0+2809
U+28BA = 28B0+280A
U+28BB = 28B0+280B
U+28BC = 28B0+280C
U+28BD = 28B0+280D
U+28BE = 28B0+280E
U+28BF = 28B0+280F

U+28C1 = 28C0+2801
U+28C2 = 28C0+2802
U+28C3 = 28C0+2803
U+28C4 = 28C0+2804
U+28C5 = 28C0+2805
U+28C6 = 28C0+2806
U+28C7 = 28C0+2807
U+28C8 = 28C0+2808
U+28C9 = 28C0+2809
U+28CA = 28C0+280A
U+28CB = 28C0+280B
U+28CC = 28C0+280C
U+28CD = 28C0+280D
U+28CE = 28C0+280E
U+28CF = 28C0+280F

U+28D1 = 28D0+2801
U+28D2 = 28D0+2802
U+28D3 = 28D0+2803
U+28D4 = 28D0+2804
U+28D5 = 28D0+2805
U+28D6 = 28D0+2806
U+28D7 = 28D0+2807
U+28D8 = 28D0+2808
U+28D9 = 28D0+2809
U+28DA = 28D0+280A
U+28DB = 28D0+280B
U+28DC = 28D0+280C
U+28DD = 28D0+280D
U+28DE = 28D0+280E
U+28DF = 28D0+280F

U+28E1 = 28E0+2801
U+28E2 = 28E0+2802
U+28E3 = 28E0+2803
U+28E4 = 28E0+2804
U+28E5 = 28E0+2805
U+28E6 = 28E0+2806
U+28E7 = 28E0+2807
U+28E8 = 28E0+2808
U+28E9 = 28E0+2809
U+28EA = 28E0+280A
U+28EB = 28E0+280B
U+28EC = 28E0+280C
U+28ED = 28E0+280D
U+28EE = 28E0+280E
U+28EF = 28E0+280F

U+2811 = 2810+2801
U+2812 = 2810+2802
U+2813 = 2810+2803
U+2814 = 2810+2804
U+2815 = 2810+2805
U+2816 = 2810+2806
U+2817 = 2810+2807
U+2818 = 2810+2808
U+2819 = 2810+2809
U+281A = 2810+280A
U+281B = 2810+280B
U+281C = 2810+280C
U+281D = 2810+280D
U+281E = 2810+280E
U+281F = 2810+280F

U+28F1 = 28F0+2801
U+28F2 = 28F0+2802
U+28F3 = 28F0+2803
U+28F4 = 28F0+2804
U+28F5 = 28F0+2805
U+28F6 = 28F0+2806
U+28F7 = 28F0+2807
U+28F8 = 28F0+2808
U+28F9 = 28F0+2809
U+28FA = 28F0+280A
U+28FB = 28F0+280B
U+28FC = 28F0+280C
U+28FD = 28F0+280D
U+28FE = 28F0+280E
U+28FF = 28F0+280F

======================= 2x3 GRIDS (TELETEXT) ============================

Teletext dates back to the 1970s and is still in use in many countries. The
representation of pixel patterns follows the BBC standard everywhere.
Despite this, the characters were not included in Unicode before version
number 13.

2x3 patterns adapted to the 8x8 cell can be found in Mattel Aquarius.
We therefore follow Aquarius here: scalines 0-2, 3-4 and 5-7.

In 8x16, we use scanlines 0-4, 5-10 and 11-15.

In addition, we ue a pixel expansion algorithm for the middle line.
For each half,
in 8x8:
- If the top pixel is blank, expand middle pixel upwards.
- Else if the bottom pixel is blank, expand middle pixel downwards.
- Else do nothing.
in 8x16:
- If the middle pixel is blank, expand top pixel downwards
  and bottom pixel upwards. [RULE REMOVED IN 2.1]

There are also variants with separated pixels.

Vector versions are trivial as there is no divisibility problem.

The codepoint scheme is the same as for Braille 6-dot patterns. Unicode
follows the Teletext ordering.

====== Solid 2x3 ======

U+E080 = 0020

U+E081
VEC rect(0,0,48,32)

8x8
####....
####....
####....
........
........
........
........
........

8x16
####....
####....
####....
####....
####....
........
........
........
........
........
........
........
........
........
........
........

U+E082
VEC rect(0,32,48,64)

8x8
........
........
####....
####....
####....
####....
........
........

8x16
........
........
........
........
........
####....
####....
####....
####....
####....
####....
........
........
........
........
........

U+E083
VEC rect(0,0,48,64)

8x8
####....
####....
####....
####....
####....
####....
........
........

8x16
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....
........
........
........
........
........

U+E084
VEC rect(0,64,48,96)

8x8
........
........
........
........
........
####....
####....
####....

8x16
........
........
........
........
........
........
........
........
........
........
........
####....
####....
####....
####....
####....

U+E085
VEC rect(0,0,48,32)
VEC rect(0,64,48,96)

8x8
####....
####....
####....
........
........
####....
####....
####....

8x16
####....
####....
####....
####....
####....
........
........
........
........
........
........
####....
####....
####....
####....
####....

U+E086
VEC rect(0,32,48,96)

8x8
........
........
####....
####....
####....
####....
####....
####....

8x16
........
........
........
........
........
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....

U+E087
VEC rect(0,0,48,96)

8x8
####....
####....
####....
####....
####....
####....
####....
####....

8x16
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....
####....

U+E088
VEC rect(48,0,96,32)

8x8
....####
....####
....####
........
........
........
........
........

8x16
....####
....####
....####
....####
....####
........
........
........
........
........
........
........
........
........
........
........

U+E090
VEC rect(48,32,96,64)

8x8
........
........
....####
....####
....####
....####
........
........

8x16
........
........
........
........
........
....####
....####
....####
....####
....####
....####
........
........
........
........
........

U+E098
VEC rect(48,0,96,64)

8x8
....####
....####
....####
....####
....####
....####
........
........

8x16
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####
........
........
........
........
........

U+E0A0
VEC rect(48,64,96,96)

8x8
........
........
........
........
........
....####
....####
....####

8x16
........
........
........
........
........
........
........
........
........
........
........
....####
....####
....####
....####
....####

U+E0A8
VEC rect(48,0,96,32)
VEC rect(48,64,96,96)

8x8
....####
....####
....####
........
........
....####
....####
....####

8x16
....####
....####
....####
....####
....####
........
........
........
........
........
........
....####
....####
....####
....####
....####

U+E0B0
8x8
........
........
....####
....####
....####
....####
....####
....####

8x16
........
........
........
........
........
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####

U+E0B8
VEC rect(48,0,96,96)

8x8
....####
....####
....####
....####
....####
....####
....####
....####

8x16
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####
....####

U+E089 = E088+E081
U+E08A = E088+E082
U+E08B = E088+E083
U+E08C = E088+E084
U+E08D = E088+E085
U+E08E = E088+E086
U+E08F = E088+E087

U+E091 = E090+E081
U+E092 = E090+E082
U+E093 = E090+E083
U+E094 = E090+E084
U+E095 = E090+E085
U+E096 = E090+E086
U+E097 = E090+E087

U+E099 = E098+E081
U+E09A = E098+E082
U+E09B = E098+E083
U+E09C = E098+E084
U+E09D = E098+E085
U+E09E = E098+E086
U+E09F = E098+E087

U+E0A1 = E0A0+E081
U+E0A2 = E0A0+E082
U+E0A3 = E0A0+E083
U+E0A4 = E0A0+E084
U+E0A5 = E0A0+E085
U+E0A6 = E0A0+E086
U+E0A7 = E0A0+E087

U+E0A9 = E0A8+E081
U+E0AA = E0A8+E082
U+E0AB = E0A8+E083
U+E0AC = E0A8+E084
U+E0AD = E0A8+E085
U+E0AE = E0A8+E086
U+E0AF = E0A8+E087

U+E0B1 = E0B0+E081
U+E0B2 = E0B0+E082
U+E0B3 = E0B0+E083
U+E0B4 = E0B0+E084
U+E0B5 = E0B0+E085
U+E0B6 = E0B0+E086
U+E0B7 = E0B0+E087

U+E0B9 = E0B8+E081
U+E0BA = E0B8+E082
U+E0BB = E0B8+E083
U+E0BC = E0B8+E084
U+E0BD = E0B8+E085
U+E0BE = E0B8+E086
U+E0BF = E0B8+E087

Unicode 13 mapping is different.

	Unscii		Unicode
	01  08		01 02
	02  10		04 08
	04  20		10 20

	Additionally, Unicode skips the four 2x2-grid dupes
	(blank, left half, right half, whole block)

Unicode-to-unscii mapper (Ruby):

uu=0x1fb00
(0..63).each{|u|
if not ((u&0x15==0x15 or u&0x15==0) and (u&0x2a==0x2a or u&0x2a==0)) then
   c=(u&1)+(u&2==2?8:0)+(u&4==4?2:0)+(u&8==8?16:0)+(u&16==16?4:0)+(u&32)
   print "U+%X = %X\n"%[uu,c+0xe080]
   uu+=1
end
}

U+1FB00 = E081
U+1FB01 = E088
U+1FB02 = E089
U+1FB03 = E082
U+1FB04 = E083
U+1FB05 = E08A
U+1FB06 = E08B
U+1FB07 = E090
U+1FB08 = E091
U+1FB09 = E098
U+1FB0A = E099
U+1FB0B = E092
U+1FB0C = E093
U+1FB0D = E09A
U+1FB0E = E09B
U+1FB0F = E084
U+1FB10 = E085
U+1FB11 = E08C
U+1FB12 = E08D
U+1FB13 = E086
U+1FB14 = E08E
U+1FB15 = E08F
U+1FB16 = E094
U+1FB17 = E095
U+1FB18 = E09C
U+1FB19 = E09D
U+1FB1A = E096
U+1FB1B = E097
U+1FB1C = E09E
U+1FB1D = E09F
U+1FB1E = E0A0
U+1FB1F = E0A1
U+1FB20 = E0A8
U+1FB21 = E0A9
U+1FB22 = E0A2
U+1FB23 = E0A3
U+1FB24 = E0AA
U+1FB25 = E0AB
U+1FB26 = E0B0
U+1FB27 = E0B1
U+1FB28 = E0B9
U+1FB29 = E0B2
U+1FB2A = E0B3
U+1FB2B = E0BA
U+1FB2C = E0BB
U+1FB2D = E0A4
U+1FB2E = E0A5
U+1FB2F = E0AC
U+1FB30 = E0AD
U+1FB31 = E0A6
U+1FB32 = E0A7
U+1FB33 = E0AE
U+1FB34 = E0AF
U+1FB35 = E0B4
U+1FB36 = E0B5
U+1FB37 = E0BC
U+1FB38 = E0BD
U+1FB39 = E0B6
U+1FB3A = E0B7
U+1FB3B = E0BE

====== Separated 2x3 ======

Here, 3x2 is the preferred pixel size in 8x8 and 5x2 in 8x16.

U+E0C0 = 0020

U+E0C1
8x8
###.....
###.....
........
........
........
........
........
........

8x16
###.....
###.....
###.....
###.....
........
........
........
........
........
........
........
........
........
........
........
........

U+E0C2
8x8
........
........
........
###.....
###.....
........
........
........

8x16
........
........
........
........
........
###.....
###.....
###.....
###.....
###.....
........
........
........
........
........
........

U+E0C3
8x8
###.....
###.....
........
###.....
###.....
........
........
........

8x16
###.....
###.....
###.....
###.....
........
###.....
###.....
###.....
###.....
###.....
........
........
........
........
........
........

U+E0C4
8x8
........
........
........
........
........
###.....
###.....
........

8x16
........
........
........
........
........
........
........
........
........
........
........
###.....
###.....
###.....
###.....
........

U+E0C5
8x8
###.....
###.....
........
........
........
........
###.....
###.....

8x16
###.....
###.....
###.....
###.....
........
........
........
........
........
........
........
###.....
###.....
###.....
###.....
........

U+E0C6
8x8
........
........
........
###.....
###.....
........
###.....
###.....

8x16
........
........
........
........
........
###.....
###.....
###.....
###.....
###.....
........
###.....
###.....
###.....
###.....
........

U+E0C7
8x8
###.....
###.....
........
###.....
###.....
........
###.....
###.....

8x16
###.....
###.....
###.....
###.....
........
###.....
###.....
###.....
###.....
###.....
........
###.....
###.....
###.....
###.....
........

U+E0C8
8x8
....###.
....###.
........
........
........
........
........
........

8x16
....###.
....###.
....###.
....###.
........
........
........
........
........
........
........
........
........
........
........
........

U+E0D0
8x8
........
........
........
....###.
....###.
........
........
........

8x16
........
........
........
........
........
....###.
....###.
....###.
....###.
....###.
........
........
........
........
........
........

U+E0D8
8x8
....###.
....###.
........
....###.
....###.
........
........
........

8x16
....###.
....###.
....###.
....###.
........
....###.
....###.
....###.
....###.
....###.
........
........
........
........
........
........

U+E0E0
8x8
........
........
........
........
........
........
....###.
....###.

8x16
........
........
........
........
........
........
........
........
........
........
........
....###.
....###.
....###.
....###.
........

U+E0E8
8x8
....###.
....###.
........
........
........
........
....###.
....###.

8x16
....###.
....###.
....###.
....###.
........
........
........
........
........
........
........
....###.
....###.
....###.
....###.
........

U+E0F0
8x8
........
........
........
....###.
....###.
....###.
....###.
....###.

8x16
........
........
........
........
........
....###.
....###.
....###.
....###.
....###.
........
....###.
....###.
....###.
....###.
........

U+E0F8
8x8
....###.
....###.
........
....###.
....###.
........
....###.
....###.

8x16
....###.
....###.
....###.
....###.
........
....###.
....###.
....###.
....###.
....###.
........
....###.
....###.
....###.
....###.
........

U+E0C9 = E0C8+E0C1
U+E0CA = E0C8+E0C2
U+E0CB = E0C8+E0C3
U+E0CC = E0C8+E0C4
U+E0CD = E0C8+E0C5
U+E0CE = E0C8+E0C6
U+E0CF = E0C8+E0C7

U+E0D1 = E0D0+E0C1
U+E0D2 = E0D0+E0C2
U+E0D3 = E0D0+E0C3
U+E0D4 = E0D0+E0C4
U+E0D5 = E0D0+E0C5
U+E0D6 = E0D0+E0C6
U+E0D7 = E0D0+E0C7

U+E0D9 = E0D8+E0C1
U+E0DA = E0D8+E0C2
U+E0DB = E0D8+E0C3
U+E0DC = E0D8+E0C4
U+E0DD = E0D8+E0C5
U+E0DE = E0D8+E0C6
U+E0DF = E0D8+E0C7

U+E0E1 = E0E0+E0C1
U+E0E2 = E0E0+E0C2
U+E0E3 = E0E0+E0C3
U+E0E4 = E0E0+E0C4
U+E0E5 = E0E0+E0C5
U+E0E6 = E0E0+E0C6
U+E0E7 = E0E0+E0C7

U+E0E9 = E0E8+E0C1
U+E0EA = E0E8+E0C2
U+E0EB = E0E8+E0C3
U+E0EC = E0E8+E0C4
U+E0ED = E0E8+E0C5
U+E0EE = E0E8+E0C6
U+E0EF = E0E8+E0C7

U+E0F1 = E0F0+E0C1
U+E0F2 = E0F0+E0C2
U+E0F3 = E0F0+E0C3
U+E0F4 = E0F0+E0C4
U+E0F5 = E0F0+E0C5
U+E0F6 = E0F0+E0C6
U+E0F7 = E0F0+E0C7

U+E0F9 = E0F8+E0C1
U+E0FA = E0F8+E0C2
U+E0FB = E0F8+E0C3
U+E0FC = E0F8+E0C4
U+E0FD = E0F8+E0C5
U+E0FE = E0F8+E0C6
U+E0FF = E0F8+E0C7
