Otvorite japanski roman i prva stvar koju ćete primijetiti jest da tekst ide niz stupac, a ne preko retka, te da stupci napreduju od desnog ruba stranice prema lijevom. Čitatelju koji je odrastao uz to vodoravni tekst izgleda pomalo sterilno. Inženjerski problem je u tome što je PDF, kao i gotovo svaki digitalni tekstualni sustav, izgrađen oko vodoravne osnovne linije koja se širi slijeva nadesno, a tok sadržaja nema pojam "piši ovaj odlomak prema dolje." Dakle, kada aplikacija u Delphiju mora proizvesti certifikat, pjesmu, natpis ili pravni dokument u tradicionalnom formatu za tajvanskog, japanskog ili korejskog čitatelja, raspored se mora sastaviti ručno: jedan znak ispod drugog, jedan stupac lijevo od prethodnog.

Prekidač se nalazi u SetFont
Okomiti raspored nije svojstvo stranice ili dokumenta. To je svojstvo fonta kojim crtate, a uključujete ga petim argumentom metode SetFont:
Budući da se zastavica nalazi na fontu, prebacujete se između vodoravnog i okomitog pisanja jednostavno ponovnim pozivanjem SetFont s različitim zadnjim argumentom. Stranica može sadržavati vodoravni naslov na vrhu i okomiti tekst ispod njega, a HotPDF drži ta dva načina rada odvojena po objektu fonta, a ne po stranici. To je ono što omogućuje mješovite rasporede bez ikakvog posebnog rukovanja načinima rada s vaše strane: svaki TextOut nakon okomitog poziva SetFont slaže tekst okomito, svaki TextOut nakon vodoravnog ide duž osnovne linije, a zadnji SetFont pobjeđuje.
Četvrti argument je Windows skup znakova, isti onaj koji prima vodoravni poziv. Prosljeđivanje DEFAULT_CHARSET omogućuje sustavu da razrješava glifove po nizu znakova, što je ovdje važno jer okomiti dokument često miješa pisma. Sve ostalo o fontu i dalje vrijedi: mora biti instaliran na računalu na kojem se gradi dokument, a gotovo uvijek želite postaviti FontEmbedding := True kako bi datoteka prikazivala iste CJK glifove na čitaču koji nikada nije imao instaliran Arial Unicode MS.
Jedan poziv TextOut je jedan stupac
Kada je aktivan okomiti font, poziv TextOut više ne širi svoj niz znakova vodoravno od zadane točke. On postavlja prvi znak na vrh i vodi ostatak ravno dolje, napredujući za visinu linije fonta za svaki glif. X koji proslijedite definira stupac, a Y koji proslijedite definira gdje počinje vrh stupca. Da biste rasporedili stvarni tekst, stoga upućujete jedan TextOut po stupcu i pomičete X ulijevo između poziva, jer se CJK stupci čitaju zdesna nalijevo.
Pjesma se čita kako treba: najprije desni stupac od vrha do dna, a zatim oko skače ulijevo na sljedeći stupac. Ništa u samom nizu znakova ne kodira taj redoslijed. Vi ga kodirate u X koordinatama, smanjujući ih iz poziva u poziv. Okrenite smjer i stihovi će ispasti obrnuti, što je jedna najčešća pogreška pri prenošenju vodoravnog rasporeda u okomiti.
Koordinate: niz stranicu, zdesna nalijevo
Dvije osi su u igri i vuku u suprotnim smjerovima, pa vrijedi biti precizan. HotPDF mjeri od donjeg lijevog kuta stranice, s Y koji raste prema gore, u točkama. Okomiti stupac stoga počinje na visokom Y (blizu vrha stranice) i znakovi se spuštaju odatle jer HotPDF oduzima visinu linije za svaki od njih. Taj početni Y postavljate jednom po stupcu, a komponenta upravlja spuštanjem.
Vodoravnu os kontrolirate ručno. Svaki stupac nalazi se na vlastitom X, a sljedeći stupci prelaze na manje vrijednosti X jer je redoslijed čitanja zdesna nalijevo. Razuman ritam je odabrati X desnog stupca, a zatim oduzeti fiksni razmak stupaca za svaki sljedeći poziv, kao što se u primjeru radi pomoću ColGap. Razmak birate sami; ako je preuzak, susjedni stupci se dodiruju, a ako je preširok, blok izgleda prorijeđeno. Za tekst veličine 12 do 18 točaka, razmak malo veći od veličine fonta čita se ugodno.
Glifovi koji moraju promijeniti oblik
Nekoliko znakova nisu samo rotirane kopije svojih vodoravnih oblika; oni moraju biti zamijenjeni kada se tekst okrene okomito. Znak koji HotPDF rješava umjesto vas je japanski znak za produženi zvuk ー (U+30FC), crtica za dugi samoglasnik koja se pojavljuje u katakana riječima poput コーヒー. Nacrtan vodoravno, to je kratka crtica na osnovnoj liniji. Ako biste taj isti glif složili u stupac, on bi ležao vodoravno preko stupca, što je pogrešno: u okomitom japanskom taj znak postaje okomiti potez koji povezuje dva znaka između kojih se nalazi. HotPDF detektira U+30FC na okomitoj stazi i iscrtava ga kao okomitu crtu (U+007C) tako da oznaka dugog samoglasnika pokazuje u pravom smjeru bez ikakvog vašeg truda.
Ta jedna zamjena pokriva slučaj koji kvari većinu jednostavnih implementacija, ali vrijedi znati gdje se opći problem produbljuje. Potpuna okomita tipografija također rotira latinična slova i zapadnu interpunkciju za devedeset stupnjeva, pomiče male znakove kana te premješta zagrade i zareze u njihove okomite oblike, a potpuna implementacija toga živi u OpenType okomitim značajkama fonta, a ne u fiksnim pravilima. HotPDF može iskoristiti te značajke kada ih font sadrži: okomite alternative (vert i vrt2 GSUB značajke) i okomito razmicanje (vkrn i vpal GPOS pretraživanja) su opcionalni, a primjenjuju se duž okomite staze samo kada aktivni font to stvarno definira. Za mješoviti CJK tekst u jednom fontu široke pokrivenosti kao što je Arial Unicode MS, ugrađeno rukovanje znakom U+30FC plus ravnomjeran korak visine linije dovoljno je za stvaranje točnih, čitljivih stupaca; OpenType značajke postaju važne kada prijeđete na font dizajniran za fino okomito postavljanje i želite njegovo izvorno pozicioniranje znakova kana i razmak između glifova.
Miješanje pisama i orijentacija na jednoj stranici
Stvarni dokumenti rijetko su čisti. Okomita japanska stranica može sadržavati vodoravni engleski natpis, broj stranice na dnu ili blok korejskog teksta postavljen okomito pokraj japanskog. Budući da je okomita zastavica prekidač na razini fonta, to sastavljate izmjenjivanjem poziva SetFont, a ne upravljanjem stanjem na razini cijele stranice. Postavite vodoravni font, zapišite zaglavlje i broj stranice, postavite okomiti font, rasporedite stupce, ponovno postavite vodoravni font za podnožje. Svaka regija preuzima način rada posljednjeg poziva SetFont, pa je jedina potrebna disciplina pozvati ga kad god promijenite smjer.
Jedan detalj koji treba planirati kada se pisma miješaju: kineski, japanski i korejski ideogrami su gotovo kvadratni i slažu se u ravnemjernom koraku, ali latinični dijelovi ugrađeni u okomiti stupac nemaju taj ujednačen napredak. Ako trebate nekoliko latiničnih riječi unutar inače okomitog teksta, namjerno odlučite trebaju li biti rotirane da idu niz stupac ili postavljene uspravno kao kratki vodoravni umetak, te pozicionirajte taj fragment vlastitim TextOut-om umjesto da ga pustite da prati okomiti korak namijenjen ideogramima. Tretiranje mješovitog dijela kao zasebnog problema pozicioniranja održava ritam stupca netaknutim.
Od primjera do produkcije
Dijelovi su mali i slažu se predvidljivo. Uključite okomitu zastavicu u SetFont, pozovite jedan TextOut po stupcu s fiksne gornje Y koordinate i smanjujte X između poziva tako da se stupci čitaju zdesna nalijevo. Ugradite font tako da CJK glifovi prežive put do korisnikova čitača i dopustite komponenti da obradi znak U+30FC za dugi samoglasnik te, tamo gdje font to podržava, OpenType okomite značajke. Od tog trenutka, priprema rasporeda za produkciju uglavnom je aritmetika: izvođenje X položaja stupaca iz izmjerene širine bloka, dijeljenje dugih odlomaka u stupce koji odgovaraju visini stranice i rezerviranje prostora za vodoravna zaglavlja i brojeve stranica.
Za širu sliku o radu s tekstom i fontovima na kojoj se ovo temelji, uključujući konvencije vodoravnog TextOut-a i registraciju Unicode fontova, pogledajte višejezični Hello World primjer i TextOut uzorak. Prekidač za okomito pisanje u SetFont i pozivi TextOut prikazani ovdje dio su HotPDF komponente za Delphi i C++Builder.