如何在后记中创建类型 3 字形
how to create type 3 glyphs in postscript
%%LanguageLevel: 3
8 dict begin
/FontName /T3_414 def
/FontType 3 def
/FontBBox [ 0 0 1 1 ] def
/FontMatrix [0.011368 0 0 0.011368 0 0 ] def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
Encoding 97 /g7516 put
/BuildGlyph
{ exch /CharProcs get exch % Get CharProcs dictionary
2 copy known not % See if charname is known
{ pop /.notdef }
if
get exec % Execute BuildGlyph procedure
} bind def
/BuildChar % LanguageLevel 1 compatibility
{ 1 index /Encoding get exch get
1 index /BuildGlyph get exec
} bind def
/CharProcs 255 dict def
CharProcs begin
/.notdef {} bind def
/g7516{
75 0 3 62 71 7 setcachedevice
gsave
[
0.01 0 0 0.01 0 0 ] concat
gsave
[6800 0 0 6900 300 700 ]concat
<<
/ImageType 1
/Width 68
/Height 69
/ImageMatrix [ 68 0 0 -69 0 69]
/BitsPerComponent 1
/Decode [1 0]
/DataSource <78 9c 5d d1 3b 4e c3 40 10 06 e0 59 1c b1 ae 70
0a 4a e4 e4 06 70 80 08 ef 31 68 39 02 9d 23 81
6c 23 24 52 72 20 9a 1c 83 22 c2 a0 1c 80 96 02
21 47 29 68 50 ec 54 06 39 4a fe d9 9d 18 0b 57
9f d6 b3 b3 f3 50 d4 f9 bc cd 1e 33 23 f8 ee ff
c7 c7 f0 0f b9 b1 c1 8a d4 27 9f ea 27 e3 e2 20
5d f9 ba b6 81 9b 9e d7 58 6c 0f d4 b3 d1 e3 d4
dd 6f 11 5c 59 a8 56 40 45 7e 2d 38 59 0a ce 5f
19 83 82 92 8c 28 b1 91 59 4a 51 ce 78 31 88 0b
17 9c 84 3f 17 da c5 68 2e b8 be eb e0 f0 17 88
27 36 3d 51 ed 23 fd 65 8a 24 25 9a 88 b2 24 77
91 45 54 a8 95 b4 ef 1a 75 ed 2b 5b 04 66 e5 fe
a2 69 6a 7a d2 59 ad f6 ad 71 2e ae 9a ca 63 8c
01 35 52 19 ae 5d 65 e5 29 8e 6f 6e a5 93 f8 5e
3a a9 e3 07 7b 4b ad 38 89 15 bf ca f0 66 17 5f
16 7a fc b8 b4 08 2a d4 ce 08 17 78 97 31 9a a3
12 46 3c d1 ef c3 b2 af f8 2a ca c5 11 f2 60 41
80 2b 1a d0 3f 7c 08 1c ad 05 98 37 d6 04 9c bd
11 a5 9c 91 b7 ac dc fb 76 04 32 8b a0 ac 1c bc
46 40 db 42 a6 13 4d 05 83 a9 69 57 2a db e1 a1
ef 20 17 c7 86 b3>
<<
/Predictor 15
/Columns 68>>
/FlateDecode filter
>>
imagemask
grestore
grestore
} bind def
end
currentdict end
/Examplefont exch definefont pop
/Examplefont findfont 12 scalefont setfont
36 52 moveto
(ababab) show
我正在研究 postscript 中的 type 3 字体。我正在尝试调试此文件,但出现错误。 ioerror 图像掩码。
pdf 文件中的输入字形如下所示。我已将二进制数据转换为 ascii 十六进制,因为我发现无法按原样使用它。
stream
75 0 3 -62 71 7 d1
0.01 0 0 0.01 0 0 cm
q 6800 0 0 -6900 300 700 cm
BI
/IM true
/W 68
/H 69
/BPC 1
/D[1
0]
/F/Fl
/DP<</Predictor 15
/Columns 68>>
ID xœ]Ñ;NÃ@àY±®p
Jääp€ï1h9#l#$Rr šƒ" €–!G)hPìT9JþÙWŸÖ³³óPÔù¼Í3#øîÿÇÇð¹±ÁŠÔ'Ÿê'ãâ ]ùº¶›ž×XlÔ³ÑãÔÝo\Y¨V@E~-8Y
Î_ƒ‚’Œ(±‘YJQÎx1ˆœ„?ÚÅh.¸¾ëàðˆ'6=Qí#ýeŠ$%šˆ²$w‘ET¨•´ïuí+[fåþ¢ijzÒYöq.®šÊcŒ5R®]eå)Žon¥“ø^:©ã{K8‰¿Êðf_zü¸´*ÔÎx—1š£F<Ñïò¯ø*ÊÅò`A€+Ð?|˜7Öœ½¥œ‘·¬Üûv2‹ ¬¼F@ÛB¦Mƒ©iW*Ûá¡ï dž³
EI Q
endstream
endobj
下面是用于进一步演示的后记和 pdf 文件链接。
https://ufile.io/zmmjv
https://ufile.io/2r2eb
您的十六进制字符串中的数据与原始 PDF 文件中的二进制数据不同。这会导致 Flate 解码过滤器出错。如果我更正它,那么就没有错误。
基本上,您损坏了数据,因此出现错误是完全可以预料的。
请注意,您没有以 %!但您插入了 %%LanguageLevel: 3 评论。我不确定你认为那在做什么,但它毫无意义。您的程序不包含显示页面,因此它也不会做任何有用的事情。
%%LanguageLevel: 3
8 dict begin
/FontName /T3_414 def
/FontType 3 def
/FontBBox [ 0 0 1 1 ] def
/FontMatrix [0.011368 0 0 0.011368 0 0 ] def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
Encoding 97 /g7516 put
/BuildGlyph
{ exch /CharProcs get exch % Get CharProcs dictionary
2 copy known not % See if charname is known
{ pop /.notdef }
if
get exec % Execute BuildGlyph procedure
} bind def
/BuildChar % LanguageLevel 1 compatibility
{ 1 index /Encoding get exch get
1 index /BuildGlyph get exec
} bind def
/CharProcs 255 dict def
CharProcs begin
/.notdef {} bind def
/g7516{
75 0 3 62 71 7 setcachedevice
gsave
[
0.01 0 0 0.01 0 0 ] concat
gsave
[6800 0 0 6900 300 700 ]concat
<<
/ImageType 1
/Width 68
/Height 69
/ImageMatrix [ 68 0 0 -69 0 69]
/BitsPerComponent 1
/Decode [1 0]
/DataSource <78 9c 5d d1 3b 4e c3 40 10 06 e0 59 1c b1 ae 70
0a 4a e4 e4 06 70 80 08 ef 31 68 39 02 9d 23 81
6c 23 24 52 72 20 9a 1c 83 22 c2 a0 1c 80 96 02
21 47 29 68 50 ec 54 06 39 4a fe d9 9d 18 0b 57
9f d6 b3 b3 f3 50 d4 f9 bc cd 1e 33 23 f8 ee ff
c7 c7 f0 0f b9 b1 c1 8a d4 27 9f ea 27 e3 e2 20
5d f9 ba b6 81 9b 9e d7 58 6c 0f d4 b3 d1 e3 d4
dd 6f 11 5c 59 a8 56 40 45 7e 2d 38 59 0a ce 5f
19 83 82 92 8c 28 b1 91 59 4a 51 ce 78 31 88 0b
17 9c 84 3f 17 da c5 68 2e b8 be eb e0 f0 17 88
27 36 3d 51 ed 23 fd 65 8a 24 25 9a 88 b2 24 77
91 45 54 a8 95 b4 ef 1a 75 ed 2b 5b 04 66 e5 fe
a2 69 6a 7a d2 59 ad f6 ad 71 2e ae 9a ca 63 8c
01 35 52 19 ae 5d 65 e5 29 8e 6f 6e a5 93 f8 5e
3a a9 e3 07 7b 4b ad 38 89 15 bf ca f0 66 17 5f
16 7a fc b8 b4 08 2a d4 ce 08 17 78 97 31 9a a3
12 46 3c d1 ef c3 b2 af f8 2a ca c5 11 f2 60 41
80 2b 1a d0 3f 7c 08 1c ad 05 98 37 d6 04 9c bd
11 a5 9c 91 b7 ac dc fb 76 04 32 8b a0 ac 1c bc
46 40 db 42 a6 13 4d 05 83 a9 69 57 2a db e1 a1
ef 20 17 c7 86 b3>
<<
/Predictor 15
/Columns 68>>
/FlateDecode filter
>>
imagemask
grestore
grestore
} bind def
end
currentdict end
/Examplefont exch definefont pop
/Examplefont findfont 12 scalefont setfont
36 52 moveto
(ababab) show
我正在研究 postscript 中的 type 3 字体。我正在尝试调试此文件,但出现错误。 ioerror 图像掩码。 pdf 文件中的输入字形如下所示。我已将二进制数据转换为 ascii 十六进制,因为我发现无法按原样使用它。
stream
75 0 3 -62 71 7 d1
0.01 0 0 0.01 0 0 cm
q 6800 0 0 -6900 300 700 cm
BI
/IM true
/W 68
/H 69
/BPC 1
/D[1
0]
/F/Fl
/DP<</Predictor 15
/Columns 68>>
ID xœ]Ñ;NÃ@àY±®p
Jääp€ï1h9#l#$Rr šƒ" €–!G)hPìT9JþÙWŸÖ³³óPÔù¼Í3#øîÿÇÇð¹±ÁŠÔ'Ÿê'ãâ ]ùº¶›ž×XlÔ³ÑãÔÝo\Y¨V@E~-8Y
Î_ƒ‚’Œ(±‘YJQÎx1ˆœ„?ÚÅh.¸¾ëàðˆ'6=Qí#ýeŠ$%šˆ²$w‘ET¨•´ïuí+[fåþ¢ijzÒYöq.®šÊcŒ5R®]eå)Žon¥“ø^:©ã{K8‰¿Êðf_zü¸´*ÔÎx—1š£F<Ñïò¯ø*ÊÅò`A€+Ð?|˜7Öœ½¥œ‘·¬Üûv2‹ ¬¼F@ÛB¦Mƒ©iW*Ûá¡ï dž³
EI Q
endstream
endobj
下面是用于进一步演示的后记和 pdf 文件链接。 https://ufile.io/zmmjv https://ufile.io/2r2eb
您的十六进制字符串中的数据与原始 PDF 文件中的二进制数据不同。这会导致 Flate 解码过滤器出错。如果我更正它,那么就没有错误。
基本上,您损坏了数据,因此出现错误是完全可以预料的。
请注意,您没有以 %!但您插入了 %%LanguageLevel: 3 评论。我不确定你认为那在做什么,但它毫无意义。您的程序不包含显示页面,因此它也不会做任何有用的事情。