Jinsi Uhariri wa Maandishi kwenye PDF Unavyofanya Kazi: Mitiririko ya Maudhui, Usimbaji wa Fonti, na Kwa Nini Unahariri Mstari Mmoja kwa Wakati
Ukurasa wa PDF hauna aya wala visanduku vya maandishi, una maagizo tu ya kuchora glifu kwa fonti fulani mahali fulani. Kuhariri mstari hufuta maagizo ya zamani na kuandika mapya mahali pale pale, na hilo ndilo huamua kinachoweza na kisichoweza kuhaririwa.

Ukurasa wa PDF hauna aya wala visanduku vya maandishi. Una orodha ya maagizo: mahali hapa, kwa fonti hii na ukubwa huu, chora glifu hizi. Kubadilisha maandishi kunamaanisha kufuta maagizo yanayochora mstari huo na kuandika mapya mahali pale pale, kwa fonti, ukubwa na rangi zile zile. Ndiyo sababu Hariri PDF huhariri mstari mmoja kwa wakati na haiwezi kuhamishia maandishi kiotomatiki kwenye mstari unaofuata: inatokana na jinsi maandishi yanavyohifadhiwa.
Mstari mmoja wa maandishi unaonekanaje ndani ya faili
Maudhui ya ukurasa yako kwenye mtiririko wa maudhui, programu ndogo iliyotengenezwa kwa waendeshaji. Waendeshaji wanne hufanya kazi nyingi ya maandishi: BT na ET hufunga kizuizi cha maandishi, Tf huchagua fonti na ukubwa, Td huhamia nafasi inayofuata, na Tj huchora mfuatano wa herufi. Kwa fonti ya kawaida, hali rahisi zaidi inaonekana hivi:
BT /F1 18 Tf 20 150 Td (Hello World) Tj ET
Maana yake: chagua fonti F1 kwa pointi 18, nenda x 20, y 150, na chora Hello World. PDF iliyochapishwa kutoka Chrome kwa kawaida huonekana tofauti: mabano hayana tena herufi bali namba za glifu za fonti, na Tm huweka nafasi mara moja. Hapa chini ni mstari Hello World from Georgia kutoka ukurasa uliohamishwa na Chrome, ambapo kila tarakimu nne za heksadesimali ni namba moja ya glifu:
BT /F4 24 Tf 1 0 0 -1 30 52 Tm <002b0048004f004f00520003003a00520055004f0047000300490055005200500003002a004800520055004a004c0044> Tj ET
002b ni H, 0048 ni e, 004f ni l, 0003 ni nafasi, 003a ni W, na kadhalika. Namba hizi zina maana ndani ya fonti hii moja tu; si Unicode. Unaponakili maandishi, kitazamaji hubadilisha namba kuwa herufi tena kwa jedwali la kutafutia lililohifadhiwa mahali pengine kwenye faili.
Mambo mawili yanafuata. Kwanza, hakuna kitu kwenye mtiririko wa maudhui kinachosema "hii ni aya": mstari mpya ni Td au Tm nyingine tu inayohamisha nafasi hadi mstari unaofuata, na aya ina mistari mingapi lazima ikisiwe kutoka nafasi. Pili, ili kuandika herufi mpya kwenye mstari unahitaji namba ya herufi hiyo katika fonti ile, na mara nyingi fonti ina glifu zilizotumika faili ilipoandikwa tu. Hilo ni matokeo ya upunguzaji wa fonti.
Unaweza kupanua mitiririko kwa qpdf:
qpdf --qdf --object-streams=disable in.pdf out.pdf
Fungua out.pdf kwenye kihariri cha maandishi na utafute Tj ili uone kila mfuatano wa herufi unaochorwa kwenye ukurasa. Kwa yaliyomo mengine ndani ya PDF, soma Kilichomo Ndani ya PDF: Objekti, Mitiririko na Jedwali la Rejeleo Mtambuka.
Jinsi kihariri kinavyojenga upya "mstari" kutoka glifu
Kihariri lazima kwanza kikusanye glifu huru kuwa mstari ambao mtumiaji anaweza kubofya. Glifu zenye fonti, ukubwa na rangi zile zile, ambazo pengo lake kutoka glifu iliyotangulia si zaidi ya ukubwa mmoja wa fonti, ni za kundi moja, yaani mkusanyiko wa glifu zinazofuatana; mstari mpya, fonti mpya au rangi mpya huvunja kundi. Maandishi yanayokwenda kulia-kwenda-kushoto, au wima, hayakusanywi na hayawezi kufunguliwa kwa uhariri.
Matokeo mawili yanaweza kuonekana moja kwa moja. Mstari unaochanganya fonti mbili, kama mstari wa Kichina wenye neno la Kiingereza ndani yake, hugawanywa kuwa makundi mawili yanayopakana ambayo hubofywa kando kando. Baada ya uhariri hutokea vivyo hivyo: kama maandishi mapya yanatumia fonti nyingine, mstari huwa makundi mawili, na kuhariri kundi moja huacha lingine bila kubadilika.
Kuhariri mstari: futa maandishi ya zamani, kisha andika mapya
Kufuta hutumia umbo la zana ya "Ficha kwa rangi nyeusi" linalohusu maandishi tu: glifu zilizo ndani ya eneo la mstari huondolewa kwenye mtiririko wa maudhui, picha na mistari huachwa, na hakuna kisanduku cha rangi kinachochorwa juu ya maandishi ya zamani, kwa hivyo kunakili na kutafuta hakuyapati tena. Hubadilisha maudhui ya ukurasa tu; kama maandishi yale yale yanaonekana pia kwenye kidokezo (annotation) au kwenye sifa za hati, haviathiriwi.
Kuandika huongeza agizo jipya la maandishi mwishoni mwa mtiririko wa maudhui wa ukurasa, kuanzia nafasi ya mstari wa msingi wa mstari wa awali na kutumia tena ukubwa na rangi yake. Baada ya kubadilisha mstari ulio juu kuwa Hello World 2, kinachoongezwa mwishoni mwa ukurasa ni:
q 1 0 0 1 22.5 148.92 cm 0 0 0 rg
/Span <</ActualText <feff00480065006c006c006f00200057006f0072006c006400200032>>> BDC
BT /F4 18 Tf 0 0 Td <002b0048004f004f00520003003a00520055004f00470003> Tj ET
BT /F9 18 Tf 102.18 0 Td (2) Tj ET
EMC
Q
BT ya kwanza hutumia fonti ya awali F4 na namba za glifu za awali, kwa hivyo Hello World hutumika tena kama ilivyokuwa. "2" haipo kwenye sehemu ndogo ya fonti ya awali, kwa hivyo BT ya pili huanzisha fonti mpya ya kawaida Helvetica (F9) kuichora. q na Q hufungia ndani ya kizuizi hiki badiliko lake la kuratibu na rangi yake; kihariri pia hufunika maudhui ya awali kwa jozi ya q/Q, ili hali iliyoachwa bila usawa mwishoni mwa ukurasa wa awali isiathiri maandishi mapya. Hivi ndivyo kundi moja lilivyoonekana; namba hutofautiana kulingana na faili.
Kuongeza mwishoni kuna matokeo matatu:
- Maandishi mapya huchorwa mwisho, juu ya kila kitu kingine kwenye ukurasa. Maandishi yaliyokuwa chini ya picha au kizuizi cha rangi huonekana juu yake baada ya uhariri.
- Zana inayotoa maandishi kwa mpangilio wa mtiririko wa maudhui (kama
pdftotext -raw) husoma mstari uliohaririwa mwisho kwenye ukurasa huo, wakati utoaji kwa nafasi (pdftotext -layout) hauonyeshi mabadiliko. Ukurasa unaonekana ule ule, lakini mpangilio wa usomaji umebadilika. - Kihariri huambatisha ActualText kwenye maandishi mapya, ambayo humwambia kitazamaji glifu zinawakilisha herufi halisi zipi. Glifu moja inaweza kulingana na herufi kadhaa, na kuitafuta kwa namba ya glifu peke yake wakati mwingine hurudisha herufi ya utangamano (kwa mfano kusoma 文 kama radikali ya Kangxi ⽂); ActualText huhakikisha unachonakili ndicho ulichoandika.
Fonti ipi huchora maandishi mapya
Kutumia tena fonti ya awali ndiyo njia salama zaidi, kwa sababu maumbo ya glifu, unene na upana hulingana na vilivyo kando yake. Kama inaweza kutumika tena inategemea kama kihariri kinaweza kujua herufi ina msimbo gani katika fonti hiyo:
- Fonti ya mchanganyiko kama ile ya juu (Type0, namba za glifu za baiti mbili, usimbaji wa Identity-H): herufi hutafutwa kwenye fonti ili kupata namba yake ya glifu, na hutumika ikipatikana. Isipopatikana, herufi haimo kwenye sehemu ndogo.
- Fonti rahisi ya baiti moja (TrueType, Type1) yenye usimbaji wa WinAnsi au MacRoman: ulinganifu wa herufi na baiti ni thabiti, na upana hutoka kwenye jedwali la upana lililo kwenye faili.
- Fonti yenye usimbaji uliobinafsishwa (Differences) au inayotegemea usimbaji uliojengewa ndani ya fonti: hakuna ulinganifu wa kuaminika, kwa hivyo kihariri hakikisii na huenda kwenye fonti mbadala, vinginevyo maandishi yangetoka yameharibika.
Herufi isipokuwepo kwenye fonti ya awali, fonti mbadala hutumika. Herufi za kawaida za Kilatini hutumia iliyo karibu zaidi kati ya Helvetica, Times na Courier, fonti za kawaida ambazo kila kitazamaji kinazo, kwa hivyo hakuna kinachohitaji kupachikwa. Kila kitu kingine, kama herufi za Kichina, kana, Hangul, Kithai, herufi za Kilatini zenye alama, Kisirili na Kigiriki, hutumia fonti huria ya Noto: seva huchukua herufi zilizo kwenye ombi na kukata glifu hizo tu kutoka fonti kamili kwa maktaba huria ya upunguzaji ya HarfBuzz, kwa kawaida KB chache, na kivinjari huzipachika kwenye faili lako. Umbo la kikanda la herufi ya Kichina hufuata lugha ya kiolesura: Kichina Rahisi, Kichina cha Jadi, Kijapani au Kikorea.
Glifu hupachikwa badala ya kuandika jina la fonti pekee kwa sababu fonti inayorejelewa kwa jina tu hubadilishwa na mbadala yoyote ambayo kila kitazamaji huchagua, na unene unaweza kutofautiana kati ya vitazamaji; ikishapachikwa, kila kitazamaji huonyesha maumbo yale yale.
Kwa nini mstari mmoja tu kwa wakati
Kihariri hakina injini ya mpangilio. Kila nafasi ya glifu ni thabiti kwenye faili; maandishi mapya hupangwa tu kuelekea kulia kutoka kwenye kianzio kwa upana wa fonti, bila mantiki ya "vunja mstari ukingoni", na hakuna kitu baada yake kinachohamishwa. Ukirefusha mstari, herufi za ziada huendelea kulia, na kinachovuka ukingo wa ukurasa hakionekani. Kuandika upya aya au kuongeza safu kwenye jedwali kunahitaji mpangilio mpya, na hiyo inamaanisha kurudi kwenye faili chanzo ambayo PDF ilitengenezwa kutoka kwake.
Upana pia ni upana wa nafasi ambayo fonti yenyewe hutenga kwa kila glifu, bila kerning na bila ubadilishaji wa glifu. Maandishi yasiyohitaji text shaping (kuchagua na kuweka glifu kulingana na muktadha), kama Kilatini, Kisirili, Kigiriki na herufi za Kichina, hupangwa vizuri. Alama za toni za Kithai zinahitaji uwekaji wa glifu ili zikae mahali sahihi, jambo ambalo kihariri hakifanyi, kwa hivyo zinaweza kuwa nje ya nafasi. Kiarabu kinahitaji maumbo ya glifu yanayotegemea muktadha na mpangilio wa kulia-kwenda-kushoto, Kiebrania kinahitaji mpangilio wa kulia-kwenda-kushoto, na maandishi ya lugha za India yanahitaji konsonanti na alama za vokali kuunganishwa kuwa glifu; yote hayo yanahitaji text shaping kamili, ambao kihariri hakifanyi kwa sasa, kwa hivyo kuyaandika hukataliwa badala ya kutoa herufi zisizo sahihi.
Mipaka mingine miwili inatokana na faili yenyewe. Maudhui ya ukurasa uliochanganuliwa ni picha moja isiyo na waendeshaji wa maandishi, kwa hivyo hakuna cha kufuta wala kubadilisha. Faili yenye sahihi ya kidijitali ikishahaririwa, maudhui ya awali ambayo sahihi iliyalinda yamebadilika, na sahihi haitumiki tena.
Jithibitishie mwenyewe
Unaweza kuona mabadiliko yaliyoelezwa hapo juu kwenye faili uliyopakua kwa amri tatu:
pdftotext -raw edited.pdf - # toa kwa mpangilio wa mtiririko wa maudhui: maandishi ya zamani yametoweka, mstari uliohaririwa unakuja mwisho
pdffonts edited.pdf # orodha ya fonti: zile za awali zilizotumika tena, na sehemu ndogo mpya ya fonti iliyopachikwa
qpdf --qdf --object-streams=disable edited.pdf edited.qdf # panua mtiririko wa maudhui; kizuizi kilichoongezwa cha BT ... ET kiko mwishoni
Endelea kusoma
- Kwa Nini Upunguzaji wa Fonti Huvunja Uhariri Lakini Si Usomaji: kwa nini fonti ya awali inaweza kukosa herufi, na nini hutokea inapokosa.
- Kilichomo Ndani ya PDF: Objekti, Mitiririko na Jedwali la Rejeleo Mtambuka: picha nzima ya mitiririko ya maudhui, objekti na muundo wa faili.
- Hariri Maandishi kwenye PDF Mtandaoni: Yarekebishe Bila Faili Chanzo: jinsi ya kuitumia, inafaa kwa nini, na wakati wa kurudi kwenye faili chanzo.