AppliCodeは,Appli Pontoが開発中のFontIndex付きUnicodeです;UTF-32で通常未使用の12bitをFontIndexに有効活用します;4byteの32bitを無駄なく使用した構成です;構成の内訳は,1bit(BOM)+1ibit(第0〜3面選択フラグ)+12bit(FontIndex)+18bit(Unicode)です;
FontIndexは,フォント属性選択番号です;12bitなので,4096個のフォント属性を選択して利用できます;例えば,font-familyに6bit(64個),font-sizeに3bit(8個),line-heightに3bit(8個)が利用できます;
AppliCodeは,非公式の符号化形式ですが,UTF-32互換を目指して開発をすすめます;
AppliCode(FontIndex付きUnicode)開発の背景について述べます;
Unicodeは,世界中の膨大な数の文字や記号,絵文字に番号をつけたものです;ディスプレイに表示するには,別途Fontを用意し,その属性を設定しなければなりません;ですが、UnicodeにはFont情報が全く含まれていないという課題があります;
一方で,FontはUnicodeとは独立して開発され,異なる特長を有する膨大の種類があります;半角の欧文ならきれいなHelvetica neue,プログラミングなら等幅のSourece Han Code JP,罫線素片を使って表や線図を作るならUme Gothic S4などと,お気に入りのフォントを選択し,属性を適切に設定する必要があるという課題があります;
Unicodeの符号化形式であるUTF-8,UTF-16,UTF-32はいずれも一長一短があります;
UTF-8は,ASCIIではメモリ効率が良いですが,処理は遅いです;
UTF-32は,処理は速いですが,ASCIIではメモリ効率は悪いです;
UTF-16は,上記の中間であり中途半端です;
※ なお,UTF-32の処理が速いのは,最新のコンピュータ技術では,32bit以上のデータをまとめてアクセスできるからです;また,最新のソフトウェア技術では,ZIP形式などでデータを効率的に圧縮して保存できます;UTF-32のメモリ効率が悪いというのは,圧縮しない場合のみです;
AppliCodeのビット構成について説明します;
AppliCodeのFontIndexは,UTF-32(UCS-4)の未使用bitに埋め込みます;
UTF-32は32ビット(4バイト)で1文字を表しますが,Unicodeの定義(最大U+10FFFF)により,実際に使用されるのは下位21ビットのみで,
上位11ビットが常に「0」として未使用になっています;
Unicodeの第4面から第16面は,通常のコンピューター利用においては通常必要ありません;これらの面はほとんどが未割り当てであるか,非常に特殊な目的に使用されています;通常のコンピュータ利用で使うのは,実質第0〜3面だけですから,Unicodeは18bitですみます;
構成の内訳は,1bit(BOM)+1ibit(第0〜3面選択フラグ)+12bit(FontIndex)+18bit(Unicode)です;
最上位の1bitはBOM用です;
次の1bitは第0〜3面選択フラグです;もしかしたら第4〜16面も使用するかもしれないためです;
つづく12bitがFontIndexです;12bitなので4096個指定できます;
次に,FontIndexの構成例を説明します;
例えば,font-family,font-sizeとfont-weightの組み合わせ,line-heightを下記のように設定できます;
なお,color(色)の属性は24bitとデータが大きくなりすぎるのでHTMLとCSSで別途設定します;そもそも,サイトの文章で,フォントに色付けするのは,リンクの青ぐらいしかありません;それに,aタグで指定しますので,FontIndexでの色の指定はなしとしました;
font-weightは,font-familyとfont-sizeと深く連携しています;例えば,Helvetica neueは,font-sizeを大きくしたら,font-weightを小さくしたくなります;font-sizeとfont-weightは反比例するときれいに表示できるようです;ですから,単独ではなく従属する形で設定します;
00 font-family:"Source Han Code JP", font-weight:100;
01 font-family:"Source Han Code JP", font-weight:200;
02 font-family:"Source Han Code JP", font-weight:300;
03 font-family:"Source Han Code JP", font-weight:400;
04 font-family:"Source Han Code JP", font-weight:500;
05 font-family:"Source Han Code JP", font-weight:700;
06 font-family:"Source Han Code JP", font-weight:900;
07
08 font-family:"HackGen", font-weight:400;
09 font-family:"HackGen", font-weight:700;
0A font-family:"HackGen Console", font-weight:400;
0B font-family:"HackGen Console", font-weight:700;
0C font-family:"HackGen 35", font-weight:400;
0D font-family:"HackGen 35", font-weight:700;
0E font-family:"HackGen 35 Console", font-weight:400;
0F font-family:"HackGen 35 Console", font-weight:700;
10 font-family:"Helvetica Neue", font-weight:100;
11 font-family:"Helvetica Neue", font-weight:200;
12 font-family:"Helvetica Neue", font-weight:300;
13 font-family:"Helvetica Neue", font-weight:400;
14 font-family:"Helvetica Neue", font-weight:500;
15 font-family:"Helvetica Neue", font-weight:700;
16 font-family:"Helvetica Neue", font-weight:900;
17 font-family:"MS Gothic
18 font-family:"Hiragino Sans", font-weight:200;
19 font-family:"Hiragino Sans", font-weight:300;
1A font-family:"Hiragino Sans", font-weight:400;
1B font-family:"Hiragino Sans", font-weight:500;
1C font-family:"Hiragino Sans", font-weight:700;
1D font-family:"Hiragino Sans", font-weight:900;
1E font-family:"BIZ UDGothic"
1F font-family:"IPAGothic"
20 font-family:"Courier New", font-weight:400;
21 font-family:"Courier New", font-weight:700;
22 font-family:"Menlo", font-weight:400;
23 font-family:"Menlo", font-weight:700;
24 font-family:"Ume Gothic S4"
25 font-family:"Ume Gothic S5"
26 font-family:"Cica", font-weight:400;
27 font-family:"Cica", font-weight:700;
28 font-family:"Migu 1M", font-weight:400;
29 font-family:"Migu 1M", font-weight:700;
2A font-family:"Ricty Diminished", font-weight:400;
2B font-family:"Ricty Diminished", font-weight:700;
2C font-family:"Firple", font-weight:400;
2D font-family:"Firple", font-weight:700;
2E font-family:"Firple Slim", font-weight:400;
2F font-family:"Firple Slim", font-weight:700;
*** ここからは明朝体 ***
30 font-family:"Source Han Serif", font-weight:200;
31 font-family:"Source Han Serif", font-weight:300;
32 font-family:"Source Han Serif", font-weight:400;
33 font-family:"Source Han Serif JP", font-weight:500;
34 font-family:"Source Han Serif", font-weight:600;
35 font-family:"Source Han Serif", font-weight:700;
36 font-family:"Ume Mincho S3"
37 font-family:"MS Mincho"
38 font-family:"Hiragino Mincho ProN W3"
39 font-family:"Hiragino Mincho ProN W6"
3A font-family:"游明朝体+36ポかな", font-weight:400;
3B font-family:"游明朝体+36ポかな", font-weight:600;
3C font-family:"游明朝体+36ポかな", font-weight:700;
3D
3E font-family:"BIZ UDMincho"
3F font-family:"IPAMincho"