在AutoCAD的早期版本中,仅能通过定义形文件的方式来使用字体。现在AutoCAD可调用Windows系统字库,С諸rueType字体以及PostScript字体,但AutoCAD仍提供了许多使用形定义的字体文件供用户使用,这些字体文件保存在AutoCAD主文件夹的“FONT”子文件夹中。如果用户仍不满足于这些字体,而希望使用具有独特风格的字体,那么我们可以用与创建形文件类似的方法来创建新的字体文件。 33.2.2字体文件的定义 1.文字字体说明 如果一个形定义文件被用作字体文件,则文件中的第一个条目必须用于描述字体本身,即文字字体的说明。文字字体说明由头部说明和形状说明两部分组成,用以提供字体本身的信息。具体格式如下: *0,Defbytes,fontname Above,Below,Modes,0 其中: (1)Defbytes:形状说明的数据字节数,包括终止符0。 (2)fontname:字体名称。 (3)Above:高位距离,定义大写字母在基线上方的矢量长度。 (4)Below:低位距离,定义小写字母在基线下方的距离。 (5)Nodes:定义字体方向,取0表示文字为水平方向,取2表示文字为(水平或垂直)两个方向。 (6)0:终止标识符。 2.字符形状定义 字符形状定义与形的定义几乎完全相同,具体差别在于: (1)字符形状编号为该字母的ASCII码而不能是任意的编号,因为AutoCAD是按字符的ASCII在绘制字符的,而不是它的名称。 (2)虽然AutoCAD并不根据字符形状的名称来绘制字符,但仍可在编辑字体文件时应用字符形状的名称。一般用小写字母来指定形状名称,小写的形状名称是不会保存在内存中的。 (3)ASCII码中1~31为控制字符,其中只有10用于AutoCAD字体中,用来定义换行(lf)。即将绘图位置下移一行,而不绘制图形。例如: *10,5,lf 2,8,(0,-10),0 33.2.3字体文件的创建与使用 同形定义文件一样,我们可以使用文本编辑器来创建字体定义文件。 实例3创建“USERFONT”字体 (1)使用Windows附件中的“记事本”程序创建一个新的文本文件。 (2)在该文件中添加如下内容,如图33-6所示。 ;userfont.shp-userdefinedfonts *0,4,userfont 21,7,2,0 *69,14,lte 2,010,1,044,020,2,02A,1,010,2,02b,1,020,0 *72,13,lth 2,010,1,044,2,02C,1,020,2,024,1,04C,0 *76,9,ltl 2,010,1,044,2,04C,1,020,0 *79,8,lto 2,010,1,020,044,028,04C,0
将该文件保存在AutoCAD主文件夹的“FONTS”子文件夹中,并命名为“userfont.shp”。 (3)在AutoCAD中对该文件进行编译,并载入到当前的字体样式中。 (4)在AutoCAD中使用“Text”或“MText”命令绘制文字“HELLO”,结果如图33-7所示。
33.2.4大字体说明 某些语言(如汉语)的字体包括上千种非ASCII字符。为绘制包含这些文字的图形,AutoCAD支持称为大字体文件的特殊格式的形定义文件。由于大字体文件包含成百上千种字符的字体,因此其处理方式较为复杂。除了使用更加复杂的文件搜索技术之外,AutoCAD需要某种方法来用双字节代码表示字符和单字节代码。 大字体形定义文件的第一行必须为: *BIGFONTnchars,nranges,b1,e1,b2,e2,... 其中各项含义如下: (1)nchars:指出此集合中近似的字符定义数量。如果此数值过大,且误差超过百分之十,则速度或文件大小就会受到影响。 (2)nranges:指出有多少个连续区间中的数字用作换码代码;换码代码是双字节代码开始区域的特殊字符代码。 (3)b1,e1,b2,e2,…:定义了每个区间的开始和结束代码。 在*BIGFONT行后是字体定义,大字体定义与普通AutoCAD文字字体相似,区别在于其字符代码(形编号)最大可以为65535之外。 在一些绘图规范中,许多特殊符号可以出现在文字字符串中。AutoCAD标准文字字体可扩展包含特殊字符。然而,扩展后的标准文字字体有许多限制,如: (1)每个字体文件的形数目为255。 (2)标准字符集使用约一半可用的形编号。只有代码1到9,11到31,130到255可用。 (3)多文字字体需要在每种字体中包含符号定义的副本。 (4)特殊符号需要用户输入nnn,此处的nnn是符号的形编号。 而使用大字体机制可以避免这些问题。用户可以选择一个或多个不常使用的字符作为换码代码,例如使用“|R”来调用希腊字母“Γ”。 当需要在AutoCAD系统中使用大字体时,则要在“TextStyle(文字样式)”对话框中请选择“UseBigFont(使用大字体)”选项,并在“BigFont(大字体)”下拉列表中选择所需的大字体文件,如图33-8所示。
33.2.5Unicode字体说明 标准的AutoCAD字体与主机操作系统使用的字符映射一致。这是因为字符直接按它们从键盘获取的格式保存在数据库中。用于生成字体的是相同的字符代码。当使用存在多种字符编码标准的重音字符(八位字符)时,这就成为一个严重问题。由于字符映射的限制,AutoCAD为其使用的多种代码页提供了一组Unicode字体。这些字体本质上一样,根据定义的代码页的不同,而拥有位于不同位置的字符。如果所使用的字体编码与图形中的文字不匹配,可能绘制出错误的字符。 使用Unicode字体时,文字字符串在被绘制前都转换为Unicode,因此不必再为其他语言或平台提供附加字体。由于Unicode提供了大字符集,所以一种Unicode字体就能支持所有语言和平台。此功能对用户是透明的,因为如果必要(由代码页的不同决定),图形在加载时被转换为AutoCAD的系统代码页。图形总是以AutoCAD系统代码页的形式保存。 但是需要说明的是,Unicode不能为所有亚洲语言提供完整的支持,因此大字体仍然在某些或全部亚洲版本中使用。 Unicode形定义文件在格式和语法上与普通AutoCAD形定义文件一样,主要的区别为:1.在字体开始的语法中不同,如下所示。 *UNIFONT,6,font-name above,below,modes,encoding,type,0 其中font-name、above、below和modes参数与常规字体中的参数一样。余下的两个参数定义如下: (1)encoding:字体编码。使用下列整数值:
|
(2)type:字体内嵌信息。指定字体是否经过授权。授权字体不能修改和交换。(按位编码的值可以相加。) |
2.对代码7子型引用的处理不同。如果形描述包含一个代码7子形引用,代码7后的数据将被解释为双字节值。这将影响形描述标题中的数据字节(defbytes)总数。例如,下列形描述是在romans.shp文件中包含的: *00080,4,keuroRef 7,020AC,0 标题中的第二个字段表示形描述中的字节总数。如果用户不将其和Unicode字体描述一起使用,可以使用3字节而不使用4字节,但这将导致在编译SHP文件时发生错误。尽管用户引用的形编号不在双字节范围内(小于255),但编译器仍对该值使用双字节,因此用户必须在标题中计算。 3.形的编号不同。AutoCAD提供的Unifont形定义使用十六进制形编号,而不使用十进制编号。尽管这并不是必须的,但它使得用\U 控制字符值交叉引用形编号更加方便。
小结 本章主要介绍形的概念和定义,并通过实例来讲述了形的创建和使用。 利用形技术,用户还可以定义文字字体,本章通过一个简单的实例说明了如何定义和使用文字字体。此外,还简要介绍了大字体和Unicode字体。 |