HarfBuzz

HarfBuzz on avoimen lähdekoodin vapaa ohjelmistokehityskirjasto, jota käytetään tekstien muotoiluun (text-shaping engine).

HarfBuzz ottaa syötteenään merkkijonon, joka koostuu Unicode-koodatuista merkeistä, ja valitsee ja sijoittaa halutusta fontista glyyfit, joilla teksti tulostetaan soveltaen tekstin asettelusääntöjä ja fontin ominaisuuksia. HarfBuzz voi muotoilla tekstin merkittävimmillä maailman kirjoitusjärjestelmillä.[1]

HarfBuzzin tukemia tekstien muotoilumalleja ovat:[2]

  • intialainen (devanagari, bengali, gujarati, gurmukhi, kannada, malayalam, oriya, tamili ja telugu)
  • arabialainen, mukaan lukien N'Ko, syyria, sekä myös mongoli. Esimerkiksi arabialaisella kirjaimella on neljä eri muotoa riippuen siitä, esiintyykö merkki sanan alussa, keskellä, lopussa tai itsenäisenä merkkinä. Täten kirjain esitettävä eri glyyfillä riippuen tästä.
  • thailainen, mukaan lukien lao
  • khmeriläinen kirjaimisto
  • burmalainen kirjaimisto
  • tiibetiläinen kirjaimisto
  • hangul
  • heprealainen kirjaimisto
  • yleinen muotoilumalli USE
  • vakiomalli ei-kompleksisille kirjoitusjärjestelmille kuten latinalainen, kyrillinen, kreikkalainen, armenilainen, georgialainen, tifinagh ja muut. Näissä käytetään lähinnä ligatuureja (esim. f + f + i = ffi) ja painomerkkejä.[3]
  • emojit. Emojeihin on lisätty järjestelmä, jolla emojin hahmon ihonväriä voi muuttaa. Lisäksi monet lippu-emojit ja uudet emojit muodostetaan yhdistämällä vanhoja ns. ZWJ-merkin (zero-width joiner) avulla (esim. 🐈 + ZWJ + ⬛ = musta kissa).

HarfBuzzin kehitti alun perin Behdad Esfahbod osana FreeType-projektia. Erillisiä versioita ylläpidettiin Qt- ja Pango-kirjastoja (mm. GTK:n ja Firefoxin käyttämä) varten, nämä versiot yhdistettiin myöhemmin. Esfahbod palkittiin vuonna 2013 O'Reilly Open Source Award -palkinnolla kirjaston kehittämisestä.[4]

KDE:n (QT) ja GNOME (GTK) lisäksi kirjasto kuuluu mm. ChromeOSiin (Skia), PlayStation 4:aan, Androidiin, Javaan ja Flutteriin. Sitä käyttävät suoraan Chromium/Chrome, Firefox, LibreOffice, Scribus, Inkscape ja Adobe Photoshop (versiosta 23.0 v. 2021 lähtien[5]).

Lähteet

  1. https://harfbuzz.github.io/what-is-harfbuzz.html
  2. https://harfbuzz.github.io/what-does-harfbuzz-do.html
  3. https://harfbuzz.github.io/why-do-i-need-a-shaping-engine.html
  4. https://web.archive.org/web/20150618102153/http://www.oscon.com/oscon2013/public/schedule/detail/29956
  5. https://helpx.adobe.com/mena_en/photoshop/using/unified-text-engine.html