Odatda shrift tahrirchida qoʻlda chiziladi: dizayner nuqtalar qoʻyadi va egri chiziqlarni tortadi. Ipakning aktsent shriftlari — Bannai, Ganch, Metro va Kalam — boshqacha qilingan. Har bir harfni butun shrift uchun bitta qoida asosida kichik Python dasturi quradi. Qoida bitta, shuning uchun qalinliklar, kesimlar va ritm barcha belgilarda — A dan Ҳ gacha va 0 dan № gacha — mos keladi.
Maqolada — har bir shrift qoidasi qanday tuzilgani, chizilgan harflardan shrift fayli qanday yigʻilgani va 0.1 versiyasining hozircha chegaralari qayerdaligi.

Avval motiv, keyin harflar
Har bir aktsent shrift harfdan emas, birinchi qarashdayoq taniladigan motivdan boshlanadi: bannai gʻishti, ganch oʻymachisining pichogʻi, Toshkent metrosining metall harflari, qalamning oʻzi (bu usullar tarixi haqida — «Bannai, ganch, qalam» maqolasida). Motiv qoidaga aylanadi, qoida esa unga koʻra istalgan harfni quradigan dasturga.
Motivlarni ishda solishtirish uchun TOSHKENT soʻzi Toshkent aeroporti fotosida haqiqiy yozuv oʻrniga qoʻyilgan.

Bannai: ilashib terilgan gʻishtlar
Harf avval kataklardan iborat rasm sifatida yoziladi — katak daftardagidek panjara va nuqtalardan iborat qatorlar. Bosh harf 10 qatorni egallaydi. Katak kvadrat, 70 birlik. Chiziq — ikki katak, harf ichidagi boʻshliq — kamida ikki katak: shunda harflar masofada bir-biriga qoʻshilib ketmaydi.
Keyin dastur gʻishtlarni teradi. Gʻisht — ikki katak, qoʻshni qatorlarda boʻgʻimlar yarim gʻishtga surilgan. Bu — ilashib terish: bir qatorning boʻgʻimlari qoʻshni qatornikiga toʻgʻri kelmaydi. Gʻishtlar orasida 9 birliklik boʻgʻim qoladi. K, N, Z ning qiyshiq chiziqlari tekis qiyshiq emas, terish zinapoyasi boʻylab ketadi. Ö nuqtalari, Ў yoychasi va ʻ belgisi bosh harfdan yuqoridagi qatorlarda yotadi, Қ Ҳ dumlari va Ş Ç sedillari — satrdan pastdagi qatorlarda.

Ganch: ustaning faskasi va yorugʻlik
Kontur toʻrtburchaklar va sakkizqirraliklardan quriladi. Vertikal chiziq — 168 birlik, gorizontal — 140: shunda ular bir xildek koʻrinadi. «Yumaloq» harflar — O, C, G, Q — sakkizqirraliklar.
Oxirgi oʻtish — ustaning faskasi. Dastur konturni aylanib chiqadi va toʻgʻri yoki undan oʻtkir (100° gacha) boʻlgan har bir tashqi burchakning uchini kesadi: ikkala tomon boʻylab 40 birlikdan chekinadi va nuqtalarni toʻgʻri chiziq bilan birlashtiradi. Toʻgʻri burchakda bu — 45° li kesim. Ichki burchaklar oʻtkir qoladi: u yerga pichoq kiradi. Sakkizqirraliklarning oʻtmas qirralariga tegilmaydi.
Hajm alohida, harf rasmidan hisoblanadi. Harf ichidagi har bir nuqta uchun eng yaqin chetgacha boʻlgan masofa topiladi. «Masofalar maydoni» hosil boʻladi: chetda nol, chiziq oʻrtasiga tomon kattaroq. Bu maydonni balandlik deb tasavvur qilsak, chiziq oʻrtasida togʻorcha va chetlarga ikki yonbagʻir chiqadi — V-kesim. Keyin dastur har bir yonbagʻir qayga qaraganini koʻradi. Yuqoridan chapdagi yorugʻlikka qaragan yonbagʻir yorishadi, qarama-qarshisi qorayadi. Yuqoridan pastga-oʻngga yumshoq soya qoʻshiladi: harf devordan boʻrtib turadi. Tosh devor uchun xuddi shu maydon teskari aylantiriladi va harf oʻyiqqa aylanadi.

Metro: ingichka bosh harflar va klinsimon seriflar
Namuna — 1984-yilgi stansiya platformasidagi «КОСМОНАВТЛАР» yozuvi (meʼmorlar Sergo Sutyagin va Sergey Sokolov). Chiziq ingichka: asosiy chiziqlarda 48 birlik, gorizontalarda 40. Harflar keng, balandlik 700 da taxminan 600 birlik.
Chiziq uchlarida — mayda klinsimon seriflar. Klinning asosi chiziqdan har bir tomonda 40 birlik keng, klinning balandligi 34 birlik, yuqorisi esa aynan chiziq chetlariga yigʻiladi. Soʻz katta oraliq bilan teriladi. Л — stansiyadagidek «uycha». Chizma oʻziniki, tamoyil boʻyicha; lotin yozuvi xuddi shu tizim bilan qurilgan.

Kalam: burchak ostida ushlangan keng qalam
Har bir harf uchun skelet — nuqtalardan iborat oʻq chizigʻi — beriladi. Qalam — satrga nisbatan 65° burchak ostida 150 birlik uzunlikdagi kesim. Dastur qalamni skeletning har bir nuqtasiga qoʻyadi, qoʻshni holatlarni toʻrtburchakka birlashtiradi va barcha toʻrtburchaklarni qoʻshadi. Qalinlikni hech kim belgilamaydi: u chiziq yoʻnalishidan oʻzi chiqadi. 65° burchakda gorizontal chiziqlar ogʻir, vertikallar yengil chiqadi.
Chiziq qalam boʻylab deyarli yursa, u ipday ingichka boʻlib qoladi. Shuning uchun qiyshiq chiziqlar qalam burchagidan kamida 9–10° chetga suriladi: shunda eng ingichka chiziq 25 birlikdan tor boʻlmaydi. Barcha belgilar — harflar, nuqtalar, raqamlar, tinish belgilari — bir xil qalam bilan yoziladi.

Har bir uslubdagi ʻ va ʼ belgilari
Belgilar qoʻshtirnoqlardan tayyor olinmaydi: har biri oʻz shriftining qoidasi boʻyicha chizilgan. Umumiyligi bitta: ʻ da massa pastda, ʼ da — yuqorida, shuning uchun siluetlar turli tomonga qaraydi va aralashib qolmaydi.
| Shrift | ʻ | ʼ |
|---|---|---|
| Bannai | terishdan «olti»: boshi pastda 2×2 katak, dumi yuqori-oʻngga | xuddi shu, 180° burilgan |
| Ganch | massasi pastdagi klin, ogʻish 10° | massasi yuqoridagi klin, ogʻish 23° |
| Metro | asosi pastda, uchi yuqori-oʻngga qaragan klin | asosi yuqorida, uchi past-chapga qaragan klin |
| Kalam | qalam harakati: yuqoridan past-chapka ip ingichka, pastda bosimli burilish | xuddi shu harakat, 180° burilgan |
Belgini O va G ga oʻlchov asosidagi kerning yaqinlashtiradi (u haqda quyida): ʻ alohida qoʻshtirnoq emas, harfning bir qismi boʻlib oʻqilishi kerak.
Rasmdan shriftgacha
Rasm — hali shrift emas. Shrift harflarni toʻgʻri oraliqlar bilan qoʻya olishi, oʻzbek qoidalarini bilishi va istalgan dasturda ochilishi kerak.
Yigʻish. Har bir uslub dasturi lugʻat beradi: belgi, kontur, kenglik, chap va oʻng boʻshliqlar. Yigʻish egri chiziqlarni TrueType formatiga oʻgiradi, konturlar yoʻnalishini tekislaydi va faylni FontBuilder orqali yozadi. Kichik harflar xuddi shu bosh harflarga olib boradi: shriftlar aktsent, bosh harf yozuvlari uchun. Klaviaturadan terilgan ' ‘ ’ ` belgilari ʻ va ʼ belgilariga olib boriladi.
Oʻlchov boʻyicha oraliqlar. Dastur harf juftligini oladi va ular orasidagi oq masofani satr-satr, butun bosh harf balandligi boʻylab oʻlchaydi; chuqur choʻkkilar kesib tashlanadi, chunki koʻz ularga boqmaydi. Etalon — xuddi shu shriftdagi HH, HO, OH va OO juftliklarining oʻrtachasi. Har bir juftlik etalonga, lekin faqat yarmigacha yetkaziladi: aks holda LT kabi ochiq juftliklar yopishib qoladi. Alohida harf juftligi uchun bunday tuzatish kerning deb ataladi. Lotin lotin bilan, kirill kirill bilan kerning qilinadi. Raqamlar kerning qilinmaydi — shunda son ustunlari tekis qoladi.
ʻ va ʼ belgilari — alohida. Belgi kichkina va yuqorida turadi, shuning uchun uni faqat belgi polosasida — bosh harf balandligining yuqori 38 % ida — oʻlchashadi (batafsil — «Belgi polosasi» maqolasida). ʻ O va G ga zich qoʻyiladi: HH oq masofasining 0,45 i. ʻ dan keyin — odatdagi HH oq masofasi. ʼ aynan oʻrtada turadi: ikkala tomondan 0,8 oq masofa.
Teginish taqiqi. Barcha tuzatishlardan keyin dastur juftlikning eng tor joyini butun balandlik boʻylab, satr ostidagi dumlar bilan birga tekshiradi. Bironta juftlik keglning 5 % idan yaqin kela olmaydi. Tuzatish ham cheklangan: istalgan tomonga keglning 15 % idan katta emas. 20 birlikdan kichik tuzatishlar yozilmaydi.
Oʻzbekcha almashtirish. Odamlar Oʻzbekiston soʻzini oddiy apostrof bilan teradi. Shrift uni fayl ichiga yozilgan qoida bilan oʻzi kerakli belgiga almashtiradi; OpenType formatida bunday qoida kontekstli almashtirish (calt) deb ataladi. O dan keyin harf oldida — ʻ. G dan keyin — ʻ, soʻz oxirida ham (BOGʻ), lekin soʻz oxiridagi ng birikmasida emas va soʻz oxiridagi s dan oldin emas (inglizcha egalik qoʻshimchasi 's). Qolgan hollarda ikki harf orasida — ʼ, MAʼNO dagidek. Mantiq ish shrifti Ipak Davlat dagidek; u haqda — «o' → oʻ» maqolasida.

Oxirida yigʻish sinovni chop etadi: belgilarning toʻliq toʻplami va nazorat soʻzlari — OʻZBEKISTON RESPUBLIKASI, ҚЎҚОН · ҒАЛЛАОРОЛ · ҲАЁТ, ÖZBEKISTON · TOŞKENT.

0.1 versiyasining chegaralari
- Faqat bosh harflar va bitta koʻrinish. Kichik harflar xuddi shu bosh harflar bilan teriladi. Qalinlik turlari hali yoʻq.
- Bannai — katta yozuvlar uchun. Kvadrat terish piksel shriftiga yaqin, taxtalar va mayda kegl uchun moʻljalanmagan.
- Kalam ning qalam burchagi — bizning tanlovimiz. 65° bitta soʻzdagi solishtirish bilan tanlangan, bu manbadan iqtibos emas.
- Oraliqlar avtomatik qoʻyilgan. Yozuv uchun ularni muayyan soʻzda koʻz bilan tekshirish foydali.
- Almashtirish tillarni ajratmaydi. Aktsent shriftlarda qoida istalgan matn uchun ishlaydi: inglizcha DON'T dagi apostrof ham ʼ ga aylanadi. Oʻzbekcha boʻlmagan matn uchun almashtirishni matn terish dasturida oʻchirish foydali.
Yakun
Toʻrtta aktsent shriftning har birida 94 belgi bor: Ö Ğ Ş Ç li lotin yozuvi, Ў Қ Ғ Ҳ li kirill, ʻ va ʼ belgilari, raqamlar va tinish belgilari. Barchasi har bir shrift uchun bitta qoida bilan qurilgan va butun kutubxona singari ochiq SIL OFL 1.1 litsenziyasi bilan tarqatiladi.
Manbalar
Tavsif Ipakning aktsent shriftlarini qurish kodi va vositalar hujjatlariga asoslangan: fontTools, skia-pathops, SciPy, HarfBuzz, OpenType spetsifikatsiyasi; Metro uchun namuna haqida — Wikipedia «Kosmonavtlar (Tashkent Metro)».
Havolalar:
- fontTools: FontBuilder. https://fonttools.readthedocs.io/en/latest/fontBuilder/fontBuilder.html
- skia-pathops — konturlar ustidagi mantiqiy amallar. https://github.com/fonttools/skia-pathops
- SciPy: distance_transform_edt — masofalar maydoni. https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.distance_transform_edt.html
- HarfBuzz — matn terish dvigateli. https://harfbuzz.github.io/
- OpenType: calt xususiyati (Contextual Alternates). https://learn.microsoft.com/en-us/typography/opentype/spec/features_ae#tag-calt
- OpenType: kern xususiyati (Kerning). https://learn.microsoft.com/en-us/typography/opentype/spec/features_ko#tag-kern
- Wikipedia: Kosmonavtlar (Tashkent Metro). https://en.wikipedia.org/wiki/Kosmonavtlar_(Tashkent_Metro)