トップ «前の日記(2013年06月23日) 最新 次の日記(2013年07月10日)» 編集

Masa's blog

検索キーワード:

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にした方が良いという噂も...