PDF Ñайл, койÑо изглежда пеÑÑекÑно на ваÑÐ¸Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑÑ, но Ñе ÑендеÑиÑа каÑо поÑедиÑа Ð¾Ñ Ð¿Ñазни квадÑаÑÑеÑа на ÑÑжд, е най-ÑеÑÑо ÑÑеÑаниÑÑ Ð´ÐµÑÐµÐºÑ Ñ ÑÑиÑÑовеÑе в ÑоÑÑÑеÑа за докÑменÑи, и Ñова поÑÑи никога не ознаÑава, Ñе ÑекÑÑÑÑ Ðµ гÑеÑен. СимволиÑе Ñа непокÑÑнаÑи, кодиÑанеÑо е наÑед, пÑоÑÑо глиÑовеÑе липÑваÑ. РазликаÑа Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÐµÑе маÑини Ñе ÑÑÑÑои в Ñова кои ÑÑиÑÑове Ñа инÑÑалиÑани в опеÑаÑионнаÑа ÑиÑÑема, а гÑаниÑаÑа Ð¼ÐµÐ¶Ð´Ñ Ð¿ÑеноÑим и ÑÑзвим Ñайл завиÑи Ð¾Ñ ÐµÐ´Ð½Ð¾ ÑеÑение, взеÑо пÑи запиÑванеÑо на ÑÑÑаниÑаÑа: дали ÑÑиÑÑÑÑ Ðµ вгÑаден в PDF докÑменÑа, или Ñе пÑедполага, Ñе е налиÑен на оÑÑÑеÑнаÑа ÑÑÑана.
Ðа да ÑазбеÑем заÑо Ñе ÑлÑÑва Ñова и заÑо дÑÑг Ñип гÑеÑка генеÑиÑа ÑекÑÑ, койÑо изглежда годен за ÑÑÑÑене, но пÑи копиÑане Ñе пÑевÑÑÑа в неÑазÑиÑаеми знаÑи, ÑÑÑбва да Ñазгледаме как PDF ÑÑÑ ÑанÑва ÑекÑÑ. Той не ÑÑÑ ÑанÑва изÑеÑениÑ. Той ÑÑÑ ÑанÑва кодове на глиÑове, пÑогÑама за ÑÑиÑÑове и ÑаблиÑи, коиÑо ги ÑвÑÑзваÑ, каÑо вÑеки пÑоблем Ñ ÑендеÑиÑанеÑо или извлиÑанеÑо Ñе коÑени в ÑазминаванеÑо Ð¼ÐµÐ¶Ð´Ñ Ñези ÑÑи елеменÑа. Следва кÑаÑÑк пÑеглед на Ñези Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð¸, базиÑан на ÑÑандаÑÑа ISO 32000, заедно Ñ Delphi извикваниÑÑа, коиÑо ги ÑпÑавлÑваÑ.
Символи, кодове и глиÑове Ñа ÑÑи ÑазлиÑни неÑа
ТеÑминологиÑÑа ÑеÑÑо обÑÑква Ñ Ð¾ÑаÑа, ÑÑй каÑо в ежедневнаÑа ÑÐµÑ ÑÑи ÑазлиÑни конÑепÑии Ñе ÑÐ»Ð¸Ð²Ð°Ñ Ð² дÑмаÑа âбÑкваâ? СимволÑÑ Ðµ абÑÑÑакÑна пиÑмена единиÑа, напÑÐ¸Ð¼ÐµÑ Ð¸Ð´ÐµÑÑа за главна бÑква Ð, иденÑиÑиÑиÑана в Unicode каÑо U+0041. ÐлиÑÑÑ Ðµ наÑеÑÑана ÑигÑÑа, конÑÑÑÑÑ Ð¾Ñ ÐºÑиви и линии, койÑо даден ÑÑиÑÑ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð° за изобÑазÑване на Ñози Ñимвол. ÐÐµÐ¶Ð´Ñ ÑÑÑ ÑÑои кодÑÑ: байÑÑÑ Ð¸Ð»Ð¸ байÑовеÑе в поÑока Ð¾Ñ ÑÑдÑÑжание, коиÑо ÐºÐ°Ð·Ð²Ð°Ñ Ð½Ð° визÑализаÑоÑа кой Ð³Ð»Ð¸Ñ Ð¾Ñ ÑекÑÑÐ¸Ñ ÑÑиÑÑ Ð´Ð° изÑиÑÑва.
PDF ÑабоÑи Ñ ÐºÐ¾Ð´Ð¾Ð²Ðµ. ÐогаÑо поÑокÑÑ Ð¾Ñ ÑÑдÑÑжание показва низ, Ñези байÑове Ñа индекÑи в акÑÐ¸Ð²Ð½Ð¸Ñ ÑÑиÑÑ, а не в Unicode. ÐодиÑанеÑо на ÑÑиÑÑа опÑеделÑ, Ñе код 65 ознаÑава âнаÑиÑÑвай глиÑа, запиÑан под Ð½Ð¾Ð¼ÐµÑ 65â? и ниÑо в Ñози пÑоÑÐµÑ Ð½Ðµ знае, Ñе за Ñовека ÑезÑлÑаÑÑÑ Ð¸Ð·Ð³Ð»ÐµÐ¶Ð´Ð° каÑо бÑкваÑа Ð. Ðменно Ñова позволÑва на PDF да Ñе ÑендеÑиÑа иденÑиÑно навÑÑкÑде, кÑдеÑо глиÑовеÑе Ñа налиÑни, и Ñова е пÑиÑинаÑа извлиÑанеÑо на ÑекÑÑ Ð´Ð° е оÑделен пÑоблем Ð¾Ñ Ð½ÐµÐ³Ð¾Ð²Ð¾Ñо показване: ÑиÑÑванеÑо изиÑква Ñамо ÑÑпоÑÑавка код-кÑм-глиÑ, докаÑо ÑеÑенеÑо изиÑква код-кÑм-Unicode, а Ñова Ñа две ÑазлиÑни ÑаблиÑи, коиÑо Ð¼Ð¾Ð³Ð°Ñ Ð´Ð° Ñе ÑÐ°Ð·Ð¼Ð¸Ð½Ð°Ð²Ð°Ñ Ð¸Ð»Ð¸ да липÑÐ²Ð°Ñ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо една Ð¾Ñ Ð´ÑÑга.
ТиповеÑе ÑÑиÑÑове, Ñ ÐºÐ¾Ð¸Ñо дейÑÑвиÑелно Ñе Ñе ÑблÑÑкаÑе
СÑандаÑÑÑÑ ISO 32000 деÑиниÑа нÑколко Ñипа ÑеÑниÑи на ÑÑиÑÑове, каÑо на пÑакÑика докÑменÑÑÑ, койÑо полÑÑаваÑе или генеÑиÑаÑе, използва един Ð¾Ñ ÑÑи Ñипа. РазбиÑанеÑо на Ñова кой Ñип ÑазглеждаÑе обÑÑнÑва повеÑеÑо неÑа, коиÑо Ð¼Ð¾Ð³Ð°Ñ Ð´Ð° Ñе обÑÑкаÑ.
Type 1 е оÑигиналниÑÑ ÐºÐ¾Ð½ÑÑÑен ÑоÑÐ¼Ð°Ñ PostScript на Adobe, изгÑаден Ð¾Ñ ÐºÑбиÑни кÑиви на Ðезие. ЧеÑиÑинадеÑеÑÑе ÑÑандаÑÑни ÑÑиÑÑа, коиÑо вÑеки ÑÑвмеÑÑим ÑеÑÐµÑ ÑÑÑбва да пÑедоÑÑави (ÑамилииÑе Helvetica, Times, Courier, Symbol и ZapfDingbats), Ñа Type 1 и ÑеÑникÑÑ Ð½Ð° ÑÑиÑÑа, койÑо поÑоÑва нÑкой Ð¾Ñ ÑÑÑ , може законно да изклÑÑи ÑамаÑа пÑогÑама за ÑÑиÑÑа. Това е единÑÑвениÑÑ ÑлÑÑай, в койÑо оÑÑавÑнеÑо на ÑÑиÑÑ Ð±ÐµÐ· вгÑаждане е безопаÑно по ÑпеÑиÑикаÑиÑ, а не по ÑлÑÑайноÑÑ. Ðа вÑеки дÑÑг Type 1 ÑÑиÑÑ Ð¿ÑогÑамаÑа ÑÑÑбва да бÑде вгÑадена, в пÑоÑивен ÑлÑÑай визÑализаÑоÑÑÑ Ñ Ð·Ð°Ð¼ÐµÑÑва Ñ Ð½ÐµÑо дÑÑго, обикновено меÑÑиÑно подобен, но визÑално ÑазлиÑен ÑÑиÑÑ.
TrueType използва квадÑаÑиÑни кÑиви и пÑоизлиза Ð¾Ñ ÑвеÑа на Apple и Microsoft. ÐовеÑеÑо ÑиÑÑемни ÑÑиÑÑове Ñа Ñакива и именно ÑÑÑ Ñе вгÑаждаÑе най-ÑеÑÑо. ÐбикновениÑÑ TrueType ÑÑиÑÑ Ð² PDF е огÑаниÑен до еднобайÑови кодове, Ñака Ñе един ÑакÑв ÑÑиÑÑ Ð¼Ð¾Ð¶Ðµ да адÑеÑиÑа най-много 256 глиÑа едновÑеменно. Това огÑаниÑение е ÑÑÑÑкÑÑÑнаÑа пÑиÑина, поÑади коÑÑо CJK (киÑайÑки, ÑпонÑки, коÑейÑки) и дÑÑги големи пиÑменоÑÑи не Ð¼Ð¾Ð³Ð°Ñ Ð´Ð° Ñе Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ Ñ Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½ ÑÑиÑÑ.
Type 0, ÑÑÑÑавниÑÑ Ð¸Ð»Ð¸ CID-keyed ÑÑиÑÑ, е ÑеÑениеÑо на Ñова огÑаниÑение. Той използва многобайÑови кодове и CMap за наÑоÑванеÑо им пÑез дÑÑеÑен CIDFont, ÑииÑо конÑÑÑи Ñа TrueType или CFF/Type 1. Това е единÑÑвениÑÑ Ñип ÑÑиÑÑ, койÑо може да ÑÑдÑÑжа Ñ Ð¸Ð»Ñди глиÑове, Ñака Ñе вÑеки PDF Ñайл, ÑÑдÑÑÐ¶Ð°Ñ ÐºÐ¸ÑайÑки, ÑпонÑки, коÑейÑки или богаÑа многоезиÑна ÑмеÑ, използва Type 0, незавиÑимо дали авÑоÑÑÑ Ðµ помиÑлил за Ñова. ÐомпÑомиÑÑÑ Ðµ ÑложноÑÑÑа: повеÑе движеÑи Ñе ÑаÑÑи, повеÑе Ð¾Ñ ÐºÐ¾Ð¸Ñо ÑÑÑбва да бÑÐ´Ð°Ñ Ð¿Ñавилни какÑо за ÑендеÑиÑанеÑо, Ñака е и за извлиÑанеÑо.

Ðдна подÑобноÑÑ Ð·Ð°Ð´ Ñова изобÑажение опÑÐµÐ´ÐµÐ»Ñ ÑазмеÑа на Ñайла. ШÑиÑÑÑÑ Ðµ библиоÑека Ð¾Ñ ÐºÐ¾Ð½ÑÑÑи, а не ÑаÑÑеÑни изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ ÑикÑиÑан ÑазмеÑ, Ñака Ñе една и ÑÑÑа вгÑадена пÑогÑама обÑлÑжва вÑеки ÑÐ°Ð·Ð¼ÐµÑ Ð½Ð° ÑÑÑаниÑаÑа. ÐаÑабиÑанеÑо е ÑÑанÑÑоÑмаÑиÑ, пÑиложена по вÑеме на изÑеÑÑаванеÑо, поÑади коеÑо заглавиеÑо и оÑновниÑÑ Ð¼Ñ ÑекÑÑ ÑподелÑÑ ÐµÐ´Ð¸Ð½ вгÑаден ÑÑиÑÑ, а ÑенаÑа на вгÑажданеÑо е за ÑÑиÑÑ, а не за ÑазмеÑ.
ÐгÑажданеÑо е ÑазликаÑа Ð¼ÐµÐ¶Ð´Ñ Ð¿ÑеноÑимоÑÑ Ð¸ ÑÑзвимоÑÑ
ÐгÑажданеÑо ознаÑава, Ñе пÑогÑамаÑа за ÑÑиÑÑа, ÑоеÑÑ Ð´ÐµÐ¹ÑÑвиÑелниÑе конÑÑÑни данни, Ñе запиÑÐ²Ð°Ñ Ð² PDF Ñайла каÑо поÑок. ЧеÑÐµÑ Ð½Ð° маÑина, коÑÑо никога не е имала ваÑÐ¸Ñ ÑÑиÑÑ, ÑеÑе Ñези конÑÑÑи диÑекÑно Ð¾Ñ Ñайла и изÑеÑÑава ÑоÑниÑе глиÑове. Ðко пÑопÑÑнеÑе вгÑажданеÑо, вие залагаÑе на Ñова, Ñе полÑÑаÑелÑÑ Ñазполага Ñ ÑÑиÑÑ ÑÑÑ ÑÑÑоÑо име; когаÑо Ñова не е Ñака, визÑализаÑоÑÑÑ Ñе вÑÑÑа кÑм замеÑÑÐ²Ð°Ñ ÑÑиÑÑ. Ðа ÑÑандаÑÑниÑе ÑеÑиÑинадеÑÐµÑ Ñова замеÑÑване е деÑиниÑано и безопаÑно. Ðа вÑиÑко оÑÑанало Ñо ваÑиÑа Ð¾Ñ Ð»ÐµÐºÐ¾ Ñазминаване Ñ ÑазлиÑен ÑÑиÑÑ Ð´Ð¾ пÑазни квадÑаÑÑеÑа, когаÑо никой замеÑÑÐ²Ð°Ñ ÑÑиÑÑ Ð½Ðµ покÑива ÑÑоÑвеÑнаÑа пиÑменоÑÑ.
ÐÑи HotPDF ÑпÑавлениеÑо Ñе извÑÑÑва ÑÑез едно-единÑÑвено ÑвойÑÑво, коеÑо Ñе задава пÑеди оÑваÑÑнеÑо на докÑменÑа. FontEmbedding Ñказва на библиоÑекаÑа да пакеÑиÑа ÑÑиÑÑовеÑе, Ñ ÐºÐ¾Ð¸Ñо ÑеÑÑае, вÑв Ñайла:
var
Pdf: THotPDF;
begin
Pdf := THotPDF.Create(nil);
try
Pdf.FileName := 'report.pdf';
Pdf.Compression := cmFlateDecode;
Pdf.FontEmbedding := True; // outlines travel inside the file
Pdf.BeginDoc;
Pdf.CurrentPage.SetFont('Calibri', [], 11);
Pdf.CurrentPage.TextOut(72, 760, 0, 'This renders the same on a machine without Calibri.');
Pdf.EndDoc;
finally
Pdf.Free;
end;
end;
ÐоÑледоваÑелноÑÑÑа не е козмеÑиÑна. BeginDoc е мÑÑÑоÑо, кÑдеÑо HotPDF ÑинализиÑа ÑÑÑÑкÑÑÑаÑа на докÑменÑа, Ñака Ñе FontEmbedding ÑÑÑбва да бÑде зададен на true пÑеди Ñова извикване. Ðко го пÑиÑвоиÑе Ñлед Ñова, нÑма да полÑÑиÑе ниÑо гÑеÑка, ниÑо пÑедÑпÑеждение, но ÑайлÑÑ Ð¿ÑоÑÑо Ñе Ñе запиÑе без ÑвоиÑе ÑÑиÑÑове. Това е най-лоÑиÑÑ Ð²Ð¸Ð´ гÑеÑка: ÑÑ Ð¿Ñеминава вÑиÑки ÑеÑÑове на маÑинаÑа на ÑазÑабоÑÑика, кÑдеÑо ÑÑиÑÑÑÑ Ðµ инÑÑалиÑан, и Ñе поÑвÑва едва пÑи клиенÑа, кÑдеÑо Ñой липÑва.
ÐгÑажданеÑо е ÑÑÑо Ñака ÑоÑкаÑа, в коÑÑо лиÑензиÑанеÑо Ñе ÑÑеÑа Ñ Ð¸Ð½Ð¶ÐµÐ½ÐµÑÑÑвоÑо. ÐÑогÑамаÑа за даден ÑÑиÑÑ ÑÑдÑÑжа Ñлагове, коиÑо опиÑÐ²Ð°Ñ Ð´Ð°Ð»Ð¸ Ñой може да бÑде вгÑаждан Ñвободно, Ñамо за пÑедваÑиÑелен пÑеглед или изобÑо не. СпазванеÑо на Ñези Ñлагове е ваÑа оÑговоÑноÑÑ, а не на визÑализаÑоÑа, и ÑакÑÑÑ, Ñе âÐ?пÑоÑабоÑилоâ? не ознаÑава, Ñе е ÑазÑеÑено.
ÐодмножеÑÑва (Subsetting): вгÑаждане Ñамо на използваниÑе глиÑове
ÐÑлноÑо вгÑаждане запиÑва ÑÑлаÑа пÑогÑама на ÑÑиÑÑа вÑв Ñайла. ÐолÑм CJK TrueType ÑÑиÑÑ Ð¼Ð¾Ð¶Ðµ да доÑÑигне нÑколко мегабайÑа, а вгÑажданеÑо Ð¼Ñ Ð¸Ð·ÑÑло Ñамо за показване на деÑеÑина Ñимвола е нееÑекÑивно и Ñе наÑÑÑпва в многоÑÑÑаниÑни докÑменÑи. ÐзползванеÑо на подмножеÑÑва ÑеÑава Ñози пÑоблем, каÑо запиÑва Ñамо глиÑовеÑе, кÑм коиÑо докÑменÑÑÑ Ñе оÑнаÑÑ, и Ñлед Ñова пÑеименÑва ÑÑиÑÑа Ñ ÑеÑÑбÑквен пÑеÑÐ¸ÐºÑ Ð¸ знак плÑÑ (напÑÐ¸Ð¼ÐµÑ ABCDEF+Calibri в ÑпиÑÑка Ñ ÑÑиÑÑове на вÑеки PDF Ñ Ð¿Ð¾Ð´Ð¼Ð½Ð¾Ð¶ÐµÑÑво), Ñака Ñе ÑеÑеÑÑÑ Ð½Ð¸ÐºÐ¾Ð³Ð° да не бÑÑка ÑаÑÑиÑно вгÑÐ°Ð´ÐµÐ½Ð¸Ñ ÑÑиÑÑ Ñ Ð¿Ñлен ÑиÑÑемен ÑÑиÑÑ ÑÑÑ ÑÑÑоÑо име.
Ðа повеÑеÑо генеÑиÑани докÑменÑи използванеÑо на подмножеÑÑва е най-Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑиÑÑ Ð¸Ð·Ð±Ð¾Ñ Ð¿Ð¾ подÑазбиÑане. Това поддÑÑжа ÑазмеÑа на Ñайла пÑопоÑÑионален на ÑÑдÑÑжаниеÑо, а не на оÑÐ¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ ÑÑиÑÑ, коеÑо е изклÑÑиÑелно важно за големи многоезиÑни ÑÑиÑÑове, коиÑо инаÑе Ð±Ð¸Ñ Ð° доминиÑали вÑв Ñайла. ÐдинÑÑвеноÑо пÑедÑпÑеждение е, Ñе подмножеÑÑвоÑо ÑÑдÑÑжа Ñамо Ñова, коеÑо е било използвано по вÑеме на ÑÑздаванеÑо. Ðко поÑÐ»ÐµÐ´Ð²Ð°Ñ Ð¿ÑоÑÐµÑ Ñе опиÑа да добави ÑекÑÑ Ñ Ð¿Ð¾Ð´Ð¼Ð½Ð¾Ð¶ÐµÑÑвен ÑÑиÑÑ Ð¿Ð¾-кÑÑно, глиÑовеÑе, коиÑо Ñа Ð¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¸, може да липÑÐ²Ð°Ñ Ð²Ñв Ñайла, коеÑо пÑедÑÑавлÑва ÑеÑиозно огÑаниÑение пÑи ÑаÑÑиÑно ÑедакÑиÑане на ÑÑжд PDF докÑменÑ.
Unicode ÑÑиÑÑове и пÑоблемÑÑ Ñ ÐºÐ²Ð°Ð´ÑаÑÑеÑаÑа пÑи CJK
ÐогаÑо ÑекÑÑÑÑ Ð½Ðµ е на лаÑиниÑа, вÑзможноÑÑиÑе на обикновениÑе ÑÑиÑÑове Ñе изÑеÑÐ¿Ð²Ð°Ñ Ð¸ ÑеÑениеÑо е изÑиÑно да ÑегиÑÑÑиÑаÑе ÑÑиÑÑ Ñ Unicode поддÑÑжка, коеÑо позволÑва на HotPDF да изгÑади Type 0 ÑÑиÑÑ Ð¾Ñ Ð½ÐµÐ³Ð¾. RegisterUnicodeTTF заÑежда TrueType Ñайл по пÑÑ; Ñлед Ñова ÑегиÑÑÑиÑаноÑо име може да Ñе използва в SetFont какÑо вÑÑко дÑÑго:
Pdf.FontEmbedding := True;
Pdf.RegisterUnicodeTTF('C:\Fonts\NotoSansCJKsc-Regular.ttf');
Pdf.BeginDoc;
Pdf.CurrentPage.SetFont('NotoSansCJKsc-Regular', [], 14);
Pdf.CurrentPage.TextOut(72, 720, 0, 'ä½ å¥½ï¼ä¸ç?ããã«ã¡ã?ìë
íì¸ì?);
Pdf.EndDoc;
Ðва ÑакÑоÑа Ñа ÑеÑаваÑи за ÑÑÐ¿ÐµÑ Ð° на Ñази опеÑаÑиÑ. ШÑиÑÑÑÑ ÑÑÑбва да покÑива ÑÑоÑвеÑниÑе пиÑменоÑÑи в низа: TrueType ÑÑиÑÑ, поддÑÑÐ¶Ð°Ñ Ñамо лаÑиниÑа, нÑма да генеÑиÑа киÑайÑки глиÑове Ñамо заÑоÑо ÑÑе поиÑкали Ñова, и ÑезÑлÑаÑÑÑ Ð¾Ñново Ñе бÑде пÑазни квадÑаÑÑеÑа (Ñози пÑÑ Ð·Ð°ÑоÑо глиÑÑÑ Ð½Ð°Ð¸ÑÑина липÑва в Ñози ÑÑиÑÑ). ÐÑвен Ñова вгÑажданеÑо ÑÑÑбва да оÑÑане вклÑÑено, ÑÑй каÑо Type 0 ÑÑиÑÑ, Ñглобен Ð¾Ñ ÑегиÑÑÑиÑан TTF, е неизползваем за ÑеÑеÑ, койÑо не може да намеÑи конÑÑÑиÑе. Ðа ÑмеÑено ÑÑдÑÑжание най-надеждниÑÑ Ð¸Ð·Ð±Ð¾Ñ Ðµ ÑÑиÑÑ Ñ ÑиÑоко покÑиÑие, каÑо напÑÐ¸Ð¼ÐµÑ ÑамилииÑе Noto и Arial Unicode MS, вгÑадени и подмножеÑÑвени.
ÐиÑменоÑÑиÑе Ñ Ð¿Ð¾Ñока на пиÑане Ð¾Ñ Ð´ÑÑно на лÑво и ÑложниÑе пиÑменоÑÑи добавÑÑ Ñлой за оÑоÑмÑне (shaping) над покÑиÑиеÑо. HotPDF пÑедлага меÑода RtLTextOut за аÑабÑки и ивÑиÑ, койÑо ÑпÑавлÑва пÑомÑнаÑа на поÑокаÑа, Ñака Ñе вие подаваÑе логиÑеÑÐºÐ¸Ñ Ñед на ÑимволиÑе, а библиоÑекаÑа ги подÑежда на екÑана. ÐÑавилноÑо изобÑазÑване на аÑабÑки език изиÑква покÑиÑие плÑÑ Ð¾ÑоÑмÑне плÑÑ Ð¿Ð¾Ñока (ÑÑи оÑделни неÑа), каÑо квадÑаÑÑе Ñам може да ознаÑава пÑоблем Ñ Ð²ÑÑко едно Ð¾Ñ ÑÑÑ
.
ТаблиÑаÑа ToUnicode: оÑкÑде идва вÑзможноÑÑÑа за копиÑане и поÑÑавÑне
ÐÑиÑко доÑÑк Ñе оÑнаÑÑÑе за изÑеÑÑаванеÑо. ÐзвлиÑанеÑо е огледален пÑоÑÐµÑ Ð¸ Ñе пÑÐ¾Ð²Ð°Ð»Ñ Ð¿Ð¾ Ñвои ÑобÑÑвени пÑиÑини. ÐизÑализаÑоÑÑÑ ÑендеÑиÑа ÑÑÑаниÑаÑа, каÑо използва ÑÑпоÑÑавкаÑа код-кÑм-Ð³Ð»Ð¸Ñ Ð½Ð° ÑÑиÑÑа, но когаÑо поÑÑебиÑелÑÑ Ð¸Ð·Ð±ÐµÑе ÑекÑÑ Ð¸ го копиÑа, визÑализаÑоÑÑÑ ÑÑÑбва да пÑевÑÑне ÑÑÑиÑе Ñези кодове обÑаÑно в Unicode. Това обÑаÑно ÑÑпоÑÑавÑне е ToUnicode CMap, койÑо пÑедÑÑавлÑва незадÑлжиÑелен поÑок, пÑикÑепен кÑм ÑÑиÑÑа.
ÐогаÑо ÑÑ Ðµ налиÑна и пÑавилна, копиÑаниÑÑ ÑекÑÑ Ð¸Ð·Ð»Ð¸Ð·Ð° Ñ Ð¿ÑавилниÑе Ñимволи. ÐогаÑо липÑва или е ÑгÑеÑена, или ÑÑиÑÑÑÑ Ðµ бил подмножеÑÑвен Ñ Ð¿ÐµÑÑонализиÑани кодове на глиÑове без запиÑана ToUnicode ÑаблиÑа, ÑÑÑаниÑаÑа изглежда пеÑÑекÑно, но клипбоÑдÑÑ Ñе пÑлни Ñ Ð½ÐµÑазÑеÑими Ñимволи: кодовеÑе на глиÑовеÑе Ñе ÑеÑÐ°Ñ Ñака, ÑÑÐºÐ°Ñ Ñа Unicode, коеÑо не е Ñака за пеÑÑонализиÑано кодиÑано подмножеÑÑво. Това е пÑиÑинаÑа, поÑади коÑÑо ÑканиÑан докÑÐ¼ÐµÐ½Ñ ÑÑÑ Ñлой за OCR Ñазпознаване на ÑекÑÑ Ð¼Ð¾Ð¶Ðµ да позволÑва ÑÑÑÑене, докаÑо оÑигинален ÑиÑÑов PDF, ÑÑздаден Ð¾Ñ Ð½ÐµÐ²Ð½Ð¸Ð¼Ð°Ñелен генеÑаÑоÑ, не позволÑва. РендеÑиÑанеÑо и извлиÑанеÑо Ñе оÑÐ½Ð¾Ð²Ð°Ð²Ð°Ñ Ð½Ð° ÑазлиÑни ÑаблиÑи, Ñака Ñе один Ñайл може да ÑдовлеÑвоÑÑва едноÑо изиÑкване, но да Ñе пÑÐ¾Ð²Ð°Ð»Ñ Ð¿Ñи дÑÑгоÑо. Ðко извлиÑанеÑо на ÑекÑÑ Ðµ важно за ваÑÐ¸Ñ Ð¸Ð·Ñ
оден ÑезÑлÑаÑ, ÑазглеждайÑе коÑекÑнаÑа ToUnicode ÑаблиÑа каÑо задÑлжиÑелно изиÑкване и Ñ Ð¿ÑовеÑеÑе ÑÑез копиÑане на ÑекÑÑ Ð¾Ñ Ð¼Ð¾ÑÑÑа, вмеÑÑо да вÑÑваÑе ÑлÑпо, Ñе ÑÑ Ð¿ÑиÑÑÑÑва.
Ðак да диагноÑÑиÑиÑаÑе бÑÑзо гÑеÑка Ñ ÑÑиÑÑовеÑе
ÐаÑинÑÑ, по койÑо Ñе пÑоÑвÑва пÑоблемÑÑ, ви подÑказва кÑде да ÑÑÑÑиÑе. ÐÑазниÑе квадÑаÑÑеÑа на дÑÑга маÑина поÑÑи винаги ознаÑÐ°Ð²Ð°Ñ Ð½ÐµÐ²Ð³Ñаден ÑÑиÑÑ, заÑова пÑÑво пÑовеÑеÑе вгÑажданеÑо, а Ñлед Ñова покÑиÑиеÑо на глиÑовеÑе. ÐвадÑаÑÑеÑаÑа, коиÑо Ñе поÑвÑÐ²Ð°Ñ Ð´Ð¾Ñи на ваÑаÑа ÑобÑÑвена маÑина, ÑоÑÐ°Ñ ÐºÑм покÑиÑиеÑо: ÑÑиÑÑÑÑ Ð½Ðµ ÑÑдÑÑжа Ñази пиÑменоÑÑ, незавиÑимо Ð¾Ñ Ð²Ð³ÑажданеÑо. ТекÑÑÑÑ, койÑо Ñе ÑендеÑиÑа пÑавилно, но Ñе копиÑа каÑо безÑмиÑлиÑа, е пÑоблем Ñ ToUnicode, а не Ñ ÑендеÑиÑанеÑо, и пÑомениÑе по ÑÑиÑÑовеÑе или вгÑажданеÑо нÑма да го ÑеÑаÑ, ÑÑй каÑо изÑеÑÑаванеÑо никога не е било ÑÑÑпено. Ðа да пÑовеÑиÑе гоÑов Ñайл, го оÑвоÑеÑе в Acrobat и пÑегледайÑе Document Properties, Fonts: коÑекÑниÑÑ Ð·Ð°Ð¿Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ð²Ð° Ñипа, Ñказва Embedded или Embedded Subset и дава имеÑо на кодиÑанеÑо. ШÑиÑÑ, койÑо ÑÑÑбва да бÑде вгÑаден, но не е, Ñе вижда Ñам оÑе пÑеди клиенÑÑÑ Ð´Ð° ви е ÑÑобÑил за Ñова.
ÐиÑо Ð¾Ñ Ñова не е необиÑайно, Ñлед каÑо ÑазбеÑеÑе ÑазликаÑа Ð¼ÐµÐ¶Ð´Ñ Ñимвол, код и глиÑ. ÐгÑаждайÑе ÑÑиÑÑовеÑе, Ñ ÐºÐ¾Ð¸Ñо ÑеÑÑаеÑе, използвайÑе подмножеÑÑва за големиÑе, избеÑеÑе Unicode ÑÑиÑÑ Ð¸ използвайÑе RegisterUnicodeTTF веднага Ñом ÑекÑÑÑÑ Ð¸Ð·Ð»ÐµÐ·Ðµ извÑн лаÑиниÑаÑа, и поддÑÑжайÑе пÑавилна ToUnicode ÑаблиÑа, ако Ñе пÑедполага извлиÑане на ÑекÑÑа. ÐÑигÑÑеÑе Ñези неÑа и квадÑаÑÑеÑаÑа Ñе изÑезнаÑ. Ðа по-подÑобно запознаване Ñ Ð¼ÐµÑ
анизмиÑе около Ñези пÑоÑеÑи, ÑÑаÑиÑÑа за анаÑомиÑÑа на минимален PDF показва кÑде Ñе намиÑа ÑеÑникÑÑ Ð½Ð° ÑÑиÑÑа в дÑÑвоÑо Ð¾Ñ Ð¾Ð±ÐµÐºÑи, а ÑÑÑÑкÑÑÑниÑÑ Ð¿Ñеглед на докÑменÑи обÑÑнÑва как ÑеÑÑÑÑиÑе Ñе ÑподелÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑÑÑаниÑиÑе.
ÐоказаниÑе ÑÑк Ð¸Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ Ð½Ð° SetFont, FontEmbedding и RegisterUnicodeTTF Ñа ÑаÑÑ Ð¾Ñ HotPDF Component за Delphi и C++Builder.