您的位置:网站首页 > CAD新闻

关于AutoCAD汉字与数字字母的协调的探讨

时间:2009-09-29 21:52:18 来源:
 使 用AutoCAD 的 用 户 都 有 这 样 的 感 受: 所 使 用 的 仿 宋 体 汉 字 与 小 字 体 的 数 字 字 母 写 在 一 起 时 大 小 不 协 调, 数 字 字 母 显 得 比 汉 字 大, 汉 字 中 的 一 些 符 号 位 置 偏 低, 影 响 美 观, 因 而 希 望 通 过 修 改 汉 字 形 文 件 来 改 变 这 种 状 况。 但 修 改 汉 字 形 文 件, 需 要ASCII 码 的 源 形 文 件(.shp), 通 常 我 们 只 有 编 译 后 的 二 进 制 汉 字 形 文 件(.shx), 没 有 汉 字 的 源 形 文 件。 汉 字 形 文 件 是 大 字 体 形 文 件, 笔 者 经 过 探 索, 弄 清 了 编 译 后 的 大 字 体 形 文 件 的 结 构 以 及 几 个 在 参 考 资 料 上 不 见 公 布 的 形 定 义 特 殊 码 含 义, 据 此 编 制 了 将 二 进 制 大 字 体 形 文 件 转 换 为 源 形 文 件 的 程 序, 并 且 对 得 到 的 源 形 文 件 进 行 修 改, 编 译 得 到 了 令 人 满 意 的 二 进 制 仿 宋 体 形 文 件。 下 面 就 是 具 体 的 实 现 步 骤。

  一、 二 进 制 大 字 体 形 文 件 的 结 构

  ---- 二 进 制 大 字 体 形 文 件 由3 部 分 组 成: 文 件 头、 索 引 部 分 和 形 定 义 部 分。

  ---- 1. 文 件 头

  ---- 文 件 头 包 括 大 字 体 版 本、 索 引 项 数、 换 码 范 围 个 数、 始 码1、 终 码1、 始 码2、 终 码2 等 等, 例:

  ----“AutoCAD-86 bigfont 1.0” 0D 0A 1A 08 00

  ------------------大字体版本

  ----CD 2B----03 00 ----A1 00----A3 00 ----A6 00----A6 00

  ---索引项数---换码数-----始码1----终码1------始码2----终码2

  ---- 2. 索 引 部 分

  ---- 每 个 索 引 项8 个 字 节, 包 括 编 码、 形 定 义 字 节 数 及 形 定 义 在 形 文 件 中 的 偏 移 位 置, 例:

  ---- 00 00 ----0E 00---- 93 5E 01 00

  ---- 编码-------长度---------偏 移

  ---- 3. 形 定 义 部 分

  ---- 编 码 为0 的 形 定 义 格 式 比 较 特 殊, 为 字 体 名、0、 字 高、 向 下、 方 式、0, 例:

  ---- “HZ 1/6/92”---- 00----7F---- 00---- 02----00

  -------字体名---------------字高----向下----方式

  ---- 其 他 编 码 的 形 定 义 以1 个 字 节00 或2 个 字 节30 00 开 头, 其 后 为 有 效 形 定 义 字 节。

  二、 大 字 体 源 形 文 件 的 格 式

  ---- *BIGFONT 字 符 数 目, 换 码 范 围 个 数, 始 码1, 终 码1, … …

  ---- *0,4, 字 体 名

  ---- 字 高, 向 下, 方 式,0

  ---- * 编 码1, 定 义 字 节 数, 形 名 称

  ---- 字 节1, 字 节2, …,0

  ---- … …

  ---- 字 节 可 以 采 用 十 六 进 制 表 示, 高4 位 表 示 矢 量 长 度( 从1 至F, 即 最 长 为15), 低4 位 表 示 矢 量 方 向( 见 图1), 并 且 必 须 前 导 一 个0 作 为 十 六 进 制 表 示 的 标 记。 字 节 也 可 以 采 用 十 进 制 表 示, 此 时 不 需 前 导 任 何0, 但 可 带 负 号, 它 们 通 常 用 于 表 示 特 殊 码、 位 移 量 或 比 例 因 子。

  ---- 下 面 给 出 特 殊 码 及 它 们 的 含 义:

  ---- 0 形 定 义 结 束

  ---- 1 落 笔#p#分页标题#e#

  ---- 2 抬 笔

  ---- 3 用 下 一 字 节 除 矢 量 长 度

  ---- 4 用 下 一 字 节 乘 矢 量 长 度

  ---- 5 进 栈

  ---- 6 出 栈

  ---- 7 引 用 下 一 字 节 编 码 的 形 定 义

  ---- 8 由 下 两 个 字 节 给 出X 和Y 位 移 量( 可 用 圆 括 号 括 起 来)

  ---- 9 后 跟 有 多 个X 和Y 位 移 量, 并 需 要(0,0) 结 束

  ---- 10 由 下2 个 字 节( 半 径, 方 向) 定 义 一 个 圆, 方 向 取 值 范 围 为010 ~070, 高4 位 表 示 方 向, 低4 位 为0

  ---- 11 用 下5 个 字 节( 字 节1, 字 节2, 字 节3, 半 径, 字 节5) 定 义 一 个 圆 弧, 字 节1 影 响 起 始 角, 字 节2 影 响 终 止 角, 字 节3 影 响 半 径, 字 节5 高4 位 表 示 方 向, 低4 位 决 定 弧 度 角

  ---- 12 由 下3 个 字 节(X 位 移,Y 位 移, 凸 度) 定 义 一 个 圆 弧

  ---- 13 定 义 多 段 圆 弧, 并 需 用(0,0) 结 束

  ---- 14 使 后 面 的 一 个 特 殊 码 不 起 作 用

  三、 编 制 转 换 程 序 的 步 骤

  ---- 1. 读 索 引 项 数、 换 码 范 围 个 数 及 换 码。

  ---- 2. 将 长 度 不 为0 的 索 引 项 全 部 读 入 内 存, 读 入 内 存 的 项 数 即 为 字 符 数 目。

  ---- 3. 写 源 形 文 件 的 第 一 行。

  ---- 4. 将 读 入 内 存 的 索 引 项 按 编 码 从 小 到 大 顺 序 排 序。 因 排 序 时 间 较 长, 因 此 排 序 每 完 成 一 步 在 屏 幕 上 显 示 计 数, 以 表 示 排 序 正 在 进 行。

  ---- 5. 处 理 编 码 为0 的 形 定 义,