生成阿拉伯字母到SVG

时间:2015-06-22 00:27:27

标签: bash svg arabic

我在SVG中根据ASCII码创建了字母。每个字符在一个单独的文件中。这是用作绘图应用程序中的剪贴画。以下是我用于生成SVG的脚本示例:

cat <<EOF > f.svg
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   version="1.1"
   width="512"
   height="512"
   id="svg3834"
   inkscape:version="0.48.4 r9939"
   sodipodi:docname="Perspective1.svg">
  <g id="board">
EOF

mkdir letters

i=32
while [ $i -lt 400 ]; do
    let "i++"

   OUT=$( printf "letters/%03d.svg" $i)
   echo $OUT
   cat f.svg > $OUT
   cat <<EOF >> $OUT
  <text x="32" y="256" 
        font-family="Verdana" font-size="256" fill="red" >
EOF
   printf "&#%d;" $i >> $OUT
   cat <<EOF >> $OUT
  </text>
  </g>
</svg>
EOF
done

echo ""
echo " Now convert  $( cygpath -w `pwd`)/letters/*.svg on http://www.fileformat.info/convert/image/svg2raster.htm "
echo

ls letters

我怎样才能做同样/类似的阿拉伯字母/数字?

1 个答案:

答案 0 :(得分:1)

您可以查找Unicode代码范围。从Wikipedia开始,我得到了:

  • 阿拉伯语(0600-06FF)
  • 阿拉伯文补编(0750-077F)
  • Arabic Extended-A(08A0-08FF)
  • 阿拉伯语演示表格-A(FB50-FDFF)
  • 阿拉伯语演示表格-B(FE70-FEFF)
  • 阿拉伯数学字母符号(1EE00-1EEFF)
  • Rumi Numeral符号​​(10E60-10E7F)

如果您需要,例如阿拉伯语0600-06FF,请将您的循环更改为:

for ((i=0x600;i<=0x6FF;i++)); do

一切都应该有效,除了你的字体。似乎Verdana只支持泛拉丁语脚本,因此您最好将font-family="Verdana"更改为font-family="Verdana,sans-serif",这样您就可以获得良好的后备。

P.S。您目前对字形度量的处理可能会因阿拉伯文字体中较宽的字形而被打破。

P.P.S。由于$i

的范围,您的3位小数命名文件可能会被破坏