Linux 以X11位图字体呈现字符串

Linux 以X11位图字体呈现字符串,linux,fonts,x11,Linux,Fonts,X11,如何以古老的X11位图字体呈现字符串?我是说 -*-lucida-medium-r-normal-*-34-*-*-*-*-*-*-* 我可以通过xfontsel找到它。我只需要一个命令行工具等,显示一个给定的字符串在该字体。类似的TrueType字体不起作用,因为它必须是像素完美的(我正在尝试将每个字母的图像以该字体的图像进行OCR)。将以下内容添加到~/.Xdefaults: xedit*editWindow*font: -*-lucida-medium-r-normal-*-36-*-*

如何以古老的X11位图字体呈现字符串?我是说

-*-lucida-medium-r-normal-*-34-*-*-*-*-*-*-*

我可以通过
xfontsel
找到它。我只需要一个命令行工具等,显示一个给定的字符串在该字体。类似的TrueType字体不起作用,因为它必须是像素完美的(我正在尝试将每个字母的图像以该字体的图像进行OCR)。将以下内容添加到~/.Xdefaults:

xedit*editWindow*font: -*-lucida-medium-r-normal-*-36-*-*-*-*-*-*-*
然后跑

$ xrdb -merge ~/.Xdefaults
$ xedit
然后我输入字符串,截图,并在gimp中进行比较


(事实证明X11字体毕竟不太正确。我的源代码使用了Lucida Sans 36 pt(ttf),但没有抗锯齿,可能还没有wierd提示。)

我不确定是否有命令行工具。但是您可以使用Xlib和C来实现自己的功能

似乎有人编写了一个使用Xlib显示字符串的程序。更改几行并使用以下工具进行编译:

gcc -lX11 -o xrenderstring xrenderstring.c
。。我应该为你做这件事

我复制了整个程序(以防它从原始源代码中消失),修改为接受两个参数:1。姓名,2。要呈现的字符串

因此,您可以这样称呼它(当然在编译之后):


要仅以该字体呈现字符,请执行以下操作:

  • xfd-fn'-*-lucida-medium-r-normal-*-34-*-*-*-*-*-*-*-*-*-*-*-*'
  • xfontsel-pattern'-*-lucida-medium-r-normal-*-34-*-*-*-*-*-*-*-*-*-*-*-*-*'
要呈现特定字符串,请执行以下操作:

  • xfontsel-pattern'-*-lucida-medium-r-normal-*-34-*-*-*-*-*-*-*-*-*-*-*-*-*-*'-示例“棕色狐狸跳鲨鱼”

您可以使用ImageMagick

附加好处:

  • 可以呈现老式(固定)或TTF或其他字体
  • 可以渲染到屏幕或图像文件(PNG,无论什么)
简单的 短文

echo“敏捷的棕色狐狸跳过了懒狗。”\
|皈依\
-字体'-*-固定-*-*-*-*-*-18-*-*-*-*-*-*-iso8859-*'\
文本:--trim fox.png
要渲染到屏幕,请执行以下操作:

echo“敏捷的棕色狐狸跳过了懒狗。”\
|皈依\
-字体'-*-固定-*-*-*-*-*-18-*-*-*-*-*-*-iso8859-*'\
文本:--修剪MIFF:-|显示MIFF:-
移除
-trim
,查看ImageMagick使用画布进行绘制

更多控制
  • 画布大小。为了避免两步计算,请创建一个比需要大的画布,然后进行修剪
  • 控制背景色和前景色
  • 控制PNG参数(每像素一位)
convert-尺寸2000x20 xc:黑色\
-字体'-*-固定-*-*-*-*-*-18-*-*-*-*-*-*-iso8859-*'\
-填补空白\
-绘制“文本0,15‘敏捷的棕色狐狸跳过懒惰的狗’。”\
-修剪+抖动-深度1 fox.png
下面生成的图像重592字节:

获取独立框架字符(用于以后的合成) 您只能在上面的行中放置一个字符,但单独应用于多个字符将导致生成的图像不再具有相同的大小或相同的公共基线

用于带r d的LO“”中的字符
做
转换-尺寸9x13 xc:黑色\
-字体'-*-固定-*-*-*-*-*-18-*-*-*-*-*-*-iso8859-*'\
-填充白色-笔划无\
-绘制“文本0,10'${CHAR}”\
+抖动-深度2固定字符${char}.png
完成
下面的命令生成一个PNG,显示单个帧图像保持其公共对齐:

蒙太奇-模式连接-平铺x1固定字符H.png固定字符e.png\
已修复\u char\u l.png已修复\u char\u l.png已修复\u char\u o.png已修复\u char\u\.png\
固定字符W.png固定字符o.png固定字符r.png固定字符l.png\
已修复\u char\u d.png helloworld.png

很好,谢谢!如果可以,我通常会尽量避免使用原始Xlib编码:-)。
./xrenderstring "-*-lucida-medium-r-normal-*-34-*-*-*-*-*-*-*" "Quick brown fox"