WPF app自定义ttf字体未被使用?

时间:2012-09-14 11:07:12

标签: c# wpf .net-4.0

我下载了一个显示EAN 128条形码的自定义字体。 我还下载了一些源代码和示例程序,它将字符串转换为编码字符串以与字体一起使用(包括校验和等)。

我安装了字体,打开了我的WPF应用程序并将文本块字体设置为这个新字体并添加了一些文本。文本就像Arial一样出现。

我尝试将字体添加为资源并以这种方式引用它,但仍然不是快乐。

然后我运行了字体附带的程序。我发现的有趣部分是,当您输入文本时,程序对其进行编码并设置标签的文本并显示条形码。但是,该应用程序允许您打印预览并打印条形码,但是当您在打印预览和打印输出中将条形码的字体更改为Arial或者它曾经是什么时,我在我的应用程序中看到的问题相同。 / p>

这就是xaml关注的时刻,但正如我所说,我尝试在表达式混合中设置字体。

#Code 128是字体名称而不是文件名。

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

有什么想法吗?

3 个答案:

答案 0 :(得分: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”。

答案 1 :(得分:1)

如果您创建测试Windows窗体应用程序,请添加一个TextBox并选择&#34; Code 128&#34;字体作为使用的字体,然后它正确显示条形码字体。

使用WPF,它看起来里面的渲染系统处理字体由于某种原因不喜欢那个特定的字体...也许它在文件中所期望的某些信息不在那里。

Even&#34; Glyphs&#34;无法从该字体文件中获得任何合理的信息:

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

它只会返回&#34;阻止&#34; .....这意味着没有字符。

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字体文件。

您是否在。&#34; Fonts&#34;并设置Build Type =&#34; Resource&#34;?

答案 2 :(得分:1)

以下是我用来做的方法......

  1. 我在项目中添加了字体
  2. 我在“资源”
  3. 上设置Font的属性“Build action”
  4. 最后,我使用了类似的字体:
  5. 
    TextBlock Grid.Column="2" HorizontalAlignment="Center" FontSize="32" VerticalAlignment="Stretch" FontFamily="./#Code 128" Grid.Row="5" Margin="1" Text="{Binding Checksum}"/