从Delphi应用程序将文本样式写入DXF

时间:2013-11-21 02:49:55

标签: delphi dxf

我正在从Delphi应用程序编写DXF文件并尝试理解文本样式 我的文字样式一般都在工作,但我很难在DXF参考文献中找到有关1071组代码如何工作的信息。
1071组代码后跟一个长值,其中包含truetype字体的音高和族,charset,斜体和粗体标志。 我找不到有关如何创建此值的任何文档。我已经获得了使用CAD程序生成的示例DXF文件,并将这些值的变化进行了比较,但我无法理解这些差异。看起来4个字节中的每个位都具有特定含义。 非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:3)

  

免责声明:这个答案是我对随机测试结果的解释。使用风险自负!

这里是一个带有随机文本样式定义的DXF文件的测试结果的屏幕截图:

enter image description here

所以,假设:

应该是安全的
  • 斜体样式设置为$01000000位,
  • 粗体样式设置为$02000000位,
  • 值的1 st 字表示家庭字符集。

然后,挑战似乎是获得家庭charset价值。您可以尝试省略它,因为它是由字体名称和文件名定义的。但是,删除整个1071组的测试也会清除字体样式,尽管字体文件名也是如此。

答案 1 :(得分:0)

DXF规范说组码1071是"一个长值,包含truetype字体的音高和族,charset,斜体和粗体标记"。正如NGLN指出的那样,位掩码0x10000000x2000000分别标识斜体和粗体文本。

Pitch,family和charset是Windows GDI LOGFONT struct的属性;实际值在WMF规范中给出(pitchfamilycharset)。据我所知,最右边的四位代表音高,接下来的四位代表族,接下来的八位代表字符集。

这是一个典型的1071值:

0000 0000 0000 0000 0000 0000 0010 0010
       BI           _charset_ fmly ptch

这种字体是非粗体,非斜体,ANSI字符集(现在相当无意义),瑞士家族(即sans-serif)和可变间距(即不是等宽字体)。

至于编写DXF文件,AutoCAD似乎很乐意接受1071个值,其中pitch,charset和family都为零。

AutoCAD文本样式不包含有关下划线和删除线的信息。