2012-09-14 76 views
2

我下載了一個顯示EAN 128條形碼的自定義字體。 我還下載了一些源代碼和示例程序,它將字符串轉換爲與字體一起使用的編碼字符串(包括校驗和等)。WPF應用程序自定義ttf字體沒有被使用?

我安裝了字體,打開了我的WPF應用程序,並將textblock字體設置爲此新字體並添加了一些文本。文本出來就好像它是Arial或其他東西。

我嘗試添加字體作爲資源並引用它,但仍然不是快樂。

所以我運行了字體附帶的程序。我發現的有趣部分是,當你輸入文本時,程序將其編碼並設置標籤的文本,並顯示條形碼。但是,該應用程序允許您打印預覽並打印條形碼,但是當您在打印預覽和打印輸出中將條形碼的字體更改爲像Arial或以前一樣時,與我在應用程序中看到的問題相同。

這是XAML的外觀的時刻,但正如我所說,我已經試過只設置在Expression Blend的字體。

#代碼128是字體名稱而不是文件名。

<TextBlock x:Name="tbkBarCode" FontFamily="/Fonts/#Code 128" FontSize="24" HorizontalAlignment="Center"/> 

任何想法?

+0

我有一個類似的問題 - 我有一套Code 128 TrueType字體,我不能在VS中使用。我認爲這是因爲Font Embeddability設置爲Restricted。這可以通過導航到TTF文件進行檢查,右鍵單擊並查看「屬性」>「詳細信息」。 –

回答

2

試試這個:

<TextBlock x:Name="tbkBarCode" FontFamily="pack://application:,,,/Fonts/#Code 128" FontSize="24" HorizontalAlignment="Center"/> 

編輯:我第一次嘗試了不同的字體和做它的工作的這種方式。

我下載並用Code 128字體嘗試過,並沒有馬上工作。爲了讓它起作用,我必須將Build Action更改爲「Content」,將Copy to Output Directory複製到「Copy if newer」。

+0

試過,並沒有工作。我在.Net 4中讀過,沒有必要使用pack:// application:,,,因爲它是自動完成的 – Gaz83

+0

@ Gaz83您是否嘗試更改Build Action和Copy to Output Directory屬性? – Eirik

1

如果你創建一個測試Windows窗體應用程序,添加一個文本框,然後選擇「代碼128」字體作爲使用的字體,然後它正確顯示條形碼字體。

使用WPF看起來內部的,與交易的字體不喜歡某種原因特定的字體渲染系統...也許它希望在文件中的一些信息是不存在的。

即使「字形」有麻煩什麼明智的是字體文件:

<Glyphs UnicodeString="ABCD1234567890" FontUri="c:\windows\fonts\code128.ttf" Height="50" Fill="#FF000000" FontRenderingEmSize="25"/> 

它只是返回「塊」 ......這意味着沒有字符。

enter image description here

當您使用TextBox/TextBlock的等....回退字體用於顯示該內容(因爲它無法與Code123字體來顯示它)......其中這就是爲什麼你會看到文本恢復爲Arial字體(或者任何你的後備字體被定義爲)。


從哪裏下載自定義字體和示例程序......是這個地方嗎?

或者從這裏?:

確定的字體名稱#CODE 128?

如果將.ttf字體複製到\Windows\Fonts目錄中,然後使用CharacterMap,則可以看到什麼字體名稱?

安裝與barcoderesource字體之後,我有這些字體列出:

enter image description here

這將意味着使用:

FontFamily="CCode128_S3_Trial" 

指的字體,如果它是安裝在Windows

FontFamily="/Fonts/#CCode128_S3_Trial" 

指向嵌入到應用程序中的.ttf字體文件。

您是否已經將.TTF字體文件添加到名爲「Fonts」的文件夾中並設置了Build Type =「Resource」?

+0

我從這裏下載http://www.jtbarton.com/Barcodes/Code128.aspx – Gaz83

+0

字符映射顯示字體字符爲條形碼,因爲它應該 – Gaz83

+0

哦,是的,我確實將類型設置爲資源 – Gaz83

1

這裏是我以前做的方法...

  1. 我添加的字體在我的項目
  2. 我設置屬性「建設行動」 「資源」上的字體
  3. 最後,我用這樣的字體:
 

TextBlock Grid.Column="2" HorizontalAlignment="Center" FontSize="32" VerticalAlignment="Stretch" FontFamily="./#Code 128" Grid.Row="5" Margin="1" Text="{Binding Checksum}"/ 
 
+0

剛剛嘗試過,它不適合我。 – Gaz83

+0

哼... 在應用程序的同一目錄中是否有字體文件? –

+0

這對我來說可能是我見過的最簡單的解決方案。 –

相關問題