2013-11-21 74 views
2

我正在從Delphi應用程序寫入DXF文件並試圖理解文本樣式。
我有一般的文本樣式,但我很努力地在DXF參考文獻中找到有關1071組代碼如何工作的信息。
1071組代碼之後是一個長整型值,其中包含truetype字體的間距和家族,字符集以及斜體和粗體標誌。 我找不到有關如何創建此值的任何文檔。我有一個用CAD程序生成的示例DXF文件,並且在比較它們的值時會發生變化,但我無法理解這些差異。它看起來像4個字節中的每一位都有特定的含義。 希望得到任何幫助。謝謝。從Delphi應用程序將文本樣式寫入DXF

回答

3

免責聲明:這個答案是我對隨機測試結果的解釋。自負風險!

這裏從隨機文本樣式定義DXF文件中得到測試結果的屏幕截圖:

enter image description here

所以,它應該是安全的假設:

  • 斜體樣式有$01000000位設置,
  • 粗體樣式有$02000000位設置,
  • The 1 st值的單詞表示家庭字符集。

然後,剩下的挑戰似乎是獲得家庭字符集的價值。您可以嘗試省略它,因爲它是由字體名稱和文件名定義的。但是,刪除整個1071組的測試也會清除字體樣式,但即使如此,字體文件名也是如此。

+0

謝謝你。這似乎已經奏效,非常感謝。 – user3015772

+1

我相信這個答案有錯誤。值爲粗體爲0x2000000,斜體爲0x1000000。 – dismine

+0

@ dismine/@NGLN我們如何從1071價值代碼中獲取下劃線/點擊信息? – user936414

0

DXF規範說組代碼1071是「一個包含truetype字體的音調和家族,字符集,以及斜體和粗體標誌的長整型值」。正如NGLN指出的,掩碼0x10000000x2000000分別標識斜體和粗體文本。

音高,家族和字符集是Windows GDI LOGFONT struct的屬性;實際值在WMF規範(pitch,family,charset)中給出。從我所知道的情況來看,最右邊的四位表示音調,接下來的四位表示家族,接下來的八位表示字符集。

下面是一個典型的1071值:

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

這種字體非粗體,非斜體,ANSI字符集(毫無意義的這些天),瑞士家庭(即無襯線),以及可變螺距(即不是等寬的)。

至於寫入DXF文件,AutoCAD似乎樂於接受音高,字符集和家族全部爲零的1071個值。

AutoCAD文字樣式不包含下劃線和刪除線的信息。

相關問題