2

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

我安装了字体,打开了我的 WPF 应用程序并将文本块字体设置为这个新字体并添加了一些文本。文本出来就好像它是 Arial 或什么的。

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

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

这就是 xaml 目前的样子,但正如我所说,我已经尝试在表达式混合中设置字体。

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

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

有任何想法吗?

4

3 回答 3

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”。

于 2012-09-14T11:33:10.980 回答
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}"/

于 2012-09-14T12:44:53.263 回答
1

如果您创建一个测试 Windows 窗体应用程序,添加一个 TextBox 并选择“Code 128”字体作为要使用的字体,那么它会正确显示 Barcode 字体。

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

即使是“字形”也很难从该字体文件中获取任何有意义的内容:

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

它只是返回“块”......这意味着没有字符。

在此处输入图像描述

当您使用 TextBox/TextBlock 等时......备用字体用于显示内容(因为它无法使用 Code123 字体显示它)......这就是为什么您看到文本恢复为Arial 字体(或任何您定义的后备字体)。


你从哪里下载自定义字体和示例程序……是这个地方吗?

还是从这里?:

您确定字体名称是 #Code 128 吗?

如果将 .ttf 字体复制到\Windows\Fonts目录中,然后使用 CharacterMap,您可以看到哪些字体名称?

使用barcoderesource字体安装后,我列出了这些字体:

在此处输入图像描述

这意味着使用:

FontFamily="CCode128_S3_Trial"

参考字体如果它安装在 Windows 中

或者

FontFamily="/Fonts/#CCode128_S3_Trial"

引用嵌入到您的应用程序中的 .ttf 字体文件。

您是否将 .TTF 字体文件添加到名为“Fonts”的文件夹中的项目中并设置 Build Type="Resource"?

于 2012-09-14T11:42:58.490 回答