トップ 最新 追記

Masa's blog

検索キーワード:

2013年06月23日 Linux(ghostscript, ps2pdf)で、Eudc.TTE(外字 PUA)を使ったPDFを作成する方法 [長年日記]

_ Eudc.TTEをMS-WindowsからLinuxに持って来る

Slackware-14.0で色々試してみた。

# cp /mnt/MS-Windows/WINDOWS/Fonts/Eudc.TTE /usr/share/fonts/TTF/eudc.ttf

Linux側での拡張子は.ttfにしておくこと。

xlib経由でのアクセスのための設定を行う。

# cd /usr/share/fonts/TTF/
# mkfontscale -e /usr/X11R6/lib/X11/fonts/encodings -e /usr/X11R6/lib/X11/fonts/encodings/large
# mkfontdir -e /usr/X11R6/lib/X11/fonts/encodings -e /usr/X11R6/lib/X11/fonts/encodings/large

mkfontscaleで/usr/share/fonts/TTF/fonts.scaleが生成される。mkfontdirで/usr/share/fonts/TTF/fonts.dirが生成される。fonts.scaleやfonts.dirを手で編集している場合は、編集内容がスッ飛ぶので注意すること。

fontconfig経由でのアクセスのための設定を行う。

# fc-cache -f -v

ここまでの設定で、

$ xfd -fn "-misc-eudc.ttf-medium-r-normal--0-0-0-0-p-0-iso10646-1"

で、外字フォントを画面で確認出来たり、OpenOffice|LibreOffice上で、[挿入(I)], [記号と特殊文字(P)], [フォント(F)]からEUDCを選択して外字フォントを利用できる状態になっている。

_ CMapファイルの作成

さて、ここからが肝心のghostscript対応となる。

Eudc.TTEのコード範囲(Unicodeでの、U+E000からU+F8FFまで)のUTF-8とCIDとの対応テーブル(CMap)を作成するのだが、/usr/share/ghostscript/9.05/Resource/CMap/Identity-UTF16-HというCMapファイル(こちらはUTF-16とCIDの対応テーブル。たぶん1対1の対応なのだが...)があるので、これを雛型にする。

begincidrangeの内容を手書きするのは大変なので、プログラムで生成する。UTF-8 - ウィキペディア - Wikipediaを参考。

#include <stdio.h>
main()
{
	unsigned int i, start, base1, base2, base3, byte1, byte2, byte3;

	base1 = 0xe0;
	base2 = 0x80;
	base3 = 0x80;
	for (i = 0xe000; i <= 0xf8ff; i++){
		byte1 = ((i >> 12) & 0xf) | base1;
		byte2 = ((i >> 6) & 0x3f) | base2;
		byte3 = (i & 0x3f) | base3;
		if (byte3 == 0x80){
			printf("<%02x%02x%02x> ", byte1, byte2, byte3);
			start = i;
		}else if (byte3 == 0xbf){
			printf("<%02x%02x%02x> %d\n", byte1, byte2, byte3, start);
		}
	}
}

上記のプログラムの出力を雛型に組み込んで、多少ごにょごにょして以下のCMapをでっちあげた。

/usr/share/ghostscript/9.05/Resource/CMap/PUA-UTF8-H

% Copyright (C) 2003 Artifex Software.  All rights reserved.
%
% This software is provided AS-IS with no warranty, either express or
% implied.
%
% This software is distributed under license and may not be copied,
% modified or distributed except as expressly authorized under the terms
% of the license contained in the file LICENSE in this distribution.
%
% For more information about licensing, please refer to
% http://www.ghostscript.com/licensing/. For information on
% commercial licensing, go to http://www.artifex.com/licensing/ or
% contact Artifex Software, Inc., 101 Lucas Valley Road #110,
% San Rafael, CA  94903, U.S.A., +1(415)492-9861.
%
% $Id$
% PUA-UTF8-H CMap
% An identity mapping of UTF8 codes to CIDs.
%
% ----------------------------------------------------------------------
% This is created on Slackware-14.0 by Masahiko Ito.
% This is based on Identity-UTF16-H.
%
% This is cmap file for Eudc.TTE created in MS-Windows.
% I assume Eudc.TTE has font images for PUA(Private User Area : 6400 chars).
% Unicode U+E000           - U+F8FF
% UTF-8   0xee8080         - 0xefa3bf
% CID     57344(0xe000)    - 63743(0xf8ff)
%
% "Masahiko Ito"<m-ito@myh.no-ip.org>
% ----------------------------------------------------------------------
%

/CIDInit /ProcSet findresource begin

12 dict begin

begincmap

/CIDSystemInfo 3 dict dup begin
  /Registry (Artifex) def
  /Ordering (Unicode) def
  /Supplement 0 def
end def

/CMapName /PUA-UTF8-H def
/CMapVersion 1.000 def
/CMapType 1 def

/UIDOffset 0 def
% No XUID yet obtained.

/WMode 0 def

1 begincodespacerange
  <EE8080>   <EFA3BF>
endcodespacerange

100 begincidrange
<ee8080> <ee80bf> 57344
<ee8180> <ee81bf> 57408
<ee8280> <ee82bf> 57472
<ee8380> <ee83bf> 57536
<ee8480> <ee84bf> 57600
<ee8580> <ee85bf> 57664
<ee8680> <ee86bf> 57728
<ee8780> <ee87bf> 57792
<ee8880> <ee88bf> 57856
<ee8980> <ee89bf> 57920
<ee8a80> <ee8abf> 57984
<ee8b80> <ee8bbf> 58048
<ee8c80> <ee8cbf> 58112
<ee8d80> <ee8dbf> 58176
<ee8e80> <ee8ebf> 58240
<ee8f80> <ee8fbf> 58304
<ee9080> <ee90bf> 58368
<ee9180> <ee91bf> 58432
<ee9280> <ee92bf> 58496
<ee9380> <ee93bf> 58560
<ee9480> <ee94bf> 58624
<ee9580> <ee95bf> 58688
<ee9680> <ee96bf> 58752
<ee9780> <ee97bf> 58816
<ee9880> <ee98bf> 58880
<ee9980> <ee99bf> 58944
<ee9a80> <ee9abf> 59008
<ee9b80> <ee9bbf> 59072
<ee9c80> <ee9cbf> 59136
<ee9d80> <ee9dbf> 59200
<ee9e80> <ee9ebf> 59264
<ee9f80> <ee9fbf> 59328
<eea080> <eea0bf> 59392
<eea180> <eea1bf> 59456
<eea280> <eea2bf> 59520
<eea380> <eea3bf> 59584
<eea480> <eea4bf> 59648
<eea580> <eea5bf> 59712
<eea680> <eea6bf> 59776
<eea780> <eea7bf> 59840
<eea880> <eea8bf> 59904
<eea980> <eea9bf> 59968
<eeaa80> <eeaabf> 60032
<eeab80> <eeabbf> 60096
<eeac80> <eeacbf> 60160
<eead80> <eeadbf> 60224
<eeae80> <eeaebf> 60288
<eeaf80> <eeafbf> 60352
<eeb080> <eeb0bf> 60416
<eeb180> <eeb1bf> 60480
<eeb280> <eeb2bf> 60544
<eeb380> <eeb3bf> 60608
<eeb480> <eeb4bf> 60672
<eeb580> <eeb5bf> 60736
<eeb680> <eeb6bf> 60800
<eeb780> <eeb7bf> 60864
<eeb880> <eeb8bf> 60928
<eeb980> <eeb9bf> 60992
<eeba80> <eebabf> 61056
<eebb80> <eebbbf> 61120
<eebc80> <eebcbf> 61184
<eebd80> <eebdbf> 61248
<eebe80> <eebebf> 61312
<eebf80> <eebfbf> 61376
<ef8080> <ef80bf> 61440
<ef8180> <ef81bf> 61504
<ef8280> <ef82bf> 61568
<ef8380> <ef83bf> 61632
<ef8480> <ef84bf> 61696
<ef8580> <ef85bf> 61760
<ef8680> <ef86bf> 61824
<ef8780> <ef87bf> 61888
<ef8880> <ef88bf> 61952
<ef8980> <ef89bf> 62016
<ef8a80> <ef8abf> 62080
<ef8b80> <ef8bbf> 62144
<ef8c80> <ef8cbf> 62208
<ef8d80> <ef8dbf> 62272
<ef8e80> <ef8ebf> 62336
<ef8f80> <ef8fbf> 62400
<ef9080> <ef90bf> 62464
<ef9180> <ef91bf> 62528
<ef9280> <ef92bf> 62592
<ef9380> <ef93bf> 62656
<ef9480> <ef94bf> 62720
<ef9580> <ef95bf> 62784
<ef9680> <ef96bf> 62848
<ef9780> <ef97bf> 62912
<ef9880> <ef98bf> 62976
<ef9980> <ef99bf> 63040
<ef9a80> <ef9abf> 63104
<ef9b80> <ef9bbf> 63168
<ef9c80> <ef9cbf> 63232
<ef9d80> <ef9dbf> 63296
<ef9e80> <ef9ebf> 63360
<ef9f80> <ef9fbf> 63424
<efa080> <efa0bf> 63488
<efa180> <efa1bf> 63552
<efa280> <efa2bf> 63616
<efa380> <efa3bf> 63680
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end

%%EndResource
%%EOF

_ cidfmapへの追加

/usr/share/ghostscript/9.05/Resource/Init/cidfmapへ以下の行を追加する。

/Eudc                           << /FileType /TrueType /Path (eudc.ttf) /CSI [(Artifex) (Unicode) 0] >> ;

これで、環境周りの設定は完了!

_ postscriptの記述方法

超テキトウなpsファイルの例。もちろんエンコーディングはUTF-8で。

上記の環境設定で、外字フォントとして、/Eudc-PUA-UTF8-Hが指定できるようになっている。

%!PS-Adobe-3.0

% 描画開始位置への移動
100 100 moveto

% 一般的なフォントの指定
/Ryumin-Light-UniJIS-UTF8-H findfont
20 scalefont
setfont

% 文字列の描画
(外字を含まない文字列) show

% 外字フォント(Eudc.TTF)の指定
/Eudc-PUA-UTF8-H findfont
20 scalefont
setfont

% 外字で出来た文字列の描画
(外字のみの文字列) show

showpage

このpsファイルをgsコマンドで表示すれば、外字も含めて正常に表示できるし、もちろん、ps2pdfで作成したPDFファイルも正常に表示される。


2013年06月25日 Linux(ghostscript, ps2pdf)で、Eudc.TTE(外字 PUA)を使ったPDFを作成する方法(2) [長年日記]

_ fontforgeによるフォントの合成(sazanami-mincho.ttf + Eudc.TTE)

通常よく使うフォントに外字(Eudc.TTE)を取り込んでしまえば、postscriptを記述する際に、いちいち外字とそれ以外でフォントを切替える必要が無い事に気づいた。

下記のスクリプトを実行すると、sazanami-mincho.ttfにEudc.TTEを取り込んで、sazanami-mincho-eudc.ttfを生成する。

#!/usr/local/bin/fontforge -script

family = "SazanamiMinchoEudc"
main = "sazanami-mincho.ttf"
main_tmp = "sazanami-mincho_tmp.ttf"
sub = "Eudc.TTE"
sub_tmp = "Eudc_tmp.TTE"
out = "sazanami-mincho-eudc.ttf"

Open(sub)
ScaleToEm(1024)
Generate(sub_tmp)
Close()

Open(main)
ScaleToEm(1024)
Generate(main_tmp)
Close()

Open(main_tmp)
MergeFonts(sub_tmp)
SetFontNames(family, family, family, "Regular")
Generate(out)
Close()

出来上がったフォントをシステムに取り込む。

# cp sazanami-mincho-eudc.ttf /usr/share/fonts/TTF/
# cd /usr/share/fonts/TTF/
# mkfontscale -e /usr/X11R6/lib/X11/fonts/encodings -e /usr/X11R6/lib/X11/fonts/encodings/large
# mkfontdir -e /usr/X11R6/lib/X11/fonts/encodings -e /usr/X11R6/lib/X11/fonts/encodings/large
# fc-cache -f -v

_ CMap(/usr/share/ghostscript/9.05/Resource/CMap/AllRange-UTF8-H)

UniJIS-UTF8-HをベースにAllRange-UTF8-Hをでっちあげる。名前の表す通りUTF-8の0x00〜0x7f, 0xc280〜0xdfbf, 0xe0a080〜0xefbfbf(Unicodeで言うところのU+0000からU+FFFF)を網羅するcmapファイルである。

begincidrangeの部分は下記のプログラムの出力をベースにする。

#include <stdio.h>
main ()
{
  unsigned int i, start, base1, base2, base3, byte1, byte2, byte3;

  base1 = 0xc0;
  base2 = 0x80;
  for (i = 0x80; i <= 0x7ff; i++)
    {
      byte1 = ((i >> 6) & 0x1f) | base1;
      byte2 = (i & 0x3f) | base2;
      if (byte2 == 0x80)
	{
	  printf ("<%02x%02x> ", byte1, byte2);
	  start = i;
	}
      else if (byte2 == 0xbf)
	{
	  printf ("<%02x%02x> %d\n", byte1, byte2, start);
	}
    }

  base1 = 0xe0;
  base2 = 0x80;
  base3 = 0x80;
  for (i = 0x800; i <= 0xffff; i++)
    {
      byte1 = ((i >> 12) & 0xf) | base1;
      byte2 = ((i >> 6) & 0x3f) | base2;
      byte3 = (i & 0x3f) | base3;
      if (byte3 == 0x80)
	{
	  printf ("<%02x%02x%02x> ", byte1, byte2, byte3);
	  start = i;
	}
      else if (byte3 == 0xbf)
	{
	  printf ("<%02x%02x%02x> %d\n", byte1, byte2, byte3, start);
	}
    }
}

下記が、でっちあげられたAllRange-UTF8-H。

%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (AllRange-UTF8-H)
%%Title: (AllRange-UTF8-H Artifex Unicode 0)
%%Version: 13.015
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2010 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
%
% ----------------------------------------------------------------------
% This is created on Slackware-14.0 by Masahiko Ito.
% This is based on UniJIS-UTF8-H.
%
% This is cmap file for U+0000 to U+FFFF.
%
%   U+0000-U+007F -> UTF-8 0x00-0x7f
%   U+0080-U+07FF -> UTF-8 0xc280-0xdfbf
%   U+0800-U+FFFF -> UTF-8 0xe0a080-0xefbfbf
%
% "Masahiko Ito"<m-ito@myh.no-ip.org>
% ----------------------------------------------------------------------
%

/CIDInit /ProcSet findresource begin

12 dict begin

begincmap

/CIDSystemInfo 3 dict dup begin
  /Registry (Artifex) def
  /Ordering (Unicode) def
  /Supplement 0 def
end def

/CMapName /AllRange-UTF8-H def
/CMapVersion 13.015 def
/CMapType 1 def

/UIDOffset 0 def
% No XUID yet obtained.

/WMode 0 def

4 begincodespacerange
  <00>       <7F>
  <C080>     <DFBF>
  <E08080>   <EFBFBF>
  <F0808080> <F7BFBFBF>
endcodespacerange

100 begincidrange
<00> <7f> 0
<c280> <c2bf> 128
<c380> <c3bf> 192
<c480> <c4bf> 256
<c580> <c5bf> 320
<c680> <c6bf> 384
<c780> <c7bf> 448
<c880> <c8bf> 512
<c980> <c9bf> 576
<ca80> <cabf> 640
<cb80> <cbbf> 704
<cc80> <ccbf> 768
<cd80> <cdbf> 832
<ce80> <cebf> 896
<cf80> <cfbf> 960
<d080> <d0bf> 1024
<d180> <d1bf> 1088
<d280> <d2bf> 1152
<d380> <d3bf> 1216
<d480> <d4bf> 1280
<d580> <d5bf> 1344
<d680> <d6bf> 1408
<d780> <d7bf> 1472
<d880> <d8bf> 1536
<d980> <d9bf> 1600
<da80> <dabf> 1664
<db80> <dbbf> 1728
<dc80> <dcbf> 1792
<dd80> <ddbf> 1856
<de80> <debf> 1920
<df80> <dfbf> 1984
<e0a080> <e0a0bf> 2048
<e0a180> <e0a1bf> 2112
<e0a280> <e0a2bf> 2176
<e0a380> <e0a3bf> 2240
<e0a480> <e0a4bf> 2304
<e0a580> <e0a5bf> 2368
<e0a680> <e0a6bf> 2432
<e0a780> <e0a7bf> 2496
<e0a880> <e0a8bf> 2560
<e0a980> <e0a9bf> 2624
<e0aa80> <e0aabf> 2688
<e0ab80> <e0abbf> 2752
<e0ac80> <e0acbf> 2816
<e0ad80> <e0adbf> 2880
<e0ae80> <e0aebf> 2944
<e0af80> <e0afbf> 3008
<e0b080> <e0b0bf> 3072
<e0b180> <e0b1bf> 3136
<e0b280> <e0b2bf> 3200
<e0b380> <e0b3bf> 3264
<e0b480> <e0b4bf> 3328
<e0b580> <e0b5bf> 3392
<e0b680> <e0b6bf> 3456
<e0b780> <e0b7bf> 3520
<e0b880> <e0b8bf> 3584
<e0b980> <e0b9bf> 3648
<e0ba80> <e0babf> 3712
<e0bb80> <e0bbbf> 3776
<e0bc80> <e0bcbf> 3840
<e0bd80> <e0bdbf> 3904
<e0be80> <e0bebf> 3968
<e0bf80> <e0bfbf> 4032
<e18080> <e180bf> 4096
<e18180> <e181bf> 4160
<e18280> <e182bf> 4224
<e18380> <e183bf> 4288
<e18480> <e184bf> 4352
<e18580> <e185bf> 4416
<e18680> <e186bf> 4480
<e18780> <e187bf> 4544
<e18880> <e188bf> 4608
<e18980> <e189bf> 4672
<e18a80> <e18abf> 4736
<e18b80> <e18bbf> 4800
<e18c80> <e18cbf> 4864
<e18d80> <e18dbf> 4928
<e18e80> <e18ebf> 4992
<e18f80> <e18fbf> 5056
<e19080> <e190bf> 5120
<e19180> <e191bf> 5184
<e19280> <e192bf> 5248
<e19380> <e193bf> 5312
<e19480> <e194bf> 5376
<e19580> <e195bf> 5440
<e19680> <e196bf> 5504
<e19780> <e197bf> 5568
<e19880> <e198bf> 5632
<e19980> <e199bf> 5696
<e19a80> <e19abf> 5760
<e19b80> <e19bbf> 5824
<e19c80> <e19cbf> 5888
<e19d80> <e19dbf> 5952
<e19e80> <e19ebf> 6016
<e19f80> <e19fbf> 6080
<e1a080> <e1a0bf> 6144
<e1a180> <e1a1bf> 6208
<e1a280> <e1a2bf> 6272
<e1a380> <e1a3bf> 6336
<e1a480> <e1a4bf> 6400
endcidrange

100 begincidrange
<e1a580> <e1a5bf> 6464
<e1a680> <e1a6bf> 6528
<e1a780> <e1a7bf> 6592
<e1a880> <e1a8bf> 6656
<e1a980> <e1a9bf> 6720
<e1aa80> <e1aabf> 6784
<e1ab80> <e1abbf> 6848
<e1ac80> <e1acbf> 6912
<e1ad80> <e1adbf> 6976
<e1ae80> <e1aebf> 7040
<e1af80> <e1afbf> 7104
<e1b080> <e1b0bf> 7168
<e1b180> <e1b1bf> 7232
<e1b280> <e1b2bf> 7296
<e1b380> <e1b3bf> 7360
<e1b480> <e1b4bf> 7424
<e1b580> <e1b5bf> 7488
<e1b680> <e1b6bf> 7552
<e1b780> <e1b7bf> 7616
<e1b880> <e1b8bf> 7680
<e1b980> <e1b9bf> 7744
<e1ba80> <e1babf> 7808
<e1bb80> <e1bbbf> 7872
<e1bc80> <e1bcbf> 7936
<e1bd80> <e1bdbf> 8000
<e1be80> <e1bebf> 8064
<e1bf80> <e1bfbf> 8128
<e28080> <e280bf> 8192
<e28180> <e281bf> 8256
<e28280> <e282bf> 8320
<e28380> <e283bf> 8384
<e28480> <e284bf> 8448
<e28580> <e285bf> 8512
<e28680> <e286bf> 8576
<e28780> <e287bf> 8640
<e28880> <e288bf> 8704
<e28980> <e289bf> 8768
<e28a80> <e28abf> 8832
<e28b80> <e28bbf> 8896
<e28c80> <e28cbf> 8960
<e28d80> <e28dbf> 9024
<e28e80> <e28ebf> 9088
<e28f80> <e28fbf> 9152
<e29080> <e290bf> 9216
<e29180> <e291bf> 9280
<e29280> <e292bf> 9344
<e29380> <e293bf> 9408
<e29480> <e294bf> 9472
<e29580> <e295bf> 9536
<e29680> <e296bf> 9600
<e29780> <e297bf> 9664
<e29880> <e298bf> 9728
<e29980> <e299bf> 9792
<e29a80> <e29abf> 9856
<e29b80> <e29bbf> 9920
<e29c80> <e29cbf> 9984
<e29d80> <e29dbf> 10048
<e29e80> <e29ebf> 10112
<e29f80> <e29fbf> 10176
<e2a080> <e2a0bf> 10240
<e2a180> <e2a1bf> 10304
<e2a280> <e2a2bf> 10368
<e2a380> <e2a3bf> 10432
<e2a480> <e2a4bf> 10496
<e2a580> <e2a5bf> 10560
<e2a680> <e2a6bf> 10624
<e2a780> <e2a7bf> 10688
<e2a880> <e2a8bf> 10752
<e2a980> <e2a9bf> 10816
<e2aa80> <e2aabf> 10880
<e2ab80> <e2abbf> 10944
<e2ac80> <e2acbf> 11008
<e2ad80> <e2adbf> 11072
<e2ae80> <e2aebf> 11136
<e2af80> <e2afbf> 11200
<e2b080> <e2b0bf> 11264
<e2b180> <e2b1bf> 11328
<e2b280> <e2b2bf> 11392
<e2b380> <e2b3bf> 11456
<e2b480> <e2b4bf> 11520
<e2b580> <e2b5bf> 11584
<e2b680> <e2b6bf> 11648
<e2b780> <e2b7bf> 11712
<e2b880> <e2b8bf> 11776
<e2b980> <e2b9bf> 11840
<e2ba80> <e2babf> 11904
<e2bb80> <e2bbbf> 11968
<e2bc80> <e2bcbf> 12032
<e2bd80> <e2bdbf> 12096
<e2be80> <e2bebf> 12160
<e2bf80> <e2bfbf> 12224
<e38080> <e380bf> 12288
<e38180> <e381bf> 12352
<e38280> <e382bf> 12416
<e38380> <e383bf> 12480
<e38480> <e384bf> 12544
<e38580> <e385bf> 12608
<e38680> <e386bf> 12672
<e38780> <e387bf> 12736
<e38880> <e388bf> 12800
endcidrange

100 begincidrange
<e38980> <e389bf> 12864
<e38a80> <e38abf> 12928
<e38b80> <e38bbf> 12992
<e38c80> <e38cbf> 13056
<e38d80> <e38dbf> 13120
<e38e80> <e38ebf> 13184
<e38f80> <e38fbf> 13248
<e39080> <e390bf> 13312
<e39180> <e391bf> 13376
<e39280> <e392bf> 13440
<e39380> <e393bf> 13504
<e39480> <e394bf> 13568
<e39580> <e395bf> 13632
<e39680> <e396bf> 13696
<e39780> <e397bf> 13760
<e39880> <e398bf> 13824
<e39980> <e399bf> 13888
<e39a80> <e39abf> 13952
<e39b80> <e39bbf> 14016
<e39c80> <e39cbf> 14080
<e39d80> <e39dbf> 14144
<e39e80> <e39ebf> 14208
<e39f80> <e39fbf> 14272
<e3a080> <e3a0bf> 14336
<e3a180> <e3a1bf> 14400
<e3a280> <e3a2bf> 14464
<e3a380> <e3a3bf> 14528
<e3a480> <e3a4bf> 14592
<e3a580> <e3a5bf> 14656
<e3a680> <e3a6bf> 14720
<e3a780> <e3a7bf> 14784
<e3a880> <e3a8bf> 14848
<e3a980> <e3a9bf> 14912
<e3aa80> <e3aabf> 14976
<e3ab80> <e3abbf> 15040
<e3ac80> <e3acbf> 15104
<e3ad80> <e3adbf> 15168
<e3ae80> <e3aebf> 15232
<e3af80> <e3afbf> 15296
<e3b080> <e3b0bf> 15360
<e3b180> <e3b1bf> 15424
<e3b280> <e3b2bf> 15488
<e3b380> <e3b3bf> 15552
<e3b480> <e3b4bf> 15616
<e3b580> <e3b5bf> 15680
<e3b680> <e3b6bf> 15744
<e3b780> <e3b7bf> 15808
<e3b880> <e3b8bf> 15872
<e3b980> <e3b9bf> 15936
<e3ba80> <e3babf> 16000
<e3bb80> <e3bbbf> 16064
<e3bc80> <e3bcbf> 16128
<e3bd80> <e3bdbf> 16192
<e3be80> <e3bebf> 16256
<e3bf80> <e3bfbf> 16320
<e48080> <e480bf> 16384
<e48180> <e481bf> 16448
<e48280> <e482bf> 16512
<e48380> <e483bf> 16576
<e48480> <e484bf> 16640
<e48580> <e485bf> 16704
<e48680> <e486bf> 16768
<e48780> <e487bf> 16832
<e48880> <e488bf> 16896
<e48980> <e489bf> 16960
<e48a80> <e48abf> 17024
<e48b80> <e48bbf> 17088
<e48c80> <e48cbf> 17152
<e48d80> <e48dbf> 17216
<e48e80> <e48ebf> 17280
<e48f80> <e48fbf> 17344
<e49080> <e490bf> 17408
<e49180> <e491bf> 17472
<e49280> <e492bf> 17536
<e49380> <e493bf> 17600
<e49480> <e494bf> 17664
<e49580> <e495bf> 17728
<e49680> <e496bf> 17792
<e49780> <e497bf> 17856
<e49880> <e498bf> 17920
<e49980> <e499bf> 17984
<e49a80> <e49abf> 18048
<e49b80> <e49bbf> 18112
<e49c80> <e49cbf> 18176
<e49d80> <e49dbf> 18240
<e49e80> <e49ebf> 18304
<e49f80> <e49fbf> 18368
<e4a080> <e4a0bf> 18432
<e4a180> <e4a1bf> 18496
<e4a280> <e4a2bf> 18560
<e4a380> <e4a3bf> 18624
<e4a480> <e4a4bf> 18688
<e4a580> <e4a5bf> 18752
<e4a680> <e4a6bf> 18816
<e4a780> <e4a7bf> 18880
<e4a880> <e4a8bf> 18944
<e4a980> <e4a9bf> 19008
<e4aa80> <e4aabf> 19072
<e4ab80> <e4abbf> 19136
<e4ac80> <e4acbf> 19200
endcidrange

100 begincidrange
<e4ad80> <e4adbf> 19264
<e4ae80> <e4aebf> 19328
<e4af80> <e4afbf> 19392
<e4b080> <e4b0bf> 19456
<e4b180> <e4b1bf> 19520
<e4b280> <e4b2bf> 19584
<e4b380> <e4b3bf> 19648
<e4b480> <e4b4bf> 19712
<e4b580> <e4b5bf> 19776
<e4b680> <e4b6bf> 19840
<e4b780> <e4b7bf> 19904
<e4b880> <e4b8bf> 19968
<e4b980> <e4b9bf> 20032
<e4ba80> <e4babf> 20096
<e4bb80> <e4bbbf> 20160
<e4bc80> <e4bcbf> 20224
<e4bd80> <e4bdbf> 20288
<e4be80> <e4bebf> 20352
<e4bf80> <e4bfbf> 20416
<e58080> <e580bf> 20480
<e58180> <e581bf> 20544
<e58280> <e582bf> 20608
<e58380> <e583bf> 20672
<e58480> <e584bf> 20736
<e58580> <e585bf> 20800
<e58680> <e586bf> 20864
<e58780> <e587bf> 20928
<e58880> <e588bf> 20992
<e58980> <e589bf> 21056
<e58a80> <e58abf> 21120
<e58b80> <e58bbf> 21184
<e58c80> <e58cbf> 21248
<e58d80> <e58dbf> 21312
<e58e80> <e58ebf> 21376
<e58f80> <e58fbf> 21440
<e59080> <e590bf> 21504
<e59180> <e591bf> 21568
<e59280> <e592bf> 21632
<e59380> <e593bf> 21696
<e59480> <e594bf> 21760
<e59580> <e595bf> 21824
<e59680> <e596bf> 21888
<e59780> <e597bf> 21952
<e59880> <e598bf> 22016
<e59980> <e599bf> 22080
<e59a80> <e59abf> 22144
<e59b80> <e59bbf> 22208
<e59c80> <e59cbf> 22272
<e59d80> <e59dbf> 22336
<e59e80> <e59ebf> 22400
<e59f80> <e59fbf> 22464
<e5a080> <e5a0bf> 22528
<e5a180> <e5a1bf> 22592
<e5a280> <e5a2bf> 22656
<e5a380> <e5a3bf> 22720
<e5a480> <e5a4bf> 22784
<e5a580> <e5a5bf> 22848
<e5a680> <e5a6bf> 22912
<e5a780> <e5a7bf> 22976
<e5a880> <e5a8bf> 23040
<e5a980> <e5a9bf> 23104
<e5aa80> <e5aabf> 23168
<e5ab80> <e5abbf> 23232
<e5ac80> <e5acbf> 23296
<e5ad80> <e5adbf> 23360
<e5ae80> <e5aebf> 23424
<e5af80> <e5afbf> 23488
<e5b080> <e5b0bf> 23552
<e5b180> <e5b1bf> 23616
<e5b280> <e5b2bf> 23680
<e5b380> <e5b3bf> 23744
<e5b480> <e5b4bf> 23808
<e5b580> <e5b5bf> 23872
<e5b680> <e5b6bf> 23936
<e5b780> <e5b7bf> 24000
<e5b880> <e5b8bf> 24064
<e5b980> <e5b9bf> 24128
<e5ba80> <e5babf> 24192
<e5bb80> <e5bbbf> 24256
<e5bc80> <e5bcbf> 24320
<e5bd80> <e5bdbf> 24384
<e5be80> <e5bebf> 24448
<e5bf80> <e5bfbf> 24512
<e68080> <e680bf> 24576
<e68180> <e681bf> 24640
<e68280> <e682bf> 24704
<e68380> <e683bf> 24768
<e68480> <e684bf> 24832
<e68580> <e685bf> 24896
<e68680> <e686bf> 24960
<e68780> <e687bf> 25024
<e68880> <e688bf> 25088
<e68980> <e689bf> 25152
<e68a80> <e68abf> 25216
<e68b80> <e68bbf> 25280
<e68c80> <e68cbf> 25344
<e68d80> <e68dbf> 25408
<e68e80> <e68ebf> 25472
<e68f80> <e68fbf> 25536
<e69080> <e690bf> 25600
endcidrange

100 begincidrange
<e69180> <e691bf> 25664
<e69280> <e692bf> 25728
<e69380> <e693bf> 25792
<e69480> <e694bf> 25856
<e69580> <e695bf> 25920
<e69680> <e696bf> 25984
<e69780> <e697bf> 26048
<e69880> <e698bf> 26112
<e69980> <e699bf> 26176
<e69a80> <e69abf> 26240
<e69b80> <e69bbf> 26304
<e69c80> <e69cbf> 26368
<e69d80> <e69dbf> 26432
<e69e80> <e69ebf> 26496
<e69f80> <e69fbf> 26560
<e6a080> <e6a0bf> 26624
<e6a180> <e6a1bf> 26688
<e6a280> <e6a2bf> 26752
<e6a380> <e6a3bf> 26816
<e6a480> <e6a4bf> 26880
<e6a580> <e6a5bf> 26944
<e6a680> <e6a6bf> 27008
<e6a780> <e6a7bf> 27072
<e6a880> <e6a8bf> 27136
<e6a980> <e6a9bf> 27200
<e6aa80> <e6aabf> 27264
<e6ab80> <e6abbf> 27328
<e6ac80> <e6acbf> 27392
<e6ad80> <e6adbf> 27456
<e6ae80> <e6aebf> 27520
<e6af80> <e6afbf> 27584
<e6b080> <e6b0bf> 27648
<e6b180> <e6b1bf> 27712
<e6b280> <e6b2bf> 27776
<e6b380> <e6b3bf> 27840
<e6b480> <e6b4bf> 27904
<e6b580> <e6b5bf> 27968
<e6b680> <e6b6bf> 28032
<e6b780> <e6b7bf> 28096
<e6b880> <e6b8bf> 28160
<e6b980> <e6b9bf> 28224
<e6ba80> <e6babf> 28288
<e6bb80> <e6bbbf> 28352
<e6bc80> <e6bcbf> 28416
<e6bd80> <e6bdbf> 28480
<e6be80> <e6bebf> 28544
<e6bf80> <e6bfbf> 28608
<e78080> <e780bf> 28672
<e78180> <e781bf> 28736
<e78280> <e782bf> 28800
<e78380> <e783bf> 28864
<e78480> <e784bf> 28928
<e78580> <e785bf> 28992
<e78680> <e786bf> 29056
<e78780> <e787bf> 29120
<e78880> <e788bf> 29184
<e78980> <e789bf> 29248
<e78a80> <e78abf> 29312
<e78b80> <e78bbf> 29376
<e78c80> <e78cbf> 29440
<e78d80> <e78dbf> 29504
<e78e80> <e78ebf> 29568
<e78f80> <e78fbf> 29632
<e79080> <e790bf> 29696
<e79180> <e791bf> 29760
<e79280> <e792bf> 29824
<e79380> <e793bf> 29888
<e79480> <e794bf> 29952
<e79580> <e795bf> 30016
<e79680> <e796bf> 30080
<e79780> <e797bf> 30144
<e79880> <e798bf> 30208
<e79980> <e799bf> 30272
<e79a80> <e79abf> 30336
<e79b80> <e79bbf> 30400
<e79c80> <e79cbf> 30464
<e79d80> <e79dbf> 30528
<e79e80> <e79ebf> 30592
<e79f80> <e79fbf> 30656
<e7a080> <e7a0bf> 30720
<e7a180> <e7a1bf> 30784
<e7a280> <e7a2bf> 30848
<e7a380> <e7a3bf> 30912
<e7a480> <e7a4bf> 30976
<e7a580> <e7a5bf> 31040
<e7a680> <e7a6bf> 31104
<e7a780> <e7a7bf> 31168
<e7a880> <e7a8bf> 31232
<e7a980> <e7a9bf> 31296
<e7aa80> <e7aabf> 31360
<e7ab80> <e7abbf> 31424
<e7ac80> <e7acbf> 31488
<e7ad80> <e7adbf> 31552
<e7ae80> <e7aebf> 31616
<e7af80> <e7afbf> 31680
<e7b080> <e7b0bf> 31744
<e7b180> <e7b1bf> 31808
<e7b280> <e7b2bf> 31872
<e7b380> <e7b3bf> 31936
<e7b480> <e7b4bf> 32000
endcidrange

100 begincidrange
<e7b580> <e7b5bf> 32064
<e7b680> <e7b6bf> 32128
<e7b780> <e7b7bf> 32192
<e7b880> <e7b8bf> 32256
<e7b980> <e7b9bf> 32320
<e7ba80> <e7babf> 32384
<e7bb80> <e7bbbf> 32448
<e7bc80> <e7bcbf> 32512
<e7bd80> <e7bdbf> 32576
<e7be80> <e7bebf> 32640
<e7bf80> <e7bfbf> 32704
<e88080> <e880bf> 32768
<e88180> <e881bf> 32832
<e88280> <e882bf> 32896
<e88380> <e883bf> 32960
<e88480> <e884bf> 33024
<e88580> <e885bf> 33088
<e88680> <e886bf> 33152
<e88780> <e887bf> 33216
<e88880> <e888bf> 33280
<e88980> <e889bf> 33344
<e88a80> <e88abf> 33408
<e88b80> <e88bbf> 33472
<e88c80> <e88cbf> 33536
<e88d80> <e88dbf> 33600
<e88e80> <e88ebf> 33664
<e88f80> <e88fbf> 33728
<e89080> <e890bf> 33792
<e89180> <e891bf> 33856
<e89280> <e892bf> 33920
<e89380> <e893bf> 33984
<e89480> <e894bf> 34048
<e89580> <e895bf> 34112
<e89680> <e896bf> 34176
<e89780> <e897bf> 34240
<e89880> <e898bf> 34304
<e89980> <e899bf> 34368
<e89a80> <e89abf> 34432
<e89b80> <e89bbf> 34496
<e89c80> <e89cbf> 34560
<e89d80> <e89dbf> 34624
<e89e80> <e89ebf> 34688
<e89f80> <e89fbf> 34752
<e8a080> <e8a0bf> 34816
<e8a180> <e8a1bf> 34880
<e8a280> <e8a2bf> 34944
<e8a380> <e8a3bf> 35008
<e8a480> <e8a4bf> 35072
<e8a580> <e8a5bf> 35136
<e8a680> <e8a6bf> 35200
<e8a780> <e8a7bf> 35264
<e8a880> <e8a8bf> 35328
<e8a980> <e8a9bf> 35392
<e8aa80> <e8aabf> 35456
<e8ab80> <e8abbf> 35520
<e8ac80> <e8acbf> 35584
<e8ad80> <e8adbf> 35648
<e8ae80> <e8aebf> 35712
<e8af80> <e8afbf> 35776
<e8b080> <e8b0bf> 35840
<e8b180> <e8b1bf> 35904
<e8b280> <e8b2bf> 35968
<e8b380> <e8b3bf> 36032
<e8b480> <e8b4bf> 36096
<e8b580> <e8b5bf> 36160
<e8b680> <e8b6bf> 36224
<e8b780> <e8b7bf> 36288
<e8b880> <e8b8bf> 36352
<e8b980> <e8b9bf> 36416
<e8ba80> <e8babf> 36480
<e8bb80> <e8bbbf> 36544
<e8bc80> <e8bcbf> 36608
<e8bd80> <e8bdbf> 36672
<e8be80> <e8bebf> 36736
<e8bf80> <e8bfbf> 36800
<e98080> <e980bf> 36864
<e98180> <e981bf> 36928
<e98280> <e982bf> 36992
<e98380> <e983bf> 37056
<e98480> <e984bf> 37120
<e98580> <e985bf> 37184
<e98680> <e986bf> 37248
<e98780> <e987bf> 37312
<e98880> <e988bf> 37376
<e98980> <e989bf> 37440
<e98a80> <e98abf> 37504
<e98b80> <e98bbf> 37568
<e98c80> <e98cbf> 37632
<e98d80> <e98dbf> 37696
<e98e80> <e98ebf> 37760
<e98f80> <e98fbf> 37824
<e99080> <e990bf> 37888
<e99180> <e991bf> 37952
<e99280> <e992bf> 38016
<e99380> <e993bf> 38080
<e99480> <e994bf> 38144
<e99580> <e995bf> 38208
<e99680> <e996bf> 38272
<e99780> <e997bf> 38336
<e99880> <e998bf> 38400
endcidrange

100 begincidrange
<e99980> <e999bf> 38464
<e99a80> <e99abf> 38528
<e99b80> <e99bbf> 38592
<e99c80> <e99cbf> 38656
<e99d80> <e99dbf> 38720
<e99e80> <e99ebf> 38784
<e99f80> <e99fbf> 38848
<e9a080> <e9a0bf> 38912
<e9a180> <e9a1bf> 38976
<e9a280> <e9a2bf> 39040
<e9a380> <e9a3bf> 39104
<e9a480> <e9a4bf> 39168
<e9a580> <e9a5bf> 39232
<e9a680> <e9a6bf> 39296
<e9a780> <e9a7bf> 39360
<e9a880> <e9a8bf> 39424
<e9a980> <e9a9bf> 39488
<e9aa80> <e9aabf> 39552
<e9ab80> <e9abbf> 39616
<e9ac80> <e9acbf> 39680
<e9ad80> <e9adbf> 39744
<e9ae80> <e9aebf> 39808
<e9af80> <e9afbf> 39872
<e9b080> <e9b0bf> 39936
<e9b180> <e9b1bf> 40000
<e9b280> <e9b2bf> 40064
<e9b380> <e9b3bf> 40128
<e9b480> <e9b4bf> 40192
<e9b580> <e9b5bf> 40256
<e9b680> <e9b6bf> 40320
<e9b780> <e9b7bf> 40384
<e9b880> <e9b8bf> 40448
<e9b980> <e9b9bf> 40512
<e9ba80> <e9babf> 40576
<e9bb80> <e9bbbf> 40640
<e9bc80> <e9bcbf> 40704
<e9bd80> <e9bdbf> 40768
<e9be80> <e9bebf> 40832
<e9bf80> <e9bfbf> 40896
<ea8080> <ea80bf> 40960
<ea8180> <ea81bf> 41024
<ea8280> <ea82bf> 41088
<ea8380> <ea83bf> 41152
<ea8480> <ea84bf> 41216
<ea8580> <ea85bf> 41280
<ea8680> <ea86bf> 41344
<ea8780> <ea87bf> 41408
<ea8880> <ea88bf> 41472
<ea8980> <ea89bf> 41536
<ea8a80> <ea8abf> 41600
<ea8b80> <ea8bbf> 41664
<ea8c80> <ea8cbf> 41728
<ea8d80> <ea8dbf> 41792
<ea8e80> <ea8ebf> 41856
<ea8f80> <ea8fbf> 41920
<ea9080> <ea90bf> 41984
<ea9180> <ea91bf> 42048
<ea9280> <ea92bf> 42112
<ea9380> <ea93bf> 42176
<ea9480> <ea94bf> 42240
<ea9580> <ea95bf> 42304
<ea9680> <ea96bf> 42368
<ea9780> <ea97bf> 42432
<ea9880> <ea98bf> 42496
<ea9980> <ea99bf> 42560
<ea9a80> <ea9abf> 42624
<ea9b80> <ea9bbf> 42688
<ea9c80> <ea9cbf> 42752
<ea9d80> <ea9dbf> 42816
<ea9e80> <ea9ebf> 42880
<ea9f80> <ea9fbf> 42944
<eaa080> <eaa0bf> 43008
<eaa180> <eaa1bf> 43072
<eaa280> <eaa2bf> 43136
<eaa380> <eaa3bf> 43200
<eaa480> <eaa4bf> 43264
<eaa580> <eaa5bf> 43328
<eaa680> <eaa6bf> 43392
<eaa780> <eaa7bf> 43456
<eaa880> <eaa8bf> 43520
<eaa980> <eaa9bf> 43584
<eaaa80> <eaaabf> 43648
<eaab80> <eaabbf> 43712
<eaac80> <eaacbf> 43776
<eaad80> <eaadbf> 43840
<eaae80> <eaaebf> 43904
<eaaf80> <eaafbf> 43968
<eab080> <eab0bf> 44032
<eab180> <eab1bf> 44096
<eab280> <eab2bf> 44160
<eab380> <eab3bf> 44224
<eab480> <eab4bf> 44288
<eab580> <eab5bf> 44352
<eab680> <eab6bf> 44416
<eab780> <eab7bf> 44480
<eab880> <eab8bf> 44544
<eab980> <eab9bf> 44608
<eaba80> <eababf> 44672
<eabb80> <eabbbf> 44736
<eabc80> <eabcbf> 44800
endcidrange

100 begincidrange
<eabd80> <eabdbf> 44864
<eabe80> <eabebf> 44928
<eabf80> <eabfbf> 44992
<eb8080> <eb80bf> 45056
<eb8180> <eb81bf> 45120
<eb8280> <eb82bf> 45184
<eb8380> <eb83bf> 45248
<eb8480> <eb84bf> 45312
<eb8580> <eb85bf> 45376
<eb8680> <eb86bf> 45440
<eb8780> <eb87bf> 45504
<eb8880> <eb88bf> 45568
<eb8980> <eb89bf> 45632
<eb8a80> <eb8abf> 45696
<eb8b80> <eb8bbf> 45760
<eb8c80> <eb8cbf> 45824
<eb8d80> <eb8dbf> 45888
<eb8e80> <eb8ebf> 45952
<eb8f80> <eb8fbf> 46016
<eb9080> <eb90bf> 46080
<eb9180> <eb91bf> 46144
<eb9280> <eb92bf> 46208
<eb9380> <eb93bf> 46272
<eb9480> <eb94bf> 46336
<eb9580> <eb95bf> 46400
<eb9680> <eb96bf> 46464
<eb9780> <eb97bf> 46528
<eb9880> <eb98bf> 46592
<eb9980> <eb99bf> 46656
<eb9a80> <eb9abf> 46720
<eb9b80> <eb9bbf> 46784
<eb9c80> <eb9cbf> 46848
<eb9d80> <eb9dbf> 46912
<eb9e80> <eb9ebf> 46976
<eb9f80> <eb9fbf> 47040
<eba080> <eba0bf> 47104
<eba180> <eba1bf> 47168
<eba280> <eba2bf> 47232
<eba380> <eba3bf> 47296
<eba480> <eba4bf> 47360
<eba580> <eba5bf> 47424
<eba680> <eba6bf> 47488
<eba780> <eba7bf> 47552
<eba880> <eba8bf> 47616
<eba980> <eba9bf> 47680
<ebaa80> <ebaabf> 47744
<ebab80> <ebabbf> 47808
<ebac80> <ebacbf> 47872
<ebad80> <ebadbf> 47936
<ebae80> <ebaebf> 48000
<ebaf80> <ebafbf> 48064
<ebb080> <ebb0bf> 48128
<ebb180> <ebb1bf> 48192
<ebb280> <ebb2bf> 48256
<ebb380> <ebb3bf> 48320
<ebb480> <ebb4bf> 48384
<ebb580> <ebb5bf> 48448
<ebb680> <ebb6bf> 48512
<ebb780> <ebb7bf> 48576
<ebb880> <ebb8bf> 48640
<ebb980> <ebb9bf> 48704
<ebba80> <ebbabf> 48768
<ebbb80> <ebbbbf> 48832
<ebbc80> <ebbcbf> 48896
<ebbd80> <ebbdbf> 48960
<ebbe80> <ebbebf> 49024
<ebbf80> <ebbfbf> 49088
<ec8080> <ec80bf> 49152
<ec8180> <ec81bf> 49216
<ec8280> <ec82bf> 49280
<ec8380> <ec83bf> 49344
<ec8480> <ec84bf> 49408
<ec8580> <ec85bf> 49472
<ec8680> <ec86bf> 49536
<ec8780> <ec87bf> 49600
<ec8880> <ec88bf> 49664
<ec8980> <ec89bf> 49728
<ec8a80> <ec8abf> 49792
<ec8b80> <ec8bbf> 49856
<ec8c80> <ec8cbf> 49920
<ec8d80> <ec8dbf> 49984
<ec8e80> <ec8ebf> 50048
<ec8f80> <ec8fbf> 50112
<ec9080> <ec90bf> 50176
<ec9180> <ec91bf> 50240
<ec9280> <ec92bf> 50304
<ec9380> <ec93bf> 50368
<ec9480> <ec94bf> 50432
<ec9580> <ec95bf> 50496
<ec9680> <ec96bf> 50560
<ec9780> <ec97bf> 50624
<ec9880> <ec98bf> 50688
<ec9980> <ec99bf> 50752
<ec9a80> <ec9abf> 50816
<ec9b80> <ec9bbf> 50880
<ec9c80> <ec9cbf> 50944
<ec9d80> <ec9dbf> 51008
<ec9e80> <ec9ebf> 51072
<ec9f80> <ec9fbf> 51136
<eca080> <eca0bf> 51200
endcidrange

100 begincidrange
<eca180> <eca1bf> 51264
<eca280> <eca2bf> 51328
<eca380> <eca3bf> 51392
<eca480> <eca4bf> 51456
<eca580> <eca5bf> 51520
<eca680> <eca6bf> 51584
<eca780> <eca7bf> 51648
<eca880> <eca8bf> 51712
<eca980> <eca9bf> 51776
<ecaa80> <ecaabf> 51840
<ecab80> <ecabbf> 51904
<ecac80> <ecacbf> 51968
<ecad80> <ecadbf> 52032
<ecae80> <ecaebf> 52096
<ecaf80> <ecafbf> 52160
<ecb080> <ecb0bf> 52224
<ecb180> <ecb1bf> 52288
<ecb280> <ecb2bf> 52352
<ecb380> <ecb3bf> 52416
<ecb480> <ecb4bf> 52480
<ecb580> <ecb5bf> 52544
<ecb680> <ecb6bf> 52608
<ecb780> <ecb7bf> 52672
<ecb880> <ecb8bf> 52736
<ecb980> <ecb9bf> 52800
<ecba80> <ecbabf> 52864
<ecbb80> <ecbbbf> 52928
<ecbc80> <ecbcbf> 52992
<ecbd80> <ecbdbf> 53056
<ecbe80> <ecbebf> 53120
<ecbf80> <ecbfbf> 53184
<ed8080> <ed80bf> 53248
<ed8180> <ed81bf> 53312
<ed8280> <ed82bf> 53376
<ed8380> <ed83bf> 53440
<ed8480> <ed84bf> 53504
<ed8580> <ed85bf> 53568
<ed8680> <ed86bf> 53632
<ed8780> <ed87bf> 53696
<ed8880> <ed88bf> 53760
<ed8980> <ed89bf> 53824
<ed8a80> <ed8abf> 53888
<ed8b80> <ed8bbf> 53952
<ed8c80> <ed8cbf> 54016
<ed8d80> <ed8dbf> 54080
<ed8e80> <ed8ebf> 54144
<ed8f80> <ed8fbf> 54208
<ed9080> <ed90bf> 54272
<ed9180> <ed91bf> 54336
<ed9280> <ed92bf> 54400
<ed9380> <ed93bf> 54464
<ed9480> <ed94bf> 54528
<ed9580> <ed95bf> 54592
<ed9680> <ed96bf> 54656
<ed9780> <ed97bf> 54720
<ed9880> <ed98bf> 54784
<ed9980> <ed99bf> 54848
<ed9a80> <ed9abf> 54912
<ed9b80> <ed9bbf> 54976
<ed9c80> <ed9cbf> 55040
<ed9d80> <ed9dbf> 55104
<ed9e80> <ed9ebf> 55168
<ed9f80> <ed9fbf> 55232
<eda080> <eda0bf> 55296
<eda180> <eda1bf> 55360
<eda280> <eda2bf> 55424
<eda380> <eda3bf> 55488
<eda480> <eda4bf> 55552
<eda580> <eda5bf> 55616
<eda680> <eda6bf> 55680
<eda780> <eda7bf> 55744
<eda880> <eda8bf> 55808
<eda980> <eda9bf> 55872
<edaa80> <edaabf> 55936
<edab80> <edabbf> 56000
<edac80> <edacbf> 56064
<edad80> <edadbf> 56128
<edae80> <edaebf> 56192
<edaf80> <edafbf> 56256
<edb080> <edb0bf> 56320
<edb180> <edb1bf> 56384
<edb280> <edb2bf> 56448
<edb380> <edb3bf> 56512
<edb480> <edb4bf> 56576
<edb580> <edb5bf> 56640
<edb680> <edb6bf> 56704
<edb780> <edb7bf> 56768
<edb880> <edb8bf> 56832
<edb980> <edb9bf> 56896
<edba80> <edbabf> 56960
<edbb80> <edbbbf> 57024
<edbc80> <edbcbf> 57088
<edbd80> <edbdbf> 57152
<edbe80> <edbebf> 57216
<edbf80> <edbfbf> 57280
<ee8080> <ee80bf> 57344
<ee8180> <ee81bf> 57408
<ee8280> <ee82bf> 57472
<ee8380> <ee83bf> 57536
<ee8480> <ee84bf> 57600
endcidrange

100 begincidrange
<ee8580> <ee85bf> 57664
<ee8680> <ee86bf> 57728
<ee8780> <ee87bf> 57792
<ee8880> <ee88bf> 57856
<ee8980> <ee89bf> 57920
<ee8a80> <ee8abf> 57984
<ee8b80> <ee8bbf> 58048
<ee8c80> <ee8cbf> 58112
<ee8d80> <ee8dbf> 58176
<ee8e80> <ee8ebf> 58240
<ee8f80> <ee8fbf> 58304
<ee9080> <ee90bf> 58368
<ee9180> <ee91bf> 58432
<ee9280> <ee92bf> 58496
<ee9380> <ee93bf> 58560
<ee9480> <ee94bf> 58624
<ee9580> <ee95bf> 58688
<ee9680> <ee96bf> 58752
<ee9780> <ee97bf> 58816
<ee9880> <ee98bf> 58880
<ee9980> <ee99bf> 58944
<ee9a80> <ee9abf> 59008
<ee9b80> <ee9bbf> 59072
<ee9c80> <ee9cbf> 59136
<ee9d80> <ee9dbf> 59200
<ee9e80> <ee9ebf> 59264
<ee9f80> <ee9fbf> 59328
<eea080> <eea0bf> 59392
<eea180> <eea1bf> 59456
<eea280> <eea2bf> 59520
<eea380> <eea3bf> 59584
<eea480> <eea4bf> 59648
<eea580> <eea5bf> 59712
<eea680> <eea6bf> 59776
<eea780> <eea7bf> 59840
<eea880> <eea8bf> 59904
<eea980> <eea9bf> 59968
<eeaa80> <eeaabf> 60032
<eeab80> <eeabbf> 60096
<eeac80> <eeacbf> 60160
<eead80> <eeadbf> 60224
<eeae80> <eeaebf> 60288
<eeaf80> <eeafbf> 60352
<eeb080> <eeb0bf> 60416
<eeb180> <eeb1bf> 60480
<eeb280> <eeb2bf> 60544
<eeb380> <eeb3bf> 60608
<eeb480> <eeb4bf> 60672
<eeb580> <eeb5bf> 60736
<eeb680> <eeb6bf> 60800
<eeb780> <eeb7bf> 60864
<eeb880> <eeb8bf> 60928
<eeb980> <eeb9bf> 60992
<eeba80> <eebabf> 61056
<eebb80> <eebbbf> 61120
<eebc80> <eebcbf> 61184
<eebd80> <eebdbf> 61248
<eebe80> <eebebf> 61312
<eebf80> <eebfbf> 61376
<ef8080> <ef80bf> 61440
<ef8180> <ef81bf> 61504
<ef8280> <ef82bf> 61568
<ef8380> <ef83bf> 61632
<ef8480> <ef84bf> 61696
<ef8580> <ef85bf> 61760
<ef8680> <ef86bf> 61824
<ef8780> <ef87bf> 61888
<ef8880> <ef88bf> 61952
<ef8980> <ef89bf> 62016
<ef8a80> <ef8abf> 62080
<ef8b80> <ef8bbf> 62144
<ef8c80> <ef8cbf> 62208
<ef8d80> <ef8dbf> 62272
<ef8e80> <ef8ebf> 62336
<ef8f80> <ef8fbf> 62400
<ef9080> <ef90bf> 62464
<ef9180> <ef91bf> 62528
<ef9280> <ef92bf> 62592
<ef9380> <ef93bf> 62656
<ef9480> <ef94bf> 62720
<ef9580> <ef95bf> 62784
<ef9680> <ef96bf> 62848
<ef9780> <ef97bf> 62912
<ef9880> <ef98bf> 62976
<ef9980> <ef99bf> 63040
<ef9a80> <ef9abf> 63104
<ef9b80> <ef9bbf> 63168
<ef9c80> <ef9cbf> 63232
<ef9d80> <ef9dbf> 63296
<ef9e80> <ef9ebf> 63360
<ef9f80> <ef9fbf> 63424
<efa080> <efa0bf> 63488
<efa180> <efa1bf> 63552
<efa280> <efa2bf> 63616
<efa380> <efa3bf> 63680
<efa480> <efa4bf> 63744
<efa580> <efa5bf> 63808
<efa680> <efa6bf> 63872
<efa780> <efa7bf> 63936
<efa880> <efa8bf> 64000
endcidrange

23 begincidrange
<efa980> <efa9bf> 64064
<efaa80> <efaabf> 64128
<efab80> <efabbf> 64192
<efac80> <efacbf> 64256
<efad80> <efadbf> 64320
<efae80> <efaebf> 64384
<efaf80> <efafbf> 64448
<efb080> <efb0bf> 64512
<efb180> <efb1bf> 64576
<efb280> <efb2bf> 64640
<efb380> <efb3bf> 64704
<efb480> <efb4bf> 64768
<efb580> <efb5bf> 64832
<efb680> <efb6bf> 64896
<efb780> <efb7bf> 64960
<efb880> <efb8bf> 65024
<efb980> <efb9bf> 65088
<efba80> <efbabf> 65152
<efbb80> <efbbbf> 65216
<efbc80> <efbcbf> 65280
<efbd80> <efbdbf> 65344
<efbe80> <efbebf> 65408
<efbf80> <efbfbf> 65472
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end

%%EndResource
%%EOF

_ /usr/share/ghostscript/9.05/Resource/Init/cidfmap

下記をcidfmapに追加する。

/SME				<< /FileType /TrueType /Path (sazanami-mincho-eudc.ttf) /CSI [(Artifex) (Unicode) 0] >> ;

_ sample postscript

上記の設定で、外字(PUA)を含む、UTF-8の0x00〜0x7f, 0xc280〜0xdfbf, 0xe0a080〜0xefbfbf(Unicodeで言うところのU+0000からU+FFFF)の範囲のフォントを/SME-AllRange-UTF8-Hで指定できる。

%!PS-Adobe-3.0
100 100 moveto

/SME-AllRange-UTF8-H findfont
20 scalefont
setfont

(外字を含んだUTF-8文字列も) show

(そうでないUTF-8文字列も取扱いOK) show

showpage

_ その他 Tips

  • urxvtビルド時の --enable-unicode3 オプションは上記で作成したようなPUAを含んだフォントを -fn で指定すれば、PUAの表示を可能にする。ただし今のところ半角文字が全角文字と同じ大きさで表示されてしまって、実用にはならない...
  • urxvtビルド時の --enable-iso14755 オプションは[Ctrl]+[Shift]を押しながらUnicode+[Enter]でPUAを含む文字を入力できる。
  • scim は[Ctrl]+[Shift]で入力モードを[RAW CODE]に変えてUnicodeでPUAを含む文字を入力できる。
  • mlterm -Vなら表示はOK。ただし、vimもemacs -nwもPUA部分でカーソル移動がずれる。
  • 今のところコンソールでPUAを含んだテキストを編集する場合は、mlterm -V -A + emacs -nw が多少カーソルの移動に難がある(PUA部分は2文字文として扱われる)が、ベストっぽい。もちろん~/.mlterm/font, ~/.mlterm/aafont 等でPUAを含んだフォントを指定する事。また、mltermはコンフィグ時に --enable-anti-alias オプションを指定してビルドするとアンチエイリアスが効いて具合が良い。
  • emacs-*-with-x11 なら表示も編集も完璧 :D
    • M-x describe-char でカーソル位置のUnicodeを表示する。
    • M-x ucs-insert でカーソル位置に指定したUnicodeの文字を挿入する。もちろんPUAも可能
  • FontForge用縦書きパッチ http://www.akenotsuki.com/eyeben/fonts/kanren.html#ffpatch
  • sazanami-mincho.ttfとEudc.TTEを合成するスクリプト中のScaleToEmの値はメインのsazanami-mincho.ttfに合わせる。そうしないと縦書きの際の文字間隔がおかしくなる。
  • 縦書きのためには、~/.FontForge/prefs中のCoverageFormatsAllowedの値を1にした方が良いという噂も...