Pbmtext User Manual(0) Pbmtext User Manual(0)

pbmtext - تبدیل متن به تصویر گرافیکی PBM

pbmtext [-wchar] [-font fontfile] [-builtin fontname] [-space pixels] [-lspace pixels] [-nomargins] [-width pixels] [-load-entire-font] [-verbose] [-dry-run] [-text-dump] [text]

کوتاه‌ترین پیشوند یکتای گزینه‌ها پذیرفته می‌شود. می‌توانید برای مشخص کردن گزینه‌ها به جای یک خط تیره از دو خط تیره استفاده کنید. همچنین می‌توانید به جای علامت مساوی از فاصله برای جدا کردن نام گزینه از مقدار آن استفاده نمایید.

این برنامه بخشی از Netpbm(1) است.

برنامه pbmtext متن مشخص‌شده را، چه یک خط منفرد از خط فرمان باشد و چه چند خط از ورودی استاندارد (Standard Input)، دریافت کرده و آن را به یک تصویر گرافیکی PBM رندر می‌کند.

متن رندرشده شامل تمامی آرگومان‌های بدون گزینه در خط فرمان است که با فاصله از یکدیگر جدا شده‌اند؛ به جز حالتی که هیچ آرگومان بدون گزینه‌ای در خط فرمان ارائه نشده باشد، که در این صورت از ورودی استاندارد خوانده می‌شود.

در تصویر خروجی، هر خط ورودی معادل یک خط خروجی است. خطوط با نویسه خط جدید (newline) از یکدیگر جدا می‌شوند.

این برنامه هر نویسه‌ای در خط ورودی را که در فونت موجود نباشد به صورت فاصله (space) رندر می‌کند. توجه داشته باشید که نویسه‌های کنترلی معمولاً در فونت وجود ندارند، اما برخی فونت‌ها برای آن‌ها گلیف (glyph) دارند. نویسه‌های خط جدید که مرز خطوط را در ورودی استاندارد مشخص می‌کنند در هیچ خطی قرار ندارند.

نویسه‌های تب (Tab) به صورت تعدادی فاصله رندر می‌شوند؛ هرگونه مدخلی در فونت برای کد نویسه تب نادیده گرفته می‌شود. تعداد فاصله‌ها به گونه‌ای است که در هر ۸ نویسه یک نقطه توقف تب (tab stop) ایجاد شود. توجه داشته باشید که اگر فونت تناسبی (proportional) باشد، این رفتار چندان مفید نخواهد بود.

عرض تصویر دقیقاً به اندازه طولانی‌ترین خط متن به علاوه حاشیه‌هاست، و ارتفاع آن دقیقاً به اندازه قرارگیری خطوط متن به علاوه حاشیه‌ها است.

حاشیه‌های چپ و راست دو برابر عرض پهن‌ترین نویسه موجود در فونت هستند؛ حاشیه‌های بالا و پایین نیز برابر با ارتفاع بلندترین نویسه در فونت هستند. اما اگر متن فقط یک خط باشد، تمام حاشیه‌ها نصف این مقدار خواهند بود. می‌توانید از گزینه -nomargins برای حذف حاشیه‌ها استفاده کنید.

برنامه pbmtext متن را از چپ به راست رندر می‌کند. این برنامه نمی‌تواند به صورت عمودی یا از راست به چپ رندر کند.

برنامه pbmtextps کاری مشابه pbmtext انجام می‌دهد، اما از Ghostscript برای تولید نویسه‌ها استفاده می‌کند، به این معنی که می‌توانید از فونت‌های Postscript بهره ببرید. اما این به آن معنا نیز هست که باید Ghostscript نصب شده باشد و به آن اندازه سریع نیست. همچنین، pbmtextps فقط یک خط متن تولید می‌کند، در حالی که pbmtext می‌تواند چندین خط ایجاد کند.

برنامه pbmtext برای متن‌های ساده در نظر گرفته شده است. اگر با یک سند (document) کار می‌کنید، بهتر است از یک برنامه قالب‌بندی سند برای "چاپ" در یک فایل Postscript استفاده کرده و سپس آن Postscript را به pstopnm بدهید.

علاوه بر گزینه‌های مشترک میان تمامی برنامه‌های مبتنی بر libnetpbm (به‌ویژه -quiet، به گزینه‌های مشترک مراجعه کنید)، pbmtext گزینه‌های خط فرمان زیر را می‌شناسد:

به طور پیش‌فرض، pbmtext جریان نویسه‌ای تک‌بایتی را به عنوان ورودی دریافت می‌کند. هنگامی که -wchar را مشخص می‌کنید، با متن ورودی به عنوان یک جریان نویسه‌ای چندبایتی برخورد می‌کند که طبق لوکال (locale) جاری کدگذاری شده است. معمولاً کاربر یک فایل فونت BDF با کدگذاری ISO-10646-1 را همراه با گزینه -font ارائه می‌دهد.

با گزینه -wchar، نمی‌توانید متن را در خط فرمان وارد کنید؛ متن باید از ورودی استاندارد (Standard Input) داده شود.

این گزینه در Netpbm 10.82 (مارس 2018) جدید بود.

این گزینه فونتی را انتخاب می‌کند که شما یا به عنوان یک فایل BDF (قالب توزیع بیت‌مپ) سیستم پنجره X یا به صورت یک فایل PBM با فرمتی خاص ارائه می‌دهید.

برای اطلاعات بیشتر در مورد فونت‌های دیگر و نحوه ساخت فونت اختصاصی خود، بخش فونت‌ها در زیر را ببینید.

این گزینه یکی از فونت‌های توکار Netpbm را انتخاب می‌کند.

مقدار fontname می‌تواند bdf یا fixed باشد.

فونت "bdf" برابر است با فونت Times-Roman با ارتفاع ۱۵ پیکسل. (تقریباً معادل فونت ۱۴ پوینت چاپ‌شده با وضوح 75 dpi).

فونت "fixed" یک فونت توکار با عرض ثابت (fixed width) است.

برای اطلاعات بیشتر در مورد فونت‌ها، بخش فونت‌ها در زیر را ببینید.

به اندازه pixels پیکسل فاصله بین نویسه‌ها اضافه می‌کند. این علاوه بر هر فاصله‌ای است که پیرامون نویسه‌ها درون خود فونت تعبیه شده، که معمولاً برای تولید یک رشته متن مناسب کافی است.

مقدار pixels می‌تواند کسری باشد، که در این حالت تعداد پیکسل‌های افزوده‌شده متغیر است تا به میانگین مشخص‌شده دست یابد. برای مثال -space=1.5 باعث می‌شود نیمی از فاصله‌ها ۱ پیکسل و نیمی دیگر ۲ پیکسل باشند.

مقدار pixels می‌تواند منفی باشد تا متن به هم فشرده شود، اما نویسنده بررسی و آزمون چندانی روی نحوه عملکرد این حالت در تمام شرایط انجام نداده است، بنابراین ممکن است نتایج نامطلوبی ایجاد کند.

به اندازه pixels پیکسل فاصله بین خطوط اضافه می‌کند. این علاوه بر هر فاصله‌ای است که در بالا و پایین نویسه‌ها درون خود فونت تعبیه شده، که معمولاً برای تولید فاصله خطوط مناسب کافی است.

مقدار pixels باید یک عدد صحیح باشد.

مقدار pixels می‌تواند منفی باشد تا خطوط به هم فشرده شوند، اما نویسنده بررسی و آزمون چندانی روی نحوه عملکرد این حالت در تمام شرایط انجام نداده است، بنابراین ممکن است نتایج نامطلوبی به همراه داشته باشد.

به طور پیش‌فرض، pbmtext حاشیه‌هایی در اطراف تصویر اضافه می‌کند، همان‌گونه که در بالا شرح داده شد. این گزینه باعث می‌شود که pbmtext هیچ حاشیه‌ای اضافه نکند.

توجه داشته باشید که ممکن است هنوز فاصله‌ای فراتر از لبه‌های حروف وجود داشته باشد زیرا خود یک نویسه ممکن است در لبه‌هایش حاوی فضای خالی باشد. برای حذف تمام پس‌زمینه اطراف به گونه‌ای که متن با هر چهار لبه تصویر تماس داشته باشد، از pnmcrop استفاده کنید.

این گزینه مشخص می‌کند که متن قرار است در چه مقدار فضای افقی جا بگیرد.

اگر ورودی یک خط باشد، pbmtext آن را بر حسب نیاز به چندین خط می‌شکند تا در عرض مشخص‌شده جا شود. این شکستن میان نویسه‌ها رخ می‌دهد اما توجهی به فاصله‌ها (white space) ندارد؛ بنابراین ممکن است در میانه یک کلمه بشکند و خطی با فاصله خالی شروع شود یا پایان یابد.

اگر ورودی چندخطی باشد، pbmtext فرض می‌کند که شما خودتان شکستگی‌های خطوط را در جای مناسب قرار داده‌اید، و صرفاً هر خط را بر حسب نیاز برای جا شدن در عرض مشخص‌شده کوتاه (truncate) می‌کند.

هنگامی که از فونت BDF استفاده می‌کنید، pbmtext به طور معمول فقط نویسه‌های مورد نیاز برای متن شما را از فونت بارگذاری می‌کند و زمان را برای بارگذاری نویسه‌های دیگر تلف نمی‌کند. با این گزینه، pbmtext در عوض کل فونت را می‌خواند. این امر تغییری در خروجی رندرشده ایجاد نمی‌کند، اما به شما امکان می‌دهد سلامت فایل فونت را بررسی کنید.

این گزینه در Netpbm 10.91 (ژوئن 2020) جدید بود. پیش از آن، pbmtext همیشه کل فونت را می‌خواند.

باعث می‌شود pbmtext پیام‌های اطلاعاتی درباره پردازش خود صادر کند.

با این گزینه، به جای خروجی دادن تصویری از متن، pbmtext صرفاً پیامی حاوی ابعاد تصویری که قرار بود تولید شود در خروجی استاندارد می‌نویسد.

تنها می‌توانید یکی از گزینه‌های -dry-run و -text-dump را مشخص کنید.

این گزینه در Netpbm 10.75 (ژوئن 2016) جدید بود.

این گزینه باعث می‌شود pbmtext صرفاً متنی اسکی را که قرار بود رندر شود در خروجی استاندارد بنویسد. خروجی منعکس‌کننده هرگونه قالب‌بندی متن، جایگزینی نویسه‌های غیرقابل‌چاپ، بسط تب و غیره است. این گزینه برای عیب‌یابی مشکلات کاربرد دارد.

هنگامی که -wchar فعال باشد، متن خروجی با کدگذاری مشخص‌شده توسط لوکال جاری خواهد بود.

تنها می‌توانید یکی از گزینه‌های -dry-run و -text-dump را مشخص کنید.

این گزینه در Netpbm 10.82 (مارس 2018) جدید بود.

اغلب اوقات مایلید متنی را روی تصویر دیگری قرار دهید. یکی از راه‌های انجام این کار استفاده از ppmlabel است. برای رسم منعطف‌تر (اما پیچیده‌تر) متن روی یک تصویر، ابزار ppmdraw وجود دارد. با این حال، این ابزارها گزینه‌های فونتی را که pbmtext فراهم می‌کند ارائه نمی‌دهند.

راه دیگر استفاده از pbmtext برای ایجاد تصویری حاوی متن است، و سپس استفاده از pamcomp برای انداختن تصویر متن روی تصویر پایه شما. برای اینکه فقط خود متن (و نه کل مستطیل حاوی آن) تصویر پایه را بپوشاند، باید از طریق گزینه -alpha یک ماسک به pamcomp بدهید. شما می‌توانید از خود تصویر متن به عنوان ماسک استفاده کنید، به شرطی که گزینه -invert را نیز به pamcomp مشخص نمایید.

اگر می‌خواهید به جای متن سیاه، متن رنگی را روی تصویر بیندازید، کافی است قبل از انداختن تصویر متن، با استفاده از ppmchange تمام پیکسل‌های سیاه را به رنگ دلخواه خود تغییر دهید. اما همچنان از همان تصویر سیاه و سفید اولیه برای ماسک شفافیت استفاده کنید.

اگر می‌خواهید متن زاویه‌دار باشد، قبل از ترکیب، از pnmrotate روی تصویر متن (و ماسک شفافیت) استفاده کنید.

سه نوع فونت وجود دارد که می‌توانید با pbmtext استفاده کنید:

  • توکار (built in)
  • BDF
  • PBM

دو فونت توکار وجود دارد: bdf و fixed. این فونت‌ها را با گزینه -builtin انتخاب می‌کنید.

هنگامی که هیچ اطلاعات فونتی در خط فرمان مشخص نکنید، bdf حالت پیش‌فرض است. نام‌گذاری این فونت بازتاب‌دهنده این واقعیت است که بسیاری از ویژگی‌های فونت‌های سبک BDF را داراست. در زمان پیاده‌سازی این فونت، pbmtext توانایی خواندن فونت‌های اختیاری BDF مشخص‌شده با گزینه -font را نداشت. هیچ فایل فونت خارجی در این حالت درگیر نیست.

فونت bdf با ISO 8859-1 (Latin 1, 8-bit) کدگذاری شده است. علاوه بر انگلیسی، می‌تواند اکثر زبان‌های اروپای غربی (اسپانیایی، فرانسوی، آلمانی، سوئدی و...) را مدیریت کند. این مجموعه فاقد نماد واحد پول یورو است.

فونت fixed فقط اسکی (7-bit) است.

اگرچه انجام این کار خطا نیست، اما نباید از فونت‌های توکار بالا همراه با -wchar استفاده کنید.

قالب BDF یک فرمت فونت قدیمی است که زمانی در سامانه پنجره X استاندارد بود. امروزه به ندرت آن را مشاهده می‌کنید. تا حدود سال 2024، می‌توانستید برخی فونت‌های BDF را در وب‌سایت Xfree86 پیدا کنید. امروزه می‌توانید بسته کامل فونت‌های BDF از XFree86 را از وب‌سایت Netpbm دریافت کنید.

برای ایجاد یک فونت به عنوان یک فایل PBM (جهت استفاده با گزینه -font)، کافی است تصویری PBM از ماتریس متنی زیر ایجاد کنید.

گام اول نمایش ماتریس متنی زیر روی صفحه نمایش است، برای مثال در یک پنجره X11.

M ",/^_[`jpqy| M
/  !"#$%&'()*+ /
< ,-./01234567 <
> 89:;<=>?@ABC >
@ DEFGHIJKLMNO @
_ PQRSTUVWXYZ[ _
{ \]^_`abcdefg {
} hijklmnopqrs }
~ tuvwxyz{|}~  ~
M ",/^_[`jpqy| M

اطمینان حاصل کنید که این یک فونت با عرض ثابت (fixed width) است — این ماتریس باید به صورت یک مستطیل کامل نمایش داده شود.

همچنین سعی کنید از یک برنامه نمایش ساده استفاده کنید. برنامه Pbmtext این ماتریس را به شبکه‌ای از سلول‌ها با اندازه‌های کاملاً یکسان تقسیم می‌کند که هر کدام حاوی یک نویسه هستند؛ بنابراین مهم است که از هر برنامه‌ای برای نمایش آن استفاده می‌کنید، فاصله‌گذاری افقی و عمودی یکنواختی داشته باشد. برنامه‌های پیشرفته واژه‌پرداز گاهی اوقات نویسه‌ها را در هر دو جهت می‌کشند تا در ابعاد خاصی جا شوند، و این روش کار نخواهد کرد. گاهی برنامه نمایش فونت را مقیاس‌بندی می‌کند تا نویسه را بزرگ‌تر یا کوچک‌تر از اندازه طبیعی‌اش نشان دهد. این نیز اغلب کار نخواهد کرد زیرا گرد کردن ناشی از این مقیاس‌بندی سبب فاصله‌های ناهمگون میان نویسه‌ها می‌شود.

اگر ماتریس متن را نادرست نمایش دهید، نشانه معمول آن این است که وقتی سعی می‌کنید از فونت استفاده کنید، pbmtext با پیام خطایی مبنی بر اینکه تعداد سطرهای فونت بر ۱۱ بخش‌پذیر نیست یا نمی‌تواند نوار خالی اطراف مستطیل داخلی را پیدا کند شکست می‌خورد. گاهی اوقات نشانه این است که یکی از نویسه‌ها همراه با تکه‌ای از نویسه مجاور خود در ماتریس نمایش می‌یابد. به عنوان مثال، "l" ممکن است همراه با تکه کوچکی از "m" چسبیده به سمت راست آن نمایش داده شود.

از آن متن یک عکس از صفحه نمایش (screen grab) یا خروجی پنجره تهیه کنید، مثلاً با استفاده از xwd، xgrabsc یا screendump. نتیجه را به یک فایل pbm تبدیل کنید. در صورت نیاز، از pamcut استفاده کنید تا هر چیزی را که علاوه بر تصویر متن بالا ضبط کرده‌اید حذف کنید (یا به سادگی از یک ویرایشگر گرافیکی مانند Gimp استفاده نمایید). در نهایت، آن را از طریق pnmcrop پردازش کنید تا اطمینان حاصل شود که لبه‌ها دقیقاً مماس با متن هستند. pbmtext می‌تواند اندازه‌ها و فاصله‌ها را از روی آن محاسبه کند.

برخی فونت‌های تاریخی رایانه، نظیر آنچه در کامپیوتر اولیه IBM PC استفاده می‌شد، به شکلی که بتوان از صفحه عکس گرفت و به یک فایل فونت PBM تبدیل کرد، از Stewart C Russell" (1) در دسترس است. فونت‌هایی با گلیف‌های مختلف ارقام دوازده‌تایی (duodecimal) نیز در نشانی treisara.deviantart.com موجود است.

فونت‌های PBM را نمی‌توان با گزینه -wchar استفاده کرد.

در گذشته، متن‌های انگلیسی با اسکی ۷ بیتی کدگذاری می‌شدند. کدگذاری‌های ۸ بیتی و چندبایتی تنها برای زبان‌های غیرانگلیسی مورد نیاز بودند. امروزه شرایط تغییر کرده است. در هنگام نگارش این متن، ۹۰٪ تمامی صفحات وب با UTF-8 کدگذاری شده‌اند. در حالی که بسیاری از آن‌ها در عمل محدود به اسکی ۷ بیتی (که زیرمجموعه‌ای از UTF-8 است) هستند، متن انگلیسی با کدگذاری UTF-8 معمولاً از علامت‌های نقل قول به سبک "66 99" استفاده می‌کند که در اسکی وجود ندارند.

اگر متن ورودی شما UTF-8 است، باید از -wchar استفاده کنید. ممکن است لازم باشد تنظیمات لوکال (locale) را تنظیم نمایید. برنامه pbmtext کدپوینت‌ها را تا ۶۵۵۳۵ تشخیص می‌دهد. این برای اکثریت قاطع متون نوشته‌شده به زبان‌های مدرن کافی است.

در حالت پیش‌فرض نویسه‌های تک‌بایتی (یا "باریک")، pbmtext می‌تواند مجموعه‌های نویسه ۷ بیتی و ۸ بیتی را مدیریت کند. مثال‌ها شامل ASCII، خانواده ISO 8859، koi8-r/u و VISCII هستند. این بر عهده کاربر است که یک فایل BDF حاوی گلیف‌های لازم را با گزینه "-font" ارائه دهد. فایل فونت باید با کدگذاری صحیح باشد.

برنامه pbmtext کدگذاری فایل فونت را بازرسی نمی‌کند.

اگر متن از ورودی استاندارد (Standard Input) خوانده شود، طول هیچ خطی نباید بیشتر از ۴۹۹۹ نویسه باشد. در صورت طولانی‌تر بودن، برنامه با یک پیام خطای مناسب متوقف می‌شود.

اگر متن از ورودی استاندارد خوانده شود و حاوی نویسه تهی (null) باشد، نتایج غیرعادی خواهد بود. ممکن است خطوط بریده شوند و یک خط به عنوان چند خط در نظر گرفته شود. متون عادی شامل نویسه null نیستند، بنابراین این مشکل بزرگی نخواهد بود.

اگر خروجی درهم‌ریخته (garbled) دریافت می‌کنید، کدگذاری متن ورودی و کدگذاری فایل فونت را بررسی کنید. هنگام استفاده از -wchar، لوکال جاری را نیز بررسی نمایید.

برای تبدیل کدگذاری یک فایل متنی، از iconv یا luit استفاده کنید.

برای بررسی کدگذاری یک فایل BDF، سطر CHARSET_REGISTRY و سطر بعد از آن که باید CHARSET_ENCODING باشد را بررسی کنید:


    $ grep -A1 CHARSET_REGISTRY font-a.bdf
    CHARSET_REGISTRY "ISO8859"
    CHARSET_ENCODING "1"
    
    $ grep -A1 CHARSET_REGISTRY font-b.bdf
    CHARSET_REGISTRY "ISO10646"
    CHARSET_ENCODING "1"

مورد دوم یونیکد است. فایل‌های BDF با کدگذاری ISO 10646-1 معمولاً برای زبان‌های اروپای غربی کار می‌کنند، زیرا ISO 10646-1 استاندارد ISO 8859-1 (معروف به "Latin-1") را گسترش داده ولی در عین حال ۲۵۶ کدپوینت اول را حفظ می‌کند. خود ISO 8859-1 ابرمجموعه‌ای از ASCII است. دستور بالا را اجرا کنید و تأیید نمایید که گلیف‌های لازم وجود دارند.

مهم: برای متن ورودی، قاعده متفاوتی اعمال می‌شود. اگر متن ISO 8859-1 را به pbmtext -wchar که برای UTF-8 تنظیم شده بدهید، خروجی درهم‌ریخته خواهد بود. یونیکد چندین طرح کدگذاری ارائه می‌دهد و طرح‌های متفاوتی برای متن ورودی و فونت اعمال می‌شوند. تفاوت میان کدپوینت یونیکد و کدگذاری‌های گوناگون مانعی جدی و چالش‌برانگیز است؛ مراقب صفحات وبی باشید که این مفهوم را نادرست متوجه شده‌اند.

۷۵٪ از فایل‌های BDF موجود در مجموعه فونت ارائه‌شده در وب‌سایت Netpbm دارای کدگذاری ISO 10646-1 هستند. بسیاری از آن‌ها شامل علامت یورو، حروف یونانی و... هستند، اما در کدپوینت‌هایی قرار دارند که برای pbmtext تنها با گزینه -wchar قابل دسترسی هستند.

پیش از آنکه pbmtext دارای گزینه -wchar شود، افراد اغلب مجبور بودند از یک فایل BDF اصلی با کدگذاری ISO 10646-1، یک فایل BDF با کدگذاری ۸ بیتی تولید کنند.

برنامه‌های متعددی وجود دارند که تبدیل کدگذاری BDF را انجام می‌دهند. اگر سامانه پنجره X را نصب دارید، ابتدا به دنبال ucs2any بگردید. اگر ندارید، می‌توانید ucs2any.pl را از Unicode fonts and tools for X11" (1) دریافت کنید. این وب‌سایت اطلاعات مفید زیادی در مورد فونت‌ها دارد.

مبدل دیگر trbdf است که در بسته "trscripts" گنجانده شده و در برخی توزیع‌های گنو/لینوکس موجود است.

فایل‌های BDF با کدگذاری‌های ISO 8859-2، ISO 8859-7، koi8-r و غیره در ISO 8859 Alphabet Soup" (1) و صفحه خواهر آن The Cyrillic Charset Soup" (1) در دسترس هستند. اگرچه این اطلاعات قدیمی است، اما این صفحات دید کلی خوبی از مجموعه‌های نویسه ۸ بیتی ارائه می‌دهند.

برای تبدیل فایل‌های فونت OTF یا TTF به BDF، از otf2bdf اثر Mike Leisher یا otftobdf (بخشی از بسته libotf، که خود جزئی از پروژه m17n است) استفاده کنید.

pbmtextps(1), pamcut(1), pnmcrop(1), pamcomp(1), ppmchange(1), pnmrotate(1), ppmlabel(1), ppmdraw(1), pstopnm(1), pbm(1), Pango , Cairo

حق نشر (C) 1993 متعلق به Jef Poskanzer و George Phillips

این صفحه راهنما توسط ابزار 'makeman' از Netpbm و از منبع HTML تولید شده است. مستندات اصلی در نشانی زیر قرار دارند:

http://netpbm.sourceforge.net/doc/pbmtext.html
29 May 2020 netpbm documentation