koalabear 发表于 2005-4-16 14:11:00

请教-字体定义问题

从网上找了款字体,恢复成shp文件有些看不懂,请哪位指点一下:


*0,4,Simplex roman                       (C) Copyright 1987-91 by Autodesk, Inc.<BR>28,10,0,0<BR>*0A,15        ;<BR>02,08,(0,3),08,(0,-34),0E,08,(30,34),08,(0,-3),0<BR>*020,15        ;<BR>02,08,(0,3),08,(21,0),0E,08,(-21,-30),08,(0,-3),0


上面是字体定义的开头部分,我认为只是不断的移动,没有任何的绘制命令,请问能否删除,上面的到底起什么作用。


顺便问一下:定义一个字形后,比如我定义了一个数字1,如何在cad里面键入1的时候就是我所定义的这个1。假若我定义两个不同大小的1,cad又该如何识别?


谢谢。

xqyhome 发表于 2005-4-16 15:10:00

*0,4,Simplex roman                       (C) Copyright 1987-91 by Autodesk, Inc.;字体必须包括的特殊形编号 0 <BR><BR>28,10,0,0 ;定义字节行 <BR><BR>*0A,15        ; ;标题行 <BR><BR>02,08,(0,3),08,(0,-34),0E,08,(30,34),08,(0,-3),0<BR>*020,15        ;<BR>02,08,(0,3),08,(21,0),0E,08,(-21,-30),08,(0,-3),0


上面是字体定义的开头部分,我认为只是不断的移动,没有任何的绘制命令,请问能否删除,上面的到底起什么作用。


顺便问一下:定义一个字形后,比如我定义了一个数字1,如何在cad里面键入1的时候就是我所定义的这个1。假若我定义两个不同大小的1,cad又该如何识别?


        形定义文件的每一行最多可包含 128 个字符,超过此长度的行不能编译。AutoCAD 忽略空行和分号右边的文字。利用分号可以在形定义文件中包含注释。每个形说明都有一个标题行,以及一行或多行定义字节。这些定义字节之间用逗号分隔,最后以 0 结束。格式如下:*编号, 数据字节 , 名称 形定义字节1, 形定义字节2, 形定义字节3,...,0 下面为形各个字段的说明: <BR>                                “编号”段 <BR>                                “编号”段在形定义文件中对应唯一的一个形,“编号”段的数字必须在 1 到 258 之间,带前缀星号 <BR>                                (*)。如果定义的是字体文件,则“编号”段的数字编号要与定义的每个字符的 ASCII 码对应。 <BR>                                “数据字节” 段 <BR>                                用于描述形使用的数据字节数目,包括结尾的“0”。每个形最多可有 2,000 个数据字节。 <BR>                                “名称” 段 <BR>                                形的名称。形名称必须大写,以便于区分。包含小写字符的名称被忽略,并且通常用作字体形定义的标签。 <BR>                                “形定义字节” 段 <BR>                                每个定义字节都是一个代码,或者定义矢量长度和方向,或者是特殊代码的对应值之一。在形定义文件中,定义字节可以用十进制或十六进制表示。如果形定义字节的第一个字符为 0(零),则后面的两个字符解释为十六进制值。定义文件定义“ASCII字体”时,第一个形说明必须为特殊的形编号 0,以提供字体本身的信息。其格式如下: <BR>                                *0,4,font-name <BR>                                above,below,modes,0 <BR>                                其中,above 指定大写字母从基线往上扩展的矢量长度,below 指出小写字母从基线下降的距离。这些值定义了基本字符尺寸,用作 TEXT 命令中指定高度的比例因子。 <BR>                                modes 字节对水平字体应该为 0,对双向(水平或垂直)字体为 2。 <BR>                                AutoCAD 提供的标准字体包括一些 AutoCAD 标注功能所需的其他字符。例如以下: <BR>                                %%d 度符号 ( °) <BR>                                %%p 正/负公差符号 (±) <BR>                                %%c 圆直径标注符号 (&amp;Oslash;) <BR>                                %%o 打开或关闭上划线模式。 <BR>                                %%u 打开或关闭下划线模式。 <BR>                                %%% 绘制一个百分号。 <BR>                                请注意:如果要定义“大字体”时,大字体形定义文件的第一行必须以“*BIGFONT”开始。 <BR>

zara 发表于 2005-4-17 08:58:00

楼主贴出来的两个字符定义, 一个是换行符 (0a), 一个是空格字符 (020), 这两个字符都是没有实际笔画的, 当然就只是把笔移来移去的. 你看看其他的字符定义, 比如 '1' (031). 在 '落笔' 命令 01 之后的移笔动作就是绘制笔画动作的,直到 '抬笔' 命令 02 为止.


在一个字体文件里, 是不可以定义两个相同编码字符的. 如果确实需要两个不同大小的 '1' 的话, 一个是使用正常的 '1' 的编码定义, 一个是使用其他没有被使用的编码, 比如可以是 0b1, 这样在使用 0b1 定义时, 输入的字符应该是 %%177 (177=0b1)

koalabear 发表于 2005-4-18 10:01:00

谢谢两位的回答。仔细学习一下先。借问一下zara,0a是换行,020是空格,031是代表数字1,请问这些在那可以查到,为什么1用031表示是不是1的ASCII吗?用032不行吗?

zara 发表于 2005-4-18 10:45:00

这个是 ascii 的规定, 一般的程序书上都是有的吧. 020/031 这样的值在 .shp 型定义文件中, 表明其为十六进制值, 否则为十进制的.
页: [1]
查看完整版本: 请教-字体定义问题