2015-06-22 161 views
1

我在SVG中創建了基於ASCII碼的字母。每個字符在一個單獨的文件中。這是用於繪圖應用程序中的剪貼畫。以下是我用來生成SVG腳本的例子:生成阿拉伯字母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

您可以查找Unicode代碼範圍。從Wikipedia,我得到:

  • 阿拉伯語(0600-06FF)
  • 阿拉伯語補充(0750-077F)
  • 阿拉伯語擴展-A(08A0-08FF)
  • 阿拉伯表達形式-A(FB50 -FDFF)
  • 阿拉伯表達形式-B(FE70-FEFF)
  • 阿拉伯字母數學符號(1EE00-1EEFF)
  • 魯米標號符號(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位小數可能會被破壞。

+0

太棒了!謝謝。 – TenG