میں کوشش کر رہا تھا سعد بھائی والے کمانڈ چلانے کی پر کچھ مسائل سے دو چار ہونا پڑا۔ ورنہ میں ایس وی جی فائلز پیش کر دیتا۔ در اصل میں جینیریٹیڈ ویکٹر گرافکس دیکھ تو لیتا ہوں پر محفوظ ہونے والی فائل صفر سائز کی ہوتی ہے۔
میں نے ذیل کی کمانڈ دی:
کوڈ:pango-view --text="اردو محفل" --font=Nafees-Web-Naskh-Regular --language=ur --rtl --output=urdu.svg
لینکس پینگو ویو میں ذیل کے آپشنز دستیاب ہیں۔
کوڈ:Application Options: --no-auto-dir No layout direction according to contents --backend=cairo/xft/ft2/x Pango backend to use for rendering (default: cairo) --background=red/#rrggbb/#rrggbbaa/transparent Set the background color -q, --no-display Do not display (just write to file or whatever) --dpi=number Set the resolution --align=left/center/right Text alignment --ellipsize=start/middle/end Ellipsization mode --font=description Set the font description --foreground=red/#rrggbb/#rrggbbaa Set the text color --gravity=south/east/north/west/auto Base gravity: glyph rotation --gravity-hint=natural/strong/line Gravity hint --header Display the options in the output --height=+points/-numlines Height in points (positive) or number of lines (negative) for ellipsizing --hinting=none/auto/full Hinting style --indent=points Width in points to indent paragraphs --justify Align paragraph lines to be justified --language=en_US/etc Language to use for font selection --margin=pixels Set the margin on the output in pixels --markup Interpret text as Pango markup -o, --output=file Save rendered image to output file --pangorc=file pangorc file to use (default is ./pangorc) --rtl Set base direction to right-to-left --rotate=degrees Angle at which to rotate results -n, --runs=integer Run Pango layout engine this many times --single-par Enable single-paragraph mode -t, --text=string Text to display (instead of a file) --version Show version numbers --waterfall Create a waterfall display -w, --width=points Width in points to which to wrap lines or ellipsize --wrap=word/char/word-char Text wrapping mode (needs a width to be set)
محمد سعد کی فراہم کردہ ویکٹر اشکال ذیل میں پیش کی جا رہی ہیں۔ انک سکیپ میں سکیلنگ کے دوران کھینچا تانی سے اشکال میں کچھ فرق پڑنے کا امکان ہو سکتا ہے۔
محمد سعد اور ابن سعید، اگر آپ سکرپٹ میں الفاظ کو فائل سے پڑھیں تو بہتر رہے گا۔ اس طرح اس سکرپٹ کو لگیچرز کی سوفٹ کاپی ان پٹ کی جا سکے گی۔ دوسرے ایس وی جی کی بجائے اگر براہ راست ای پی ایس فارمیٹ میں آؤٹ پٹ کریں تو یہ بھی اس لیے بہتر رہے گا کیونکہ فونٹ لیب میں گلفس ای پی ایس فارمیٹ میں امپورٹ کیے جا سکتے ہیں۔ ہو سکتا ہے کہ فونٹ لیب میں ایس وی جی کی سپورٹ بھی موجود ہو، لیکن مجھے اس کے بارے میں علم نہیں ہے۔
نبیل بھائی فائل سے الفاظ پڑھنا کوئی مشکل نہیں۔ وہ کسی بھی اسٹیج پر کیا جا سکتا ہے۔ بس شیل اسکرپٹ میں تھوڑی سی تبدیلی درکار ہوگی۔
میرے دماغ میں اس کا ورک فلو کچھ یوں ہے کہ:
- ایک ٹیکسٹ فائل میں تمام لگیچرس اور ان کا رومن لک اپ ٹیب سے علیحدہ کر کے سطر وار لکھ لئے جائیں۔ پھر اسی فائل کو ریڈ کیا جائے اور ٹیکسٹ کے طور پر لگیچر جبکہ فائل نیم کے طور پر رومن لک اپ کو استعمال کر لیا جائے، اسپیس کو ہائفن یا انڈر اسکور سے تبدیل کر کے۔
جی ابن سعید، میں نے نوری نستعلیق پراجیکٹ کے سلسلے میں پائتھون میں اس سے ملتے جلتے طریقے سے ہی فائلوں سے لگیچر پڑھے تھے۔ لگیچرز کے ناموں میں سپیس نہیں آئے گی اس لیے اسے رپلیس کرنے کی ضرورت نہیں ہوگی۔ البتہ ویکٹر اشکال جنریٹ کرنے سے پہلے فونٹ سازوں سے مشورہ کرنا بہتر رہے گا کہ ان اشکال کو کس سکیل پر جنریٹ کیا جائے جس کے بعد یہ فونٹ میں بغیر کسی تردد کے بطور گلفس امپورٹ کی جا سکیں۔ مجھے جہاں تک یاد پڑتا ہے، اوپن ٹائپ فونٹ کی گلفس ڈرا کرنے کے لیے 1000x1000 پکسل کی شیٹ استعمال کی جاتی ہے۔ بہرحال اس کے بارے عارف کریم یا عبدالمجید ہی بہتر بتا سکیں گے۔نبیل بھائی فائل سے الفاظ پڑھنا کوئی مشکل نہیں۔ وہ کسی بھی اسٹیج پر کیا جا سکتا ہے۔ بس شیل اسکرپٹ میں تھوڑی سی تبدیلی درکار ہوگی۔
میرے دماغ میں اس کا ورک فلو کچھ یوں ہے کہ:
- ایک ٹیکسٹ فائل میں تمام لگیچرس اور ان کا رومن لک اپ ٹیب سے علیحدہ کر کے سطر وار لکھ لئے جائیں۔ پھر اسی فائل کو ریڈ کیا جائے اور ٹیکسٹ کے طور پر لگیچر جبکہ فائل نیم کے طور پر رومن لک اپ کو استعمال کر لیا جائے، اسپیس کو ہائفن یا انڈر اسکور سے تبدیل کر کے۔
ابن سعید اور محمد سعد ذرا یہ بتا دیں کہ آپ کونسی شیل سکرپٹ استعمال کر رہے ہیں؟ کیا یہ bash ہے؟ اور لینکس کی کونسی ڈسٹریبیوشن استعمال کی جانی چاہیے جس میں پینگو، انک سکیپ اور اردو فونٹس سمیت تمام ضروری لوازمات موجود ہوں؟
#!/bin/bash
# A simple Bash Shell Script to generate gliphs from a file of ligatures.
# It uses pango library to draw graphics.
# Author: UrduWeb.org (Urdu Mehfil)
# Idea: Mohammad Saad
# Licence: This Script is released under GNU/GPL terms and conditions.
# Date: March 3rd, 2010
# USAGE:
#
# 1: If default ligature file exists
# >> ./liggen.sh
#
# 2: If custom ligature file is passed
# >> ./liggen.sh input/file/path
#
# 3: If custom output format (extension) is desired
# >> ./liggen.sh input/file/path ext
#
# 4: If custom output directory is desired
# >> ./liggen.sh input/file/path ext outpu/directory/path
#
# TODO: Switch based parameters to override defaults.
# Config variables
FILE="ligatures.txt" # Default ligature file (one ligature per line text file)
FONT="Nafees" # Default font
EXT="svg" # Default output extension
OPDIR="$EXT/$FONT" # Default output directory
DPI=3000 # Default resolution
# TODO: Yet to implement dynamic lookups generation for output file naming
lookup(){
exit 0
}
# All the magic of generating graphics happens here
printLigature(){
lig=$1
pango-view --text="$lig" --font="$FONT" --dpi=$DPI --language=ur --rtl -q --output="$OPDIR/$lig.$EXT"
}
# Override default input file name if a file is passed as first argument
if [ "$1" != "" ]
then
FILE="$1"
fi
# Override default output file extension if a second argument is passed
if [ "$2" != "" ]
then
EXT="$2"
OPDIR="$EXT/$FONT"
fi
# Override default output directory if a third argument is passed
if [ "$3" != "" ]
then
OPDIR="$3"
fi
# Validating input file
if [ ! -f $FILE ]
then
echo "$FILE does not exists, please check the file name."
exit 1
elif [ ! -r $FILE ]
then
echo "$FILE can not read, please check the permissions."
exit 2
fi
# Creating output directory if it does not exist
if [ ! -d "$OPDIR" ]
then
mkdir "$OPDIR" -p
fi
# Reading from the input file line by line and send it to printLigature magical procedure
while read -r line
do
printLigature $line
done <"$FILE"
exit 0
لیجئے جناب ایک عدد چھوٹی سی ابتدائی شیل اسکرپٹ پیش خدمت ہے۔ ا س پیغام کے منسلکات ملاحظہ فرمائیں۔
echo "Generating $OPDIR/$lig.$EXT"
Generated 420 ligatures.